恢复阿里云RDS的数据备份文件到本地数据库
前言
写之前先说说这篇文章的来由,公司客户准备发布一些活动,采用在线报名的方式,由于前期表结构设计的不合理,后期优化对表结构的改动,导致部分活动用户报名数据丢失,于是想恢复mysql被误删的数据,幸运的是RDS每天会自动备份数据文件,官方也提供了恢复云数据库mysql的备份文件到自建数据库的文档,不再赘述,本文主要把恢复数据的过程记录下来,供大家参考:
前提条件
- 本地mysql数据库安装在64位的Linux系统中,且与RDS的版本相同。
- 操作系统中已安装数据恢复工具Percona XtraBackup 2.2.9或以上版本。
- 操作系统中已安装数据备份文件解压工具rds_backup_extract.sh,点击下载。
准备工作
mysql安装不在赘述,主要与RDS版本相同即可,Percona XtraBackup安装官方也提供了详细的文档,按照步骤操作即可。本文采用Centos7,不同linux系统可查阅相应的文档。
系统版本
安装percona-xtrabackup
安装依赖包
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
查看依赖包
yum list | grep percona
安装Percona XtraBackup
yum install percona-xtrabackup-22
下载RDS数据备份文件
文档中有详细说明,按照文档下载需要恢复的文件即可,文件格式为.tar.gz压缩文件
开始恢复数据
- 下载官方文档中提供的数据备份文件解压工具rds_backup_extract.sh,并添加可执行权限,解压数据备份文件。
chmod +x rds_backup_extract.sh
bash rds_backup_extract.sh -f <数据备份文件名>.tar.gz -C /var/backup
- 执行如下命令,恢复解压好的备份文件,如果系统返回如下类似结果,则说明备份文件成功恢复到本地数据库
innobackupex --defaults-file=/var/backup/backup-my.cnf --apply-log /var/backup
- 修改文件属主,并确定文件所属为MySQL用户
chown -R mysql:mysql /var/backup/
- 修改/var/backup/backup-my.cnf,文档中修改内容如下:注释innodb_fast_checksum,innodb_page_size,innodb_log_block_size,但实际操作中启动mysql进程是报错:unknown variable *,所以做了一些修改:
- 启动mysql进程
mysqld_safe --defaults-file=/var/backup/backup-my.cnf --user=mysql --datadir=/var/backup/,需要注意/var/backup/ 目录有相应的权限,否则mysql启动会报错。
- 登录mysql,文档中给出的命令为 mysql -uroot,但是登录时报错,,查看mysql日志文件:/var/backup/iZbp1f8l5dgkfqafh6rla0Z.err,mysql socket文件路径为/tmp/mysql.sock,mysql -uroot -S /tmp/mysql.sock,登录成功。
- 导出数据:mysqldump -uroot -S /tmp/mysql.sock 数据库名称>/tmp/数据库名称.sql
相关推荐
胡道成 2020-08-31
juliashine 2020-07-30
重善奉行 2020-07-27
TMD咯MySQL 2020-06-11
hevenue 2020-06-08
pandaphinex 2020-05-29
heniancheng 2020-05-26
achiverhai 2020-05-08
lyqcsdn 2020-04-30
meiseeny 2020-04-29
大数据实战派 2020-04-21
景泽元的编程 2020-01-31
fcds00 2019-10-28
yuanyueliang 2019-10-24
luckykapok 2019-10-23
zhanbuquan 2019-09-07
Java学习 2019-05-20
snowfoxmonitor 2013-10-15
蛋蛋哥 2012-12-19