mysql数据分库分表,迁移,表字段复制,分区(整理中)

 数据迁移

一、导出

命令行下具体用法如下: 

mysqldump -h host -u uname -p pwd dbname > dump.sql #导出整个数据库结构和数据
mysqldump -h host -u uname -p pwd -d dbname > dump.sql #导出整个数据库结构(不包含数据)
mysqldump -h host -u uname -p pwd dbname tbname > dump.sql #导出单个表结构和数据
mysqldump -h host -u uname -p pwd -d dbname tbname > dump.sql #导出单个表结构(不包含数据)

二、导入

mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)
mysql -uroot -p123456 < runoob.sql

mysql(分布式,分库分表,sql)

自动分库:比较复杂

1,分库依据:体现在库名上

2,初始化:获取一份数据库sql文件,
mysqldump -h host -u uname -p pwd -d dbname > dump.sql

3,sql文件关键变量抽取

4,替换sql文件中的变量,正则匹配

5,执行sql文件

自动分表:相对简单

1,分表依据:体现在表名上

2,自动判断存在性

3,自动创建表:建表sql
mysqldump -h host -u uname -p pwd -d dbname tbname > dump.sql

4,自动获取表

 表复制

#复制表结构及数据到新表(不包含主键、索引、分区等)
create table A_1 select * from A 

#只复制表结构到新表1
create table A_1 select * from A where 1=2;

#只复制表结构到新表2
create table A_1 like A;
#这种方式的复制可以复制旧表的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性。但是不包含触发器、外键等

#复制表数据到新表(A_1必须存在)
insert into A_1 select * from A;#全部字段
insert into A_1 (col1,col2,...) select col1,col2,... from A;#指定字段

#完整复制
show create table A;#将旧表的创建命令列出
#我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表

字段复制

1 不同表复制

update B set extra = A.extra from A join B on (A.id = B.id);
update B inner join A on A.id = B.id set B.content = A.content[,A.extra = B.extra];
update B set B.sms = (select A.sms from A where A.id = B.id)

2 同表复制

update B set col1 = col2;

分区

参考:https://zhuanlan.zhihu.com/p/373202129

 

 

 

posted @ 2020-07-04 10:28  小匡程序员  阅读(228)  评论(0编辑  收藏  举报