利用 innobackupex 备份恢复 做mysql 主从

主库大了以后,mysqldump备份初始化 数据库从库就显得力不从心。工作:做主从

特别是在 “天下武功,唯快不破” 的年代,速度成了成功的重要前提。

用工具,用处心得。用处剑锋。。。

1: 官方资料:https://www.percona.com/doc/percona-xtrabackup/2.4/innobackupex/innobackupex_option_reference.html

2:安装:推荐yum,新手必备。一刀到位。

3:压缩备份原数据库,根据实际机器core数选择压缩线程。

nohup  sh backup.sh  &
#!/bin/sh
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --host=127.0.0.1 --port=3306 --user=root --password='x'x'x' --parallel=8   --compress-threads=8  --compress  /dbdata/backup

4:对比主库运行参数和配置参数差异

pt-config-diff h=127.0.0.1,P=3306,u=root,p='xxx' /etc/my.cnf

5:查看成功的备份,.qp表示是压缩备份,查看备份情况 xtrabackup_info 文件。

[root@db_pre_191 2019-05-10_18-46-10]# ls
backup-my.cnf.qp  ib_buffer_pool.qp  mysql    performance_schema  sys      undo001.qp  undo003.qp                 xtrabackup_checkpoints  xtrabackup_logfile.qp
call_center_db    ibdata1.qp         percona  report              tdata  undo002.qp  xtrabackup_binlog_info.qp  xtrabackup_info.qp
uuid = 53f84dd0-7314-11e9-a17b-56318c4b9444
name = 
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --host=127.0.0.1 --port=3306 --user=root --password=... --parallel=8 --compress-threads=8 --compress /dbdata/backup
tool_version = 2.4.9
ibbackup_version = 2.4.9
server_version = 5.7.23-log
start_time = 2019-05-10 18:46:10
end_time = 2019-05-10 19:11:15
lock_time = 0
binlog_pos = filename 'data.000029', position '1141561', GTID of the last change '66dd0de4-e808-11e8-9977-56318c4b9444:1-5239179,
e60ad69e-3f20-11e9-ac66-3a9923d2ce01:1-71698'
innodb_from_lsn = 0
innodb_to_lsn = 1738871043736
partial = N
incremental = N
format = file
compact = N
compressed = compressed
encrypted = N

6:NC 传数据,我也是刚学的。Lenny是我遇到最好的老师。虽然我也坑了不少同学。

 7:目标主机解压:

rpmkeys --import https://www.percona.com/downloads/RPM-GPG-KEY-percona
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm 
yum install qpress -y
xtrabackup --decompress --target-dir=/data/

 8:全库恢复 ,关闭数据库并删除数据文件

 9:准备(prepare)一个完全备份: --apply-log 执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared

innobackupex --apply-log /data/2019-05-10_18-46-10

10:执行恢复:

innobackupex  --defaults-file=/etc/my.cnf --copy-back --rsync 2019-05-10_18-46-10

11:更改 data/ 目录权限并启动mysql

#chown -R mysql.mysql data/
#systemctl start mysqld

12:增量备份1, 以全备为基准。

innobackupex --defaults-file=/etc/my.cnf --user=xxx --password=xxx --socket=/tmp/mysql.sock --incremental /data/inc --incremental-basedir=/data/2019-05-10_18-46-10 --parallel=2
cat xtrabackup_checkpoints 
backup_type = incremental    ##说明是增量备份
from_lsn = 1738871043736
to_lsn = 1738871053736
last_lsn =1738881053736
compact
= 0
recover_binlog_info
= 0

13:增量备份2,以增量1为准

innobackupex --defaults-file=/etc/my.cnf --user=xxx--password=xxx --socket=/tmp/mysql.sock --incremental /data/inc --incremental-basedir=/data/inc/2019-05-10_19-46-10/ --parallel=2

14: 增量备份恢复:下面是别人测的示例

  1. 恢复完全备份
  2. 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)
  3. 对整体的完全备份进行恢复,回滚未提交的数据

    

##准备一个全备##
[root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 2628145
InnoDB: Number of pools: 1
01:33:52 completed OK!

 ##将增量1应用到完全备份##
[root@centos6 pxb]# innobackupex --apply-log --redo-only /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-09-40/

 ##将增量2应用到完全备份,注意不加 --redo-only 参数了##
[root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/ --incremental-dir=/data/pxb/inc/2017-04-28_01-27-46/

 ##把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据##
[root@centos6 pxb]# innobackupex --apply-log /data/pxb/2017-04-24_02-46-11/
xtrabackup: Log applied to lsn 2628145
xtrabackup: The intended lsn is 2643563

猜你喜欢

转载自www.cnblogs.com/monkeybron/p/10848521.html