您现在的位置是:首页 >技术教程 >记一次binlog恢复Mysql某张表数据的过程网站首页技术教程

记一次binlog恢复Mysql某张表数据的过程

编程爱好者熊浪 2024-09-05 00:01:03
简介记一次binlog恢复Mysql某张表数据的过程

1、备份数据库,非常重要
在这里插入图片描述
2、要用户不能操作(如果不能停止,可以新建一个库,所有的binlog执行操作在新库执行)。
3、登录服务器;
4、获取Mysql数据路径

cat /etc/my.cnf.d/mysql-server.cnf

在这里插入图片描述
5、进入当前目录下

cd /var/lib/mysql
ll

binlog文件所在
在这里插入图片描述
6、新开一个窗口,找到 mysqlbinlog所在

#需要权限
cd / 
find -name 'mysqlbinlog'

在这里插入图片描述
进入binlog执行命令下

cd /usr/bin

7、把binlog文件转为sql文件(需要转换几个,修改binlog文件名和生成的sql名称就可以了)

./mysqlbinlog --set-charset=utf8 /var/lib/mysql/binlog.000170 >/tmp/170.sql;

8、继续新开一个窗口,进入刚刚生成SQL的文件目录下

cd /tmp

在这里插入图片描述
9、查询表所在文件

grep -rn '表名' *.sql

在这里插入图片描述
可以看出,文件主要更新所在文件是175.sql

10、使用mysql的root用户登录

mysql -uroot -p

登录成功后,通过source命令,加载sql文件

source /tmp/175.sql

在这里插入图片描述
执行完成
在这里插入图片描述
11、验证表中已添加数据
在这里插入图片描述
12、导出这张表的数据
13、回滚开始备份的数据库;
14、同步刚刚导出的表数据;

延伸:
之所以使用binlog还原,主要是数据库没有备份,添加自动备份

Mysql备份命令:

#1、备份db1数据库中所有表(包括表结构和数据,不包括创建db1数据库的语句)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码) nacos > /data/backup/nacos.sql

#2、备份db1数据库中所有表(包括表结构和数据,包括创建db1数据库的语句)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码) --databases nacos > /data/backup/nacos.sql

#3、备份db1数据库中nacos,oauth_server表(包括表结构和数据,不包括创建db1数据库的语句)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码) nacos oauth_server > /data/backup/nacos_oauth.sql

#4、备份多个(db1、db2)数据库(包括建库语句和所有表的结构和数据)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码) --databases nacos,oauth_server > /data/backup/nacos_oauth.sql

#5、备份所有数据库(包括建库语句和所有表的结构和数据)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码) --all-databases > /data/backup/all.sql

#6、备份nacos数据库中所有表结构(只包括表结构,加-d参数)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码)  -d nacos > nacos_table.sql

#7、备份nacos数据库中nacos,oauth_server表结构(只包括表结构,加-d参数)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码)  -d nacos oauth_server > nacos_oauth_table.sql

#8、备份nacos数据库中所有表数据(只包括表数据,加-t参数)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码)  -t nacos > nacos_data.sql

#9、备份db1数据库中nacos,oauth_server表数据(只包括表数据,加-t参数)
/usr/bin/mysqldump -h10.0.0.63 -uroot -p(密码)  -t nacos oauth_server > nacos_oauth_data.sql

一、新建备份sh

vim backup_mysql.sh
#!/bin/bash 
# This is backup mysql
#当前系统日期
DATE=`date +%Y%m%d`
#删除7天前的文件(备份数据库只保留多少天)
REMOVE_DATE= `date -d '7 day ago' +%Y%m%d`

mkdir /data/backup/$DATE

/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases nacos > /data/backup/$DATE/nacos.sql
/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases book_admin > /data/backup/$DATE/book_admin.sql
/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases book_api > /data/backup/$DATE/book_api.sql
/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases book_oauth > /data/backup/$DATE/book_oauth.sql
#数据太大,生产备份
#/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases book_system > /data/backup/$DATE/book_system.sql
#/usr/bin/mysqldump -h10.0.0.63 -uroot -p123456 --databases book_crawl > /data/backup/$DATE/book_crawl.sql
zip -r /data/backup/$DATE.zip /data/backup/$DATE
#移除文件夹
rm -rf /data/backup/$DATE
#移除7天前的文件
rm -rf /data/backup/$REMOVE_DATE.zip

二、保存赋权

chmod +777 backup_mysql.sh

三、执行一次看sh文件是否能生成sql文件,验证下文件

sh backup_mysql.sh

在这里插入图片描述

四、开启Linux的Cron定时任务
crontab -e
新建任务

crontab -e
#编辑
0 6 * * * /data/backup/backup_mysql.sh
#保存

每天早上6点备份数据库
在这里插入图片描述

#查看是否保存
crontab -l

在这里插入图片描述

#开启cron
/sbin/service crond start

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。