Linux下实现MySQL数据备份和恢复的命令使用全攻略

2019-01-04 20:03:28刘景俊

2)基于所有的备份将未提交的事务进行“回滚”。

完全备份“准备”

[root@stu18 ~] # innobackupex --apply-log --redo-only/innobackup/2013-08-14_08-14-12/

第一次增量备份“准备”也就是说将第一次增量备份合并到了完全备份中

[root@stu18 ~] # innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/--incremental-dir=/innobackup/2013-08-14_08-29-05/

第二次增量备份“准备”也就是说将第二次增量备份也合并到了完全备份中

[root@stu18 ~] # innobackupex --apply-log--redo-only /innobackup/2013-08-14_08-14-12/ --incremental-dir=/innobackup/2013-08-14_09-08-39/

其中 –redo-only是只将已提交的事务同步到数据文件中,未提交的事务日志不在进行回滚了。

(4)恢复数据(基于innobackupex基于完全+增量)

[root@stu18 ~] # innobackupex --copy-back/innobackup/2013-08-14_08-14-12/

(5)更改属组属主

[root@stu18 ~] # cd /mydata/data/ [root@stu18 data] # chown -R mysql:mysql *

(6)启动查看

[root@stu18 ~] # mysql -uroot -pmypas mysql> select * from coc; +----+---------+----------+ | ID | ClassID | CourseID | +----+---------+----------+ | 1| 1 | 2 | | 2| 1 | 5 | | 3| 2 | 2 | | 4| 2 | 6 | | 5| 3 | 1 | | 6| 3 | 7 | | 7| 4 | 5 | | 8| 4 | 2 | | 9| 5 | 1 | | 10 | 5 | 9 | | 11 | 6 | 3 | | 12 | 6 | 4 | | 13 | 7 | 4 | | 14 | 7 | 3 | +----+---------+----------+ 14 rows in set (0.00 sec)

结果显示数据正确完整,但是第三次的改动信息未生效。

(7)基于二进制日志实现数据恢复
查看最后一次增量备份二进制日志所在的位置:

[root@stu18 data] # cd /innobackup/2013-08-14_09-08-39/ [root@stu18 2013-08-14_09-08-39] # cat xtrabackup_binlog_info mysql-bin.000001 780

查看二进制日志文件将未备份数据的二进制日志导出

[root@stu18 innobackup] # mysqlbinlog mysql-bin.000001 # at 780 #130814 9:20:19 server id 1 end_log_pos 851 Query thread_id=7 exec_time=0 error_code=0 SET TIMESTAMP=1376443219/*!*/; BEGIN /*!*/; # at 851 #130814 9:20:19 server id 1 end_log_pos 944 Query thread_id=7 exec_time=0 error_code=0 SET TIMESTAMP=1376443219/*!*/; delete from coc where id=14 /*!*/; # at 944 #130814 9:20:19 server id 1 end_log_pos 1016 Query thread_id=7 exec_time=0 error_code=0 SET TIMESTAMP=1376443219/*!*/; COMMIT /*!*/; DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/; [root@stu18 innobackup] # mysqlbinlog --start-position=780 mysql-bin.000001 > ./all.sql #导出数据

恢复数据

[root@stu18 ~] # mysql -uroot –pmypass mysql> SET SQL_LOG_BIN=0; #关闭二进制日志 mysql> source /innobackup/all.sql #导入数据 mysql> SET SQL_LOG_BIN=1; #开启二进制日志 mysql> select * from coc; #查看数据,恢复完成 +----+---------+----------+ | ID | ClassID | CourseID | +----+---------+----------+ | 1 | 1 | 2 | | 2 | 1 | 5 | | 3 | 2 | 2 | | 4 | 2 | 6 | | 5 | 3 | 1 | | 6 | 3 | 7 | | 7 | 4 | 5 | | 8 | 4 | 2 | | 9 | 5 | 1 | | 10 | 5 | 9 | | 11 | 6 | 3 | | 12 | 6 | 4 | | 13 | 7 | 4 | +----+---------+----------+ 13 rows in set (0.00 sec)