由于阿里云rds数据库备份的是物理备份,这个备份恢复,阿里云官方恢复是需要重新购买数据库才能恢复。下边介绍下如何恢复数据。
1.阿里云数据库备份实例,恢复数据的时候需要将数据恢复到本地数据库,是不能直接恢复到RDS上的。
2.需要在本地服务器上下载一个数据库,尽量和RDS数据库版本保持一致。(我现在用的是5.6的版本)
3.这里需要用到xtrabakcup工具进行数据恢复
1,下载5.6版本的数据库
cd /usr/local/src/
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
2,解压
mv /us/local/src/mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
3,创建数据库用户
useradd -s /sbin/nologin mysql
3,安装xtrabakcup工具
获取yum源
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
安装xtrabackup需要依赖其他包(这里用的是阿里云的epel源)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
安装工具
yum install percona-xtrabackup
4,登录到阿里云的RDS控制台,点击复制外网。
5,下载数据备份文件
wget -c '外网地址' -O /usr/local/src/db.tar.gz
(如果你用的是虚拟机,可能无法解析改外网地址。加个114的dns即可)
6,将下载的数据备份恢复到本地MySQL数据库中
a,首先下载一个脚本
wget http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh
chmod a+x rds_backup.sh
b,解压数据文件
mkdir -p /data/mysql
执行命令解压数据文件
./rds_backup.sh -f <数据备份文件名>.tar.gz -C /data/mysql
c,恢复解压好的备份文件
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
7,修改数据库文件属性
chown -R mysql:mysql /data/mysql
8,为防止数据库版本问题,还是需要修改/data/mysql/backup-my.cnf的配置文件,将如下配置注释掉。
9,启动数据库
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/backup-my.cnf --user=mysql --datadir=/data/mysql &
10,登录数据库
/usr/local/mysql/bin/mysql -uroot
上面基本完成数据的恢复。考虑到恢复完成后,表mysql.user中不包含在RDS实例中创建的用户,需要新建。在新建用户前,执行如下命令
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;