[mysql]-centos7 根据mysql binlog恢复RDS

本文介绍在Centos7系统下根据mysql binlog恢复RDS的方法。先阐述数据恢复思路,强调备份重要性,接着说明不同重要程度表的恢复步骤。还介绍了安装mysql和Percona XtraBackup 2.3.5的过程,最后展示了Binlog恢复数据的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos7 根据mysql binlog恢复RDS

 

任何完美的数据恢复 比不上做好数据备份来的实在。

做好备份  做好备份  做好备份  因为mysql binlog  自动会删除

 

数据库表被删除了怎么办 怎么恢复

先判断表是否重要

 

如果非常重要


1.停服务,挂维护页面。保证数据一致性
2.找一个新的数据库。同时,对故障库进行备份
3.恢复前日备份。恢复完毕后。 scp binglog过来。
4.获取备份bin位置。获取故障前一刻 binlog位置。追 binlog

5.启动。测试。
6.对外,启动服务
7.再次备份。

 

如果不重要

1.创建新表

 

 

恢复的具体思路如下

先将全量备份的文件 恢复到数据库,然后通过binlog将剩下丢失的数据,补上。

 

我这边用的是中信云 (阿里云的阉割版)  不能回滚,而且备份出来的文件不能再源库恢复(解释是阿里的架构导致),所以只能重新搭一个数据库,正常的应该是不需要的,然后将binlog恢复。

建议mysql版本和RDS一致,mysql5.6需要用到Percona XtraBackup 2.3.5

mysql5.7应该需要用到Percona XtraBackup 2.4 

 

安装mysql

#yum删除已安装的mysql依赖----------------------------------------------------------------------。

yum -y remove mysql-libs.x86_64

yum -y remove mysql-*

yum -y remove mysql-community-*

yum -y install libaio

 

 

 

cd /tmp

wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

rpm -ivh mysql-community-release-el6-5.noarch.rpm

yum repolist all | grep mysql

yum install mysql-community-server –y

service mysqld start

mysql_secure_installation;

 

首次登陆的话   如果提示输入密码 直接按确认  会提示你是否重置密码  直接重置就好了

 

 

 

下载脚本 和Percona XtraBackup 2.3.5

 

 

安装Percona XtraBackup 2.3.5

我这边centos7直接

cd /tmp

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.5/binary/redhat/7/x86_64/percona-xtrabackup-2.3.5-1.el7.x86_64.rpm

yum localinstall percona-xtrabackup-2.3.5-1.el7.x86_64.rpm

 

如果安装过程中报.error Requires:libev.so.4

wget  ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

rpm –ivh libev-4.15-1.el6.rf.x86_64.rpm

 

正常情况安装完

 

把数据库备份文件重命名成tar.gz  脚本中只识别tar.gz

mv hins4732247_data_20180830043140.tar  hins4732247_data_20180830043140.tar.gz 

mkdir –p /usr/local/mysql/data

http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh

脚本这里下

bash rds_backup_extract.sh -f hins4732247_data_20180830043140.tar.gz  -C /usr/local/mysql/data

会解压出一堆数据库 和文件 但是数据库里面暂时是没有数据的

 

ls -l /usr/local/mysql/data

 

innobackupex --defaults-file/usr/local/mysql/data/backup-my.cnf --apply-log /usr/local/mysql/data

 

 

 

 

 

 

如果恢复的位置不对 覆盖到原本的配置文件  直接service mysqld restart 或者用systemctl启动 会报错

 

修改backup-my.cnf

# This MySQL options file was generated by innobackupex.

 

# The MySQL server

[mysqld]

innodb_checksum_algorithm=innodb

#innodb_log_checksum_algorithm=innodb

innodb_data_file_path=ibdata1:200M:autoextend

innodb_log_files_in_group=2

innodb_log_file_size=1572864000

#innodb_fast_checksum=false

#innodb_page_size=16384

#innodb_log_block_size=512

innodb_undo_directory=.

innodb_undo_tablespaces=0

 

 

#rds_encrypt_data=false

#innodb_encrypt_algorithm=aes_128_ecb

 

mysqld_safe --defaults-file=/usr/local/mysql/data/backup-my.cnf --user=mysql --datadir=/usr/local/mysql/data &

就可以启动mysql了

 

启动mysql 之后执行mysql_upgrade 修复用户丢失的问题

mysql_upgrade

 

 

 

Binlog 恢复

然后就开始一条条  慢慢恢复数据的过程了

 

 

 

mysqlbinlog --skip-gtids=true --stop-datetime="2018-08-30 11:30:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 11:30:00" --stop-datetime="2018-08-30 12:00:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:00:00" --stop-datetime="2018-08-30 12:10:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:10:00" --stop-datetime="2018-08-30 12:20:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:20:00" --stop-datetime="2018-08-30 12:25:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:25:00" --stop-datetime="2018-08-30 12:27:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:27:00" --stop-datetime="2018-08-30 12:27:30" /tmp/binlog/mysql-bin.000350 | mysql -u root

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:27:30" --stop-datetime="2018-08-30 12:28:00" /tmp/binlog/mysql-bin.000350 | mysql -u root

 

mysqlbinlog --skip-gtids=true --start-datetime="2018-08-30 12:28:00" --stop-datetime="2018-08-30 12:28:30" /tmp/binlog/mysql-bin.000350 | mysql -u root

 

 

 

 

 

 

参考

https://help.aliyun.com/knowledge_detail/41817.html

https://www.percona.com/doc/percona-xtrabackup/2.2/index.html?spm=a2c4g.11186623.2.5.3f4d5cf8Nd9SnP

https://help.aliyun.com/knowledge_detail/41817.html

https://www.percona.com/doc/percona-xtrabackup/2.3/installation/yum_repo.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值