一、 归档流程:
1. 导出需要的数据
2. 创建临时表table_tmp
3. 导入数据到临时表
4. 修改原始表名为table_bak
5. 修改临时表为原始表名
二、归档方式对比
1. select into outfile load data infile 导入导出的方式
SELECT * FROM student where create_time > '2018-10-01 00:00:00' into /data/mysql/student.sql
source /data/mysql/student.sql
2. INSERT INTO 直接读取写入的方式
INSERT INTO student_tmp SELECT * FROM student where create_time > '2019-02-16 00:00:00'
3. mysql官方自带逻辑备份工具mysqldump
mysqldump --user=root --host=127.0.0.1 -p --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 test student --where="create_time > '2019-04-16 00:00:00'" > /data/mysql/student.sql
4. Percona归档工具pt-archiver
pt-archiver
--source h=127.0.0.1, u=root, p=123456, D=test, t=student
--dest h=127.0.0.1, P=3306,u=root,p=123456, D=test,t=student_tmp
--progress 50000
--where "create_time > '2019-02-16 00:00:00'"
--bulk-insert
--statistics
--charset=UTF8
--limit=50000
--txn-size 1000
--no-delete
参数说明:
--source #源数据库信息
--dest #目标数据库信息
--progress 5000 #每处理5000行输出一次处理信息
--where #设置操作条件
--bulk-insert #批量插入数据到dest主机
--statistics #输出执行过程及最后的操作统计
--charset=UTF8 #指定字符集为UTF8
--limit=50000 #每次取1000行数据用pt-archive处理
--txn-size 1000 #设置1000行为一个事务提交一次
--no-delete #不删除源数据
--purge #删除source数据库的相关匹配记录