您现在的位置是:首页 >技术教程 >记一次binlog恢复Mysql某张表数据的过程网站首页技术教程
记一次binlog恢复Mysql某张表数据的过程
简介记一次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
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。