利用 xtrabackup 进行线上 MySQL 数据库主从恢复
2017-06-02 17:52
387 查看
xtrabackup介绍
xtrabackup命令参数解释
恢复MySQL主从
热备份数据库
从热备恢复数据
参考
同 xtrabackup 的
对xtrabackup的–prepare参数的封装
做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;
通过ssh将备份数据存储到进程服务器上;
备 份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定–stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。
在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数–tmpdir指定目录来解决这个问题。
当有指定–remote-host or –stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir
强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。
该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
同xtrabackup的–throttle参数
对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;
对 xtrabackup参数–tables的封装,也支持ibbackup。备份包含的库表,例如:–include=”test.“,意思是要备份 test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写 成:–include=”test.test1|test.test2”。也可以使用通配符,如:–include=”test.test“。
列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份;
解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;
备 份从库, 加上–slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE=”, MASTER_LOG_POS=0
指定mysql.sock所在位置,以便备份进程登录mysql.
第一步:备份线上数据库
如果没有指定备份目录,
第二步:
这一步持续时间会很长,1小时左右。
第三步:scp备份目录到从机
第四步:启动从机的数据库
第五步:建立主从关系
以上,不需要停止线上业务,成功恢复了主从关系。
MySQL · 物理备份 · Percona XtraBackup 备份原理
mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
mysql innobackupex xtrabackup 大数据量 备份 还原
xtrabackup命令参数解释
恢复MySQL主从
热备份数据库
从热备恢复数据
参考
xtrabackup介绍
Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。xtrabackup命令参数解释
--defaults-file
同 xtrabackup 的
--defaults-file参数
--apply-log
对xtrabackup的–prepare参数的封装
--copy-back
做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;
--remote-host=HOSTNAME
通过ssh将备份数据存储到进程服务器上;
--stream=[tar]
备 份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定–stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。
在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数–tmpdir指定目录来解决这个问题。
--tmpdir=DIRECTORY
当有指定–remote-host or –stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir
--redo-only
强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。
--use-memory=#
该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
--throttle=IOS
同xtrabackup的–throttle参数
--sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ;
--compress[=LEVEL]
对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;
--include=REGEXP
对 xtrabackup参数–tables的封装,也支持ibbackup。备份包含的库表,例如:–include=”test.“,意思是要备份 test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写 成:–include=”test.test1|test.test2”。也可以使用通配符,如:–include=”test.test“。
--databases=LIST
列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份;
--uncompress
解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;
--slave-info
备 份从库, 加上–slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE=”, MASTER_LOG_POS=0
--socket=SOCKET
指定mysql.sock所在位置,以便备份进程登录mysql.
恢复MySQL主从
数据库主从因为各种原因断了,而且没办法恢复。线上数据库也不能停止。这时候想恢复主从关系就可以借助热备份工具xtrabackup。
第一步:备份线上数据库
[root@ddz_db5 data]# innobackupex --slave-info /data/
如果没有指定备份目录,
xtrabackup会在当前目录自动生成以当前时间命名的备份文件夹。100G数据用时在半小时左右。
[root@ddz_db5 data]# ll drwxr-x--- 5 root root 4096 May 27 10:16 2017-05-27_09-57-24 drwxr-xr-x 5 mysql mysql 4096 May 27 16:40 mysql
第二步:
xtrabackup --apply-log把已提交的事务合并到
ibdata文件
这一步持续时间会很长,1小时左右。
[root@ddz_db5 data] xtrabackup --apply-log 2017-05-27_09-57-24 170527 11:10:23 innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!". innobackupex version 2.4.7 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 6f7a799) xtrabackup: cd to /data/2017-05-27_10-36-22/ xtrabackup: This target seems to be not prepared yet. InnoDB: Number of pools: 1 xtrabackup: xtrabackup_logfile detected: size=822542336, start_lsn=(16153415803165) xtrabackup: using the following InnoDB configuration for recovery: xtrabackup: innodb_data_home_dir = . xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend ... InnoDB: Highest supported file format is Barracuda. InnoDB: Log scan progressed past the checkpoint lsn 16153415803165 InnoDB: Doing recovery: scanned up to log sequence number 16153421045760 (0%) InnoDB: Doing recovery: scanned up to log sequence number 16153426288640 (1%) InnoDB: Doing recovery: scanned up to log sequence number 16153431531520 (2%) InnoDB: Doing recovery: scanned up to log sequence number 16153436774400 (2%) InnoDB: Doing recovery: scanned up to log sequence number 16153442017280 (3%) InnoDB: Doing recovery: scanned up to log sequence number 16153447260160 (4%) InnoDB: Doing recovery: scanned up to log sequence number 16153452503040 (5%) InnoDB: Doing recovery: scanned up to log sequence number 16153457745920 (5%) InnoDB: Doing recovery: scanned up to log sequence number 16153462988800 (6%) ... InnoDB: Doing recovery: scanned up to log sequence number 16153788440576 (50%) InnoDB: Doing recovery: scanned up to log sequence number 16153793683456 (51%) InnoDB: Starting an apply batch of log records to the database 4000 ... InnoDB: Progress in percent: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed InnoDB: Doing recovery: scanned up to log sequence number 16153798926336 (52%) InnoDB: Doing recovery: scanned up to log sequence number 16153804169216 (53%)
第三步:scp备份目录到从机
[root@ddz_db5 data] scp -r 2017-05-27_09-57-24 slave:/data/
第四步:启动从机的数据库
[root@slave data] mv 2017-05-27_09-57-24 mysql [root@slave data] service mysqld start
第五步:建立主从关系
[root@slave data] cat mysql/xtrabackup_binlog_info mysqlbin-log.011197 1057212057 [root@slave data] mysql ... mysql> change master to master_host='master',master_user='slave',master_password='slave',master_log_file='mysqlbin-log.011197',master_log_pos=1057212057; mysql> start slave;
以上,不需要停止线上业务,成功恢复了主从关系。
热备份数据库
TODO从热备恢复数据
TODO参考
https://www.percona.comMySQL · 物理备份 · Percona XtraBackup 备份原理
mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
mysql innobackupex xtrabackup 大数据量 备份 还原
相关文章推荐
- 8、利用Mysql的二进制日志文件,进行数据库数据的恢复
- mysql怎样利用对所有数据库进行备份的备份文件只恢复某一个数据库
- 利用XtraBackup和MySQL主从复制来转移Zabbix数据库
- mysql跳过 drop语句利用xtrabackup进行恢复
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
- j2EE 利用Quartz任务调度 进行 mysql 数据库自动备份
- 利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具)
- 数据库崩溃,利用备份和日志进行灾难恢复
- 利用percona-toolkit 工具来检测mysql 主从数据库同步以及实现同步
- MySQL 採用Xtrabackup对数据库进行全库备份
- MySQL利用mysqldump进行数据库备份及还原
- 使用xtrabackup对mariadb数据库进行增量备份以及恢复 推荐
- mysql 利用二进制日志来进行恢复数据的实例操作
- MySQL之Xtrabackup备份恢复数据库-简介
- MySQL 备份和恢复策略四:使用主从复制机制(replication)实现数据库实时备份
- 使用xtrabackup对MySQL进行备份和恢复
- 利用Xtrabackup工具备份及恢复MYSQL
- 使用xtrabackup对MySQL进行备份和恢复
- 数据库_MySQL_利用 存储过程 对 数据表 中的 每一条记录 进行业务处理
- 数据库崩溃,利用备份和日志进行灾难恢复