全量备份+mysqlbinlog恢复数据

全量恢复数据(全量备份+mysqlbinog)

现在凌晨三点了,数据库自动备份开始了,我们通过如下命令将数据库备份成 SQL 脚本

cd /www/server/data/backup;    
ls -t |grep laravel | sed -n '3,$p' | xargs -I {} rm -rf {};
mysqldump -uroot -proot --flush-logs --lock-tables -B laravel | gzip >/www/server/data/backup/laravel`(date +%s)`.sql.gz

1.立刻设置全局只读,防止新增数据干扰。

进入数据库:set global read_only=1;   #普通权限的用户只读,不能写数据
查看 show variables like '%read_only%';

2、备份当前数据库,以防万一。
3、进入MySQL查看日志,并生成新的binlog日志

show binary logs;
flush logs;
show binary logs;

4、复制binlog,并生成可读文件,用于分析误操作post节点或时间节点信息,

cp -v mysql-bin.000033 backup/;
cd backup;
 /www/server/mysql/bin/mysqlbinlog --no-defaults   --database=db   --base64-output='decode-rows' -v mysql-bin.000033 > binlog_033.sql;

5、恢复备份数据库

gunzip < /www/server/data/backup/laravel1648552481.sql.gz  | mysql -uroot -proot laravel

6、恢复mysqlbinlog增量数据

#开始位置到drop删除位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000033 --start-position  1040 --stop-position 1059 --database=laravel | mysql -uroot -proot  laravel  
#跳过drop删除位置,再到结束位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000035 --start-position  1086  --stop-position 1387 --database=laravel | mysql -uroot -proot  laravel

或者

#开始位置到drop删除位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000033 --start-datetime='2022-02-11 00:00:00' --stop-datetime='2022-02-12 15:00:00'  --database=laravel | mysql -uroot -proot  laravel  
#跳过drop删除位置,再到结束位置
/www/server/mysql/bin/mysqlbinlog mysql-bin.000035 --start-datetime='2022-02-12 16:00:00' --stop-datetime='2022-02-12 18:00:00'  --database=laravel | mysql -uroot -proot  laravel

7、恢复数据后,刷新binlog日志,生成新的binlog日志。

show binary logs;
reset master;
show binary logs;

8、恢复全局锁

set global read_only=0;

9、恢复之前为了避免产生没有用的二进制日志,可以关闭二进制日志的记录

SET SESSION sql_log_bin=0;
恢复完成,启用记录二进制日志
SET SESSION sql_log_bin=1;

恢复单表数据

一、处理需要恢复的单表binlog

1、将binlog日志复制到备份文件夹

cp -v mysql-bin.000033 backup/;

2、打开备份文件夹,从mysql-bin.000033中提取出想要的数据库binlog003.sql

cd backup;
/www/server/mysql/bin/mysqlbinlog --no-defaults --database=db  --base64-output=decode-rows -v   mysql-bin.000033 > binlog003.sql

3、从binlog003.sql中提取出想要的单表数据mytable_backup.sql;

cat binlog003.sql | grep  -A1 -B3 -i -E '^insert|^update|^delete|^replace|^alter'| grep -A1 -B3 mytable > mytable_backup.sql;

4、需要手动vim编辑mytable_backup.sql,将那条drop语句剔除掉

二、处理需要恢复的备份sql

1、创建mytable_info.sql文件,添加使用数据库 use laravel,

echo -e '\n USE `laravel`; \n' > mytable_info.sql;  

2、将备份的数据库提取出需要备份的表结构,追加到mytable_info.sql

sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `info`/!d;q' laravel1648610111.sql >> mytable_info.sql; 

3、将备份的数据库提取出需要备份的表数据,追加到mytable_info.sql

grep 'INSERT INTO `info`' laravel1648610111.sql >> mytable_info.sql;

三、恢复单表数据(单表备份+单表mysqlbinlog)
先恢复mytable表的备份数据,然后执行binlog提取的mytable表增量数据。

mysql  -uroot  -proot  database  < mytable_backup.sql;
mysql  -uroot  -proot  database  < mytable_info.sql;

linux导入导出数据库操作

1、导出数据库

mysqldump -uroot -ppassword abc >db_abc.sql
如果要直接导出sql.zip或者gzip格式文件命令如下:
mysqldump -uroot -ppassword abc | gzip > db_abc.sql.tar.gz

2、导入数据库

mysql -uroot -ppassword database< /root/backup/db_abc.sql
如果是zip或gzip格式则使用下面的命令:
gunzip < /root/backup/abc.sql.tar.gz | mysql -uroot -ppassword abc

参考链接:
https://www.cnblogs.com/builderman/p/15835602.html

删除n天前的文件保留几份最新的文件

参考链接:
https://blog.csdn.net/mcfnhm/article/details/121290881
https://www.cnblogs.com/testpu/p/15545361.html

显示20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} \;
 
删除20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec rm {} \;
 
显示20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec ls -l {} \;
 
删除20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec rm {} \;

数据回闪

参考链接:
https://cloud.tencent.com/developer/article/1554668
https://www.cnblogs.com/tianfen/p/10001807.html

python加入环境变量:参考链接
https://blog.csdn.net/qq_36564503/article/details/122910412

pip下载某个模块

1、比如我刚开始安装tf2.0出现了错误,

pip install -i https://pypi.douban.com/simple tensorflow==2.0.0

通过设置 --trusted-host pypi.douban.com 信任该镜像源。
下面我们只需要改成如下即可:

pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com tensorflow==2.0.0

2、其他常用镜像源

阿里云 http://mirrors.aliyun.com/pypi/simple
豆瓣 http://pypi.douban.com/simple
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
中科大 http://pypi.mirrors.ustc.edu.cn/simple
网易云 https://mirrors.163.com/pypi/simple
#以清华源为例
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 模块名
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值