RDS MySQL 物理备份文件恢复到自建数据库

记录一次误操作恢复线上数据的过程

操作不规范误删除了基础数据表🤦‍
由于服务器上没有每日的定时任务,无法恢复就先用测试数据弥补
随后找运维同学要了RDS昨天物理备份的连接开始恢复

参考文档

阿里云恢复官方文档 https://help.aliyun.com/knowledge_detail/41817.html.
其他博客参考文档:https://www.cnblogs.com/zoulixiang/p/9395382.html.

1.准备一台服务器,安装mysql,并检查剩余空间。

  • 1.1 这里建议恢复的mysql版本和RDS保持一致

    线上RDS版本
    查看RDS数据库版本为5.7.26

  • 1.2 安装对应RDS版本的mysql: https://cloud.tencent.com/developer/article/1451186.
    安装成功启动无问题后停用mysq服务清空数据目录下的文件(/etc/my.conf中的datadir值)

  • 1.3 数据恢复之前需要查看服务器磁盘空间,空间不一定够,在阿里云上扩展一块磁盘挂载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.下载数据备份文件。

	wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz

3.解压已下载的数据备份文件。

	tar -izxvf <数据备份文件名>.tar.gz -C /home/mysql/data
	
	或者使用官方脚本(这里我使用的是脚本解压)
	
	wget  http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh
	chmod 777 rds_backup_extract.sh 
	./rds_backup.sh -f <数据备份文件名>.tar.gz -C /data/mysql

4.恢复解压好的备份文件。

官方文档指出

在这里插入图片描述
上面查询到的RDS版本为5.7.26
官方安装文档: https://www.percona.com/doc/percona-xtrabackup/2.4/installation/yum_repo.html#standalone-rpm.

安装成功,查看版本;执行命令

在这里插入图片描述

	innobackupex --defaults-file=/data/mysql/backup-my.cnf --apply-log /data/mysql
执行结果

在这里插入图片描述

5.为避免版本问题,需修改backup-my.cnf参数。

	vi /data/mysql/backup-my.cnf
自建数据库不支持如下参数,需要注释掉。
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#rds_encrypt_data
#innodb_encrypt_algorithm
#redo_log_version
#master_key_id

保存退出

6.执行如下命令,修改文件属主,并确定文件所属为MySQL用户。

	chown -R mysql:mysql /home/mysql/data

7.执行如下命令,启动MySQL进程。

	mysqld_safe --defaults-file=/data/mysql/backup-my.cnf --user=mysql --datadir=/data/mysql &
这里官方文档给出的命令无法启动mysql

在这里插入图片描述
本地环境使用service启动mysql

	service mysql start

在这里插入图片描述

8.成功演示。

数据恢复成功
在这里插入图片描述
硬盘占用空间展示
在这里插入图片描述

9.总结。

至此线上数据恢复就完成了。

  • 9.1 中间Percona XtraBackup工具安装踩坑,工具版本需要和RDS版本对应;除此以外可能会有工具包依赖问题
  • 9.2 建议本地恢复mysql版本和RDS保持一致
  • 9.3 恢复过程需要熟悉linux上的mysql文件结构、配置文件、mysql命令
  • 9.4 数据恢复成功后mysql启动也可能会有其他错误,具体问题具体处理
  • 9.5 建议给线上数据库加上逻辑备份
		#!/bin/bash
		date_str=`date +%Y%m%d_%H%M`
		mysqldump -u 账户 -p '密码' -h '数据库连接' 数据库名> /备份目录/备份数据库前缀_$date_str.sql
		find /备份目录/ -mtime +7 -exec rm -f {} \;

10.扩展。

  • 了解Percona XtraBackup工具
  • 熟悉mysql文件结构和命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值