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

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

每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(4)backup-my.cnf —— 备份时用到的配置选项信息,也就是配置文件中关于mysqld的相关文件配置;
(5) xtrabackup_logfile —— 非文本文件是xtrabackup本身的日志文件;

4.4、准备一个完全备份

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件从而使得数据文件处于一致性状态。

innobakupex命令的–apply-log选项可用于实现上述功能。如下面的命令:

[root@stu18 ~] # innobackupex -apply-log /innobackup/2013-08-14_07-04-49/ #############如果执行正确,其最后输出的几行信息通常如下################ xtrabackup: starting shutdown with innodb_fast_shutdown = 1 130814 7:39:33 InnoDB: Starting shutdown... 130814 7:39:37 InnoDB: Shutdown completed; log sequence number 1606156 130814 07:39:37 innobackupex: completed OK!

4.5、模拟数据库崩溃实现完全恢复

(1)模拟崩溃

[root@stu18 ~] # service mysqld stop [root@stu18 ~] # cd /mydata/data/ [root@stu18 data] # rm -rf *

(2)从完全备份中恢复数据(谨记:在恢复数据之前千万不可初始化数据库和启动服务)
innobackupex命令的–copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息。

[root@stu18 ~] # innobackupex --copy-back /innobackup/2013-08-14_07-04-49/ #############如果执行正确,其最后输出的几行信息通常如下################ innobackupex: Starting to copy InnoDB log files innobackupex: in '/innobackup/2013-08-14_07-04-49' innobackupex: back to original InnoDB log directory '/mydata/data' innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile0' to '/mydata/data' innobackupex: Copying '/innobackup/2013-08-14_07-04-49/ib_logfile1' to '/mydata/data' innobackupex: Finished copying back files. 130814 07:58:22 innobackupex: completed OK!

(3)当数据恢复至数据目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如mysql,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。