事情是这样的,后端小姐姐发现某列数据异常,全变成了”零”。
开始复盘
1.听到这个消息,我们觉得一定是程序中进行了批量修改,并达成了共识。
2.快速进行分工,我去想办法恢复数据,她去检查代码中的错误。
数据恢复
数据库做了隔一天一全量备份
还有 恢复 按钮,看起来蛮贴心的。于是老子点了一下。
这。。。这是原理是你需要掏钱再买一台RDS,它会把这个全量备份恢复到另外一台RDS上。购买RDS是不可能购买的。
要买RDS可以按量收费,买上它一个小时的。1.69块钱,嘿嘿嘿。但是这个实例创建出来需要一定时间,大概需要10多分钟,甚至更长。
咱们还有其他办法。
阿里云是支持全量包的下载的。把它拉取到一台装备有mysql的服务器上。
安装 Percona XtraBackup 8.0
先去地址 这里需要注意你的MySQL版本 选取合适的
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/
挑选好属于自己的版本,建议在本机使用迅雷下载好了,在传到服务器上。
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm //先装上它
percona-release enable-only tools release //启用存储库
percona-release enable-only tools //启用tools 存储库
yum localinstall percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm //安装包
rpm -qa | grep -i xtrabackup //判断是否安装成功
rpm -qa | grep -i xtrabackup //相关文件查询
xtrabackup --version //查看版本
安装qpress
yum install qpress -y //没错就这么简单
拉取解压备份
wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz
## -c:启用断点续传模式。
## -O:将下载的结果保存为指定的文件(使用URL中包含的文件名后缀 .tar.gz 、.xb.gz 或 _qp.xb)。
## 解包
cat <数据备份文件名>_qp.xb | xbstream -x -v -C /home/mysql/data
## 解压
innobackupex --decompress --remove-original /home/mysql/data
## -C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。
vi /home/mysql/data/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
# 记得的给权限
chown -R mysql:mysql /home/mysql/data
# 安全启动 注意.err 文件中的报错
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &