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

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

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

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

-- 说明:以下演示在同一主机上完成
-- 源实例端口及数据文件路径:3306 /data/mysqldata
-- 新实例端口及数据文件路径:3307 /data/recoverdata
a、准备新实例
-- 创建新实例数据路径
SHELL# mkdir -p /data/recoverdata     

-- 初始化新实例
SHELL# cp /etc/my.cnf /etc/my3307.cnf
SHELL# 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.cnf
 
SHELL# /app/soft/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &
SHELL# /app/soft/mysql/bin/mysqladmin -u root password '***' -P3307 -S /tmp/mysql3307.sock
SHELL# /app/soft/mysql/bin/mysqladmin -uroot -p*** -P3307 -S /tmp/mysql3307.sock shutdown

b、基于热备做prepare及recover
--当前的备份情况为:
--20150128 全备,20150129 增备,20150130 增备,20150131 增备,备份时间为每天3点
--需要恢复到2015-01-31 23:53:54
--备份路径如下:
SHELL# pwd
/backup/hotbak/physical/20150128
SHELL# ls
base_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_20150131

c、复制完整的备份到新实例
SHELL# cp -R /backup/hotbak/physical/20150128/base_20150128/* /data/recoverdata
SHELL# chown mysql:mysql -R /data/recoverdata

# Author : Leshami
# Blog   : http://blog.csdn.net/leshami

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.000036        100130712
SHELL# mysqlbinlog /data/mysqldata/mysql-bin.000036 --start-position=100130712 --stop-datetime="2015-01-31 23:53:54" \   
> |mysql -uroot -p*** -P3307 -S /tmp/mysql3307.sock

f、验证结果
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 |
+----------------------------+-----------+------------------+-----------+-----------------------+---------------------+

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维小白

启动zabbix 报错

启动zabbix,提示报错 [root@hf-01 ~]# systemctl start zabbix-server Job for zabbix-serve...

32011
来自专栏bboysoul

体验一键php/java环境安装工具oneinstack

这个东西其实我很早之前就听说了,但是一直没有去尝试使用,我一直使用的是lnmp一键安装包,但是lnmp一键安装包是安装java环境的,oneinstack更强大...

2462
来自专栏java闲聊

SpringBoot 1.5.10.RELEASE学习SpringMvc+SpringData+thymeleaf

1905
来自专栏DevOps时代的专栏

Jenkins 在 Tomcat 中的部署及代码静态检查工具集成

在安装了 Jenkins 运行所需的依赖(主要是 JDK)之后,可以通过如下步骤简单快速地部署 Jenkins:

1472
来自专栏程序猿DD

【译】Spring 官方教程:使用 Restdocs 创建 API 文档

原文:Creating API Documentation with Restdocs 译者:HoldDie 校对:Jitianyu 本指南将引导你了解在 Sp...

1.8K5
来自专栏安恒信息

安全漏洞公告

1 McAfee Email Gateway存在未明任意命令执行漏洞 ? 2 Zend Framework代理请求处理IP地址伪造漏洞 ? 3Cisco ASA...

27310
来自专栏Core Net

Ios8之后, 定位的delegate不能触发的问题

2938
来自专栏程序猿DD

SpringBoot快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么...

2008
来自专栏Vue ssr

mod_rewrite: Could not set permissions on rewrite_log_lock

[crit] (22)Invalid argument: mod_rewrite: Could not set permissions on rewrite_...

1993
来自专栏蓝天

Zookeeper C++编程实战之主备切换

默认zookeeper日志输出到stderr, 可以调用zoo_set_log_stream(FILE*)设置输出到文件中 还可以调用zoo_...

983

扫码关注云+社区

领取腾讯云代金券