阿里云rds实例恢复到本地

时间:2022-01-28 06:26:36

摘要:

  前提:

      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控制台,点击复制外网。

阿里云rds实例恢复到本地

阿里云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=/data/mysql/backup-my.cnf --apply-log /data/mysql

 阿里云rds实例恢复到本地

出现如上图,基本数据恢复完成了。

 

 

7,修改数据库文件属性

chown -R mysql:mysql /data/mysql 

 

 

8,为防止数据库版本问题,还是需要修改/data/mysql/backup-my.cnf的配置文件,将如下配置注释掉。

阿里云rds实例恢复到本地

 

 

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;