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
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