记一次阿里云RDS MYSQL 数据恢复的经历

方法有两种!

情况1: 如果阿里云RDS备份时间在你删除数据之后,那么根据日志备份里的binlog文件里来查找记录,那个是全的.

1.1 下载日志文件中的bin文件

1.2 在linux下 用下面的代码解码出来  xxxx 是日志的数字,不要在windows下!!! win下出来的中文是乱码的,网上你都找不到这个问题,都是提示你加base64.

mysqlbinlog -vv --base64-output=decode-rows mysql-bin.xxxxx >mysql-bin.xxxx.txt  

1.3 打开解码后的txt文件,根据情况来查找, 比如我是删除的哪儿个表 就delete  from XX表 之类的关键字 ,或者搜删除数据的大概名字 就可以了  看下图

记一次阿里云RDS MYSQL 数据恢复的经历

h下图-备份文件

记一次阿里云RDS MYSQL 数据恢复的经历

 

下图--日志文件记一次阿里云RDS MYSQL 数据恢复的经历

 

情况2: 如果数据过大,需要整体恢复的 就使用备份文件来恢复

注意,下面操作必须在linux下!   我用的是ubuntu16.04

先把坑扔了 注意!!  如果碰到 dpkg状态 之类的加锁什么的提示 执行sudo rm /var/lib/dpkg/lock

2.1 安装和你阿里云mysql一样版本的数据库 我这边是5.7 ,网上方法很多,这边就不做叙述了

不太了解linuxmysql结构的,关于mysql ,可以根据下面的博客来看,非必看,看了可以知道出了问题在哪儿解决

https://blog.****.net/wangrongrongwq/article/details/79624797

2.2 安装完mysql后  在mysql服务器上安装备份工具percona-xtrabackup

看下面的几张图,根据官方文档 mysql5.7需要安装2.4的版本 我这边选择ubuntu

 

记一次阿里云RDS MYSQL 数据恢复的经历

记一次阿里云RDS MYSQL 数据恢复的经历

记一次阿里云RDS MYSQL 数据恢复的经历

 

2.3 安装完上面那个工具后,下载备份文件,我下载下来的是tar压缩包,具体看你自己下载下来的 怎么解压看官方文档.截图已经放下面了

记一次阿里云RDS MYSQL 数据恢复的经历

记一次阿里云RDS MYSQL 数据恢复的经历

2.4 上代码

在root模式下进行 sudo su 进入

# 停止mysql 根据系统不同命令不同

service mysql stop           或者   systemctl stop mysqld    

# 备份原先的datadir
mv /var/lib/mysql/ /var/lib/mysqlbak

 # 新建一个datadir 进入
mkdir /var/lib/mysql  
cd /var/lib/mysql       
#把备份文件放到此目录中  直接复制再解压 路径可以 ./ 可以/var/lib/mysql  # 具体怎么解压看上面的图
tar -xvf hinsxxxx_data_xxxxxxxxxxx.tar  ./ 

# 恢复
innobackupex --defaults-file=./backup-my.cnf --apply-log ./   

成功会有提示,就2行差不多 里面有OK!  如果很多,代表失败,检查下是不是 mysql没关 或者安装的percona-xtrabackup 不对

# 修改文件属性  
chown -R  mysql:mysql  /var/lib/mysql  

# 启动mysql
service mysql start 或者 systemctl start mysqld 

2.5 如果启动mysql 提示你 

mysql error 2006, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock

那么 你连接127.0.0.1

mysql -ur(RDS数据库的账号) -p -h 127.0.0.1

输入密码

 

如果127.0.0.1 提示你不能访问   

我就是/etc/mysql/mysql.conf.d/mysqld.cnf

修改mysql的配置文件/etc/mysql/my.conf,有些版本配置文件地址为/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address地址设置为无ip访问限制:
bind-address=0.0.0.0 
重启mysql:
service mysql restart
 

如果启动mysql提示

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

1/可能是你没授权,或者再授权次chown -R  mysql:mysql  /var/lib/mysql    当然我是针对这里的操作,平时出现这个还是得看具体的日志错误情况

2.如果1不行,尝试杀死全部的mysql进程,然后再开启

 

 

 

 

最后! 如果这样一套下来,你发现都不行!!!!

尝试重新安装下mysql