数据量在G
级别的可以使用mysqldump
来迁移,T
级别的不建议使用,测试验证6.9G
的文件通过mysqldump
方式gz
后699M,耗时27
分钟,压缩率在10
倍,30
分钟处理7G
数据,换算下来一分钟处理238M
数据,结论就是如此。恢复的时候速度很快,6.9G
的数据恢复具体时间没看,大概不到5
分钟时间。以上计算有问题后续更新
查看大表
select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='test'
order by data_length desc, index_length desc;
忽略大表压缩
很多大表都是日志表这种特殊处理
-B
带上生成的脚本会操作库信息,库不存在会创建,方便在命令行使用
不带-B
不会操作库信息,方便在工具中使用,建议手动创建数据库
mysqldump -uroot -p'1234567890' -B test
--ignore-table=test.table1
--ignore-table=test.table2
--ignore-table=test.table3
--ignore-table=test.table4|gzip
>/data/test$(date +%Y-%m-%d-%H-%M-%S).sql.gz &
备份单个表
不能加-B
加了就不是单个表了
mysqldump -uroot -p'12345643' test table|gzip >/data/table$(date +%Y-%m-%d-%H-%M-%S).sql.gz
迁移拷贝
scp
备份后的sql.gz
文件
scp -P 22 ./test.sql.gz appuser@10.232343.191.56:/data
登录主机
ssh -p 22 root@10.232343.191.56
解压
zcat
保留原文件
gunzip
不保留原文件
两种方式都可以
zcat /data/test.sql.gz >/data/test.sql
gunzip /data/test.sql.gz
恢复
备份的时候用-B
,也可以不手动建数据库,保险起见都建了
#建库
CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
#恢复
mysql -uroot -p'1234567890' </data/test.sql