关于RDS备份恢复以及启动的一些报错解决方法

来源:互联网 发布:input name 二维数组 编辑:程序博客网 时间:2024/05/21 08:03

阿里云官网上是有提供关于RDS备份恢复到自建数据库中的方法,但本人根据他们提供的方法进行操作的时候发现很多问题并没有在方法里头提到的怎么解决,只写了如何操作的一个过程,我在这重新梳理了一下过程,并给广发的博友参考。(此文只针对自己恢复过程中遇到的问题解决方法,并不针对所有现象)


一、前提是先安装好数据库

1.首先是把下载的rds_backup_extract随便放在一个地方并授予权限

#chmod -R 777 rds_backup_extract

2.下载备份包进行解压,-C后面指的是你本地数据库data路径。

#bash rds_backup_extract -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data

解压完成。

3.安装恢复工具

https://www.percona.com/downloads/XtraBackup/LATEST/这里去找根据自己版本,下载对应恢复工具,RDS是用2.2.6。我用的是2.2.9的。

#yum -y install perl-Time-HiRes perl-DBD-MySQL

#rpm -ivh percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm



二、开始恢复

1.进入到当时解压的本地数据库data路径下,能看到当时解压出来的所有数据,包括backup-my.cnf。


2.执行语句恢复数据库

#innobackupex --defaults-file=/alidata/server/mysql/data/backup-my.cnf --apply-log /alidata/server/mysql/data/

看到图下信息就说明恢复完成

三.由于5.6的GTID的新特性自建数据库对RDS进行同步需要,所以需要添加一些backup-my.cnf里的参数,所以启动会报以下几个错误。

1.当报:[ERROR] /alidata/server/mysql/bin/mysqld: unknown variable 'innodb_log_checksum_algorithm=innodb'的时候


解决方法:

把my.cnf里的innodb_log_checksum_algorithm=innodb注释掉。(注释掉只是暂时解决,后期有变动我会修改。因为这个参数要用得到。


2.当报:[ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode的时候


解决方法:

rm -fr ibdata1 ib*,再重新启动即可。

3.当报:[ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates


解决方法:

开启GTID需要启用这三个参数,gtid_mode = on,enforce_gtid_consistency = 1,log_slave_updates = 1不然就会报这个错误。


4.当报:[ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/user.frm' (errno: 13 - Permission denied)


解决方法:

由于RDS恢复完成后,表 mysql.user 中是不包含 RDS 中创建的用户,需要新建,或者在my.cnf里面添加user=root。

新建用户前请执行如下 SQL:

delete from mysql.db where user<>'root' and char_length(user)>0;
delete from mysql.tables_priv where user<>'root' and char_length(user)>0;
flush privileges;




0 0