第一段:复制表里面的一条记录并插入表里面
① insert into article(title,keywords,desc,contents) select title,keywords,desc,contents from article where article_id = 100;
第二段:复制表里的多条数据/记录,并插入到表里面
第三段:在创建表时,就插入另一张表里面的某些数据
① create table user AS select * from member where id 10
MySQL 复制表
如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的.
本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下:
使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等.
复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构.
如果你想复制表的内容,你就可以使用 INSERT INTO ... SELECT 语句来实现.
-from 树懒学堂 - 一站式数据知识平台
如果从库上表 t 数据与主库不一致,导致复制错误,整个库的数据量很大,重做从库很慢,如何单独恢复这张表的数据?通常认为是不能修复单表数据的,因为涉及到各表状态不一致的问题.下面就列举备份单表恢复到从库会面临的问题以及解决办法:
场景 1
如果复制报错后,没有使用跳过错误、复制过滤等方法修复主从复制.主库数据一直在更新,从库数据停滞在报错状态(假设 GTID 为 aaaa:1-100).
修复步骤:
在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000);
恢复到从库;
启动复制.
这里的问题是复制起始位点是 aaaa:101,从库上表 t 的数据状态是领先其他表的.aaaa:101-10000 这些事务中只要有修改表 t 数据的事务,就会导致复制报错 ,比如主键冲突、记录不存在(而 aaaa:101 这个之前复制报错的事务必定是修改表 t 的事务)
解决办法:启动复制时跳过 aaaa:101-10000 这些事务中修改表 t 的事务.
正确的修复步骤:
① 在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000),恢复到从库;
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
如果复制报错后,使用跳过错误、复制过滤等办法修复了主从复制.主、从库数据一直在更新.
在主库上备份表 t (假设备份快照 GTID为 aaaa:1-10000);
恢复表 t 到从库;
正确修复步骤:
对表 t 加读锁;
在主库上备份表 t;
停止从库复制,恢复表 t;
启动复制;
解锁表 t.
如果是大表,这里可以用可传输表空间方式备份、恢复表,减少锁表时间.
这个确实简单
mysql支持这种复制
语法:
insert
into
select
from
+tb+;
注意修改为你自己的表名和字段名
你要全字段复制,就把除了自增字段之外的所有字段都列出来