恢复阿里云RDS数据库到本地数据库

文章首发站点:OpensGalaxy.com

本文参照阿里云官方rds恢复文档,做了一些补充,原文地址:

https://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.2020520104.0.0.yreJ8Q

1.概述与软件说明

1.1 概述

RDS MySQL 使用开源软件 percona-Xtrabackup 对 MySQL 数据库进行备份。需要下载该软件,然后使用该软件进行恢复。

1.2 软件说明

解压软件

RDS的备份文件是一个压缩包,需要先解压出来,才能恢复,这里下载解压工具 rds_backup_extract (sh文件),目前只支持64位linux系统。

软件使用方式 sh rds_backup_extract -f backup.tar.gz/back.xb.gz -C directory

-f 参数后面跟要解压的备份集文件

-C 参数后面跟要解压到的目录,-C 参数是可选的,如果不指定就解压到当前目录,如 sh rds_backup_extract -f backup.tar.gz

注:需要通过 bash 来执行 rds_backup_extract 脚本文件。

恢复软件

恢复软件请下载官方的 Percona-XtraBackup【下载地址:https://www.percona.com/downloads/XtraBackup/】,官方提供各种平台的安装包,请根据自己的需要下载。RDS 备份使用的版本是 2.2.9,建议您下载 2.2.9 或更新的版本使用。想要了解工具原理的可以参考官方文档。

环境准备[xtrabackup mysql]

安装 Percona-XtraBackup

我使用的Centos6.7 64位操作系统,下载3个rpm包后进行安装,安装前先安装两个perl依赖包:perl-Time-HiRes perl-DBD-MySQL

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

然后安装

yum install percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm
yum install percona-xtrabackup-debuginfo-2.2.9-5067.el6.x86_64.rpm
yum install percona-xtrabackup-test-2.2.9-5067.el6.x86_64.rpm

安装 Mysql5.6

由于阿里云rds目前最高支持mysql5.6版本,所以在本地安装相应的mysql版本,下载Mysql的yum仓库(根据你的操作系统选择对应仓库列表)

http://dev.mysql.com/downloads/repo/yum/

我下载的是 http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm

然后安装一下这个仓库列表

rpm -ivh mysql57-community-release-el6-8.noarch.rpm

搜索一下仓库


[root@server18 ~]# yum repolist all |grep mysql mysql-connectors-community MySQL Connectors Community enabled: 21 mysql-connectors-community-source MySQL Connectors Community - S disabled mysql-tools-community MySQL Tools Community enabled: 35 mysql-tools-community-source MySQL Tools Community - Source disabled mysql-tools-preview MySQL Tools Preview disabled mysql-tools-preview-source MySQL Tools Preview - Source disabled mysql55-community MySQL 5.5 Community Server disabled mysql55-community-source MySQL 5.5 Community Server - S disabled mysql56-community MySQL 5.6 Community Server enabled: 248 mysql56-community-source MySQL 5.6 Community Server - S disabled mysql57-community MySQL 5.7 Community Server disabled mysql57-community-source MySQL 5.7 Community Server - S disabled

禁用mysql5.7

[root@server18 ~]# yum-config-manager --disable mysql57-community

启用mysql5.6

[root@server18 ~]# yum-config-manager --enable mysql56-community

开始安装

[root@server18 ~]# yum install mysql-community-server

2.step by step说明

2.1 管理控制台中下载备份文件

在RDS控制台中的备份与恢复->备份列表,选择一个备份文件进行下载,如下图

image

下载文件成功后,将备份文件上传至linux系统,上传成功后在Linux系统上检测,如下图:

image

2.2 解压备份文件

解压备份文件前,要先下载好解压工具 rds_backup_extract

1. 解压备份文件

执行命令:

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

如下图:

image

查询解压后生成的文件,其中蓝色字体的目录文件为备份生成时RDS存在的数据库

image

2.3 恢复数据文件

解压备份文件前,要先安装好 [Percona-XtraBackup]

( http://www.percona.com/downloads/XtraBackup/) 工具。

innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data

image

这一步最后如果看到类似如下输出,显示 completed OK,表示执行成功:

image

2.4 配置文件修改

由于存在的版本问题,请将解压文件backup-my.cnf中的innodb_fast_checksum,innodb_page_size ,innodb_log_block_size 注释掉,如下图:

image

2.5 修改文件属主

执行chown -R mysql:mysql /home/mysql/data ,并检查文件所属为mysql用户

image

2.6 启动mysqld进程并且登录验证

启动mysqld进程,并验证启动成功

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

image

客户端登录mysql验证

image

注意:

  1. 恢复完成后,mysql.user中是不包含rds中的用户的;需要新建;

  2. 新建用户前请执行如下sql:

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

即可.

  1. 其他问题

因为软件限制,目前恢复只支持Linux下进行。Linux下恢复的数据文件,无论Windows、Linux下,MySQL都可以正常使用.

发表评论