记一次阿里云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表 之类的关键字 ,或者搜删除数据的大概名字 就可以了 看下图
h下图-备份文件
下图--日志文件
情况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
2.3 安装完上面那个工具后,下载备份文件,我下载下来的是tar压缩包,具体看你自己下载下来的 怎么解压看官方文档.截图已经放下面了
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