基于innobakcupex跨实例不完全恢复步骤

MySQL在基于热备的基础上,可以实现对原有实例的完全或不完全恢复。而很多时候,原有实例部署了DRBD或者MHA等,在这种情况下,基于原有实例进行恢复会影响原有的故障现场及架构,可以通过跨实例恢复来恢复丢失或异常数据。同时跨实例恢复也可以实现基于整个实例进行实例级别数据库迁移。下文演示了基于跨实例的不完全恢复。

1、主要步骤a、准备新实例b、基于热备做prepare及recoverc、复制完整的备份到新实例(如果跨主机应复制到新主机)d、启动新实例e、根据需要恢复binlog到故障点f、验证结果

2、演示跨实例不完全恢复

— 说明:以下演示在同一主机上完成– 源实例端口及数据文件路径:3306 /data/mysqldata– 新实例端口及数据文件路径:3307 /data/recoverdataa、准备新实例– 创建新实例数据路径SHELL# mkdir -p /data/recoverdata– 初始化新实例SHELL# cp /etc/my.cnf /etc/my3307.cnfSHELL# vi /etc/my3307.cnf–修改相关配置选项,路径,端口号,,servier_id等等SHELL# /app/soft/mysql/scripts/mysql_install_db –user=mysql –ldata=/data/recoverdata –basedir=/app/soft/mysql \&; –defaults-file=/etc/my3307.cnfSHELL# /app/soft/mysql/bin/mysqld_safe –defaults-file=/etc/my3307.cnf &SHELL# /app/soft/mysql/bin/mysqladmin -u root password ‘***’ -P3307 -S /tmp/mysql3307.sockSHELL# /app/soft/mysql/bin/mysqladmin -uroot -p*** -P3307 -S /tmp/mysql3307.sock shutdownb、基于热备做prepare及recover–当前的备份情况为:–20150128 全备,20150129 增备,20150130 增备,20150131 增备,备份时间为每天3点–需要恢复到2015-01-31 23:53:54–备份路径如下:SHELL# pwd/backup/hotbak/physical/20150128SHELL# lsbase_20150128 inc_20150129 inc_20150130 inc_20150131–prepare 全备SHELL# innobackupex –apply-log –redo-only –user=root –password=*** –port=3307 \–socket=/tmp/mysql3307.sock –defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128–prepare 增备SHELL# innobackupex –apply-log –redo-only –user=root –password=*** –port=3307 \–socket=/tmp/mysql3307.sock –defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \–incremental-dir=/backup/hotbak/physical/20150128/inc_20150129–prepare 增备SHELL# innobackupex –apply-log –redo-only –user=root –password=*** –port=3307 \–socket=/tmp/mysql3307.sock –defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \–incremental-dir=/backup/hotbak/physical/20150128/inc_20150130–prepare 增备,注意,最后一次不需要使用–redo-only选项,未提交的事务将回滚SHELL# innobackupex –apply-log –user=root –password=*** –port=3307 –socket=/tmp/mysql3307.sock \–defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \–incremental-dir=/backup/hotbak/physical/20150128/inc_20150131c、复制完整的备份到新实例SHELL# cp -R /backup/hotbak/physical/20150128/base_20150128/* /data/recoverdataSHELL# chown mysql:mysql -R /data/recoverdata# Author : Leshami# Blog : d、启动新实例– 启动新实例并验证完整性SHELL# /app/soft/mysql/bin/mysqld_safe –defaults-file=/etc/my3307.cnf &e、根据需要恢复binlog到故障点–假定我们需要恢复到2015-01-31 23:53:54,则需要提取binlog来进行不完全恢复。–获取热备最后的binlog日志及位置SHELL# more /backup/hotbak/physical/20150128/inc_20150131/xtrabackup_binlog_info mysql-bin.000036100130712SHELL# mysqlbinlog /data/mysqldata/mysql-bin.000036 –start-position=100130712 –stop-datetime="2015-01-31 23:53:54" \&; |mysql -uroot -p*** -P3307 -S /tmp/mysql3307.sockf、验证结果mysql> select * from test.heartbeat;+—————————-+———–+——————+———–+———————–+———————+| ts| server_id | file| position | relay_master_log_file | exec_master_log_pos |+—————————-+———–+——————+———–+———————–+———————+| 2015-01-31T23:53:53.001690 |11 | mysql-bin.000459 | 703735593 | NULL|NULL |+—————————-+———–+——————+———–+———————–+———————+

让情谊在笑声中升腾,当朋友遇到了难题的时候,

基于innobakcupex跨实例不完全恢复步骤

相关文章:

你感兴趣的文章:

标签云: