千家信息网

如何用Percona Xtrabackup恢复MySQL从库

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何用Percona Xtrabackup恢复MySQL从库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。同样的,还是一台
千家信息网最后更新 2026年11月01日如何用Percona Xtrabackup恢复MySQL从库

这篇文章将为大家详细讲解有关如何用Percona Xtrabackup恢复MySQL从库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

同样的,还是一台服务器上两个实例。3306端口的实例为主库,3307端口的实例为从库。

现在,手动将备库里的数据清空掉,模拟备库被破坏。

drop database test2;

采用Percona Xtrabackup来恢复从库。

Percona Xtrabackup是一款开源的备份工具,这个工具可以在Percona的官方网站上下载来进行安装。

恢复步骤如下:

1、对主库的数据进行完全备份,注意,这个是热备,不需要停库的

innobackupex --default-file=/usr/local/mysql/my.cnf --user=root --password=root --socket=/usr/local/mysql/mysql.sock /tmp/backup

如果屏幕输出的结尾有打印"completed Ok!",则表示命令执行成功。

2、将主库生成的日志附加到备份中

innobackupex --apply-log /tmp/backup/2016-08-30_09-56-23

同步骤1一样,如果屏幕输出的结尾有completed OK的字输出,表示命令执行成功。

3、查看主库生成的备份信息

[root@single1 2016-08-30_09-56-23]# ls -l
total 131108
-rw-r-----. 1 root root 418 Aug 30 09:56 backup-my.cnf
-rw-r-----. 1 root root 12582912 Aug 30 09:56 ibdata1
-rw-r-----. 1 root root 50331648 Aug 30 09:56 ib_logfile0
-rw-r-----. 1 root root 50331648 Aug 30 09:56 ib_logfile1
-rw-r-----. 1 root root 12582912 Aug 30 09:56 ibtmp1
drwxr-x---. 2 root root 4096 Aug 30 09:56 lxm
drwxr-x---. 2 root root 4096 Aug 30 09:56 mysql
drwxr-x---. 2 root root 4096 Aug 30 09:56 performance_schema
drwxr-x---. 2 root root 4096 Aug 30 09:56 test
-rw-r-----. 1 root root 21 Aug 30 09:56 xtrabackup_binlog_info
-rw-r--r--. 1 root root 21 Aug 30 09:56 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root 113 Aug 30 09:56 xtrabackup_checkpoints
-rw-r-----. 1 root root 504 Aug 30 09:56 xtrabackup_info
-rw-r-----. 1 root root 8388608 Aug 30 09:56 xtrabackup_logfile

注:

a) xtrabackup_binlog_info文件记录mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。

b) xtrabackup_binlog_pos_innodb 文件记录二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。

(xtrabackup_binlog_info文件和xtrabackup_binlog_pos_innodb 文件的区别:对于纯 InnoDB 操作,备份出来的数据中上述两个文件的内容是一致的。对于 InnoDB 和非事务存储引擎混合操作,xtrabackup_binlog_info 中所示的 position 应该会比 xtrabackup_pos_innodb 所示的数值大。此时应以 xtrabackup_binlog_info 为准;而后者和 apply-log 时 InnoDB recovery log 中显示的内容是一致的,只针对 InnoDB 这部分数据。)

c) xtrabackup_checkpoints文件用来描述备份类型,备份状态,LSN范围信息。

d) xtrabackup_info文件记录备份时所用xtrabackup命令的一些信息

e) backup-my.cnf文件为备份命令用到的配置选项信息;

4、恢复从库

停止从库服务,将从库中原有的数据清空。

service mysql3307 stop;

cd /usr/local/mysql3307

mv data data.bak

然后开始恢复:

innobackupex --defaults-file=/usr/local/mysql3307/my.cnf --copy-back --rsync /tmp/backup/2016-08-30_09-56-23

如果屏幕输出的结尾有打印"completed Ok!",则表示命令执行成功。

5、修改从库数据文件的属性

从库恢复成功后,可以在/usr/local/mysql3307目录下,看到一个data:

记得将这个恢复过来的data目录属组全部改回mysql,否则启动从库时会如下错误:

chown -R mysql:mysql data

6、查看备份中binary log的信息

[root@single1 2016-08-30_09-56-23]# cat xtrabackup_binlog_info
mysql-bin.000003 329

7、起从库,重新同步:

service mysql3307 start

mysql -S /usr/local/mysql3307/mysql.sock -P 3307 -uroot -p
mysql> change master to master_host='localhost', master_user='root', master_password='root', master_log_file='mysql-bin.000003', master_log_pos=329, master_port=3306;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

#master_log_file参数和 master_log_pos参数的设置就是根据第6步得来的

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 329
Relay_Log_File: single1-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 329
Relay_Log_Space: 458
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 9c534d95-6849-11e6-bae6-000c295ae8a5
Master_Info_File: /usr/local/mysql3307/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)

ERROR:
No query specified

8、检验主库和从库是否一致。

关于如何用Percona Xtrabackup恢复MySQL从库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 备份 数据 信息 命令 日志 成功 二进制 内容 输出 一致 实例 屏幕 服务 两个 参数 工具 文章 更多 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 与互联网科技公司 广西互联网科技公司 深圳互联网科技怎么样 开启互联网科技时代小说 银川新华互联网科技职业技术培训学校图片 贵州叶脉互联网科技有限公司所属行业 来此购互联网科技有限公司 互联网科技研发水平 中国互联网十大科技股排名 天津腾达互联网科技有限公司 迪庆互联网科技招生 洛阳共同富裕互联网科技有限公司 城市宝互联网科技有限公司 广州百诚互联网科技有限公司官网 江苏互联网科技小贷 互联网硬科技公司 互联网科技机房 上海万顺科技互联网有限公司招聘 兰石爱特工业互联网科技分公司 互联网佳科技有限公司 科技金融是不是互联网金融 互联网 科技创业 狮子座互联网科技有限公司 互联网科技论坛 互联网 新科技 天速互联网络科技有限公司 知域互联网科技有限公司大骗子 本届互联网大会上的黑科技 萌小萌互联网科技河南有限公司
0