全量备份+mysqlbinlog恢复数据

2023-05-16

全量恢复数据(全量备份+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 模块名
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全量备份+mysqlbinlog恢复数据 的相关文章

随机推荐

  • jquery ajax 提交json格式数据

    某些系统后台必须传json数据 xff0c 所以需要使用如下格式设置 ajax url 34 login 34 data JSON stringify 34 username 34 34 zhangsan 34 34 password 34
  • RSA 非对称加密解密,可以javascript和java加解密

    公钥与私钥机制属于非对称加密的范畴 xff0c 非对称是相对于对称加密而言的 xff0c 对称加密用于加密与解密的密钥是同一把 xff0c 而非对称加密则用于加密与解密的密钥不相同 xff0c 一个公开 xff0c 称为公钥 xff1b 一
  • word 通过宏选中所有表格

    1 将下面的脚本复制 2 word 视图 宏 查看宏 输入宏名 xff1a SelectAllTables 点击创建 Alt 43 F11打开VBA代码编辑窗口 xff0c 新增模块 3 将脚本编辑窗口中的默认代码删掉 xff0c 粘贴1步
  • 开源表单收集系统推荐

    1 TDUCK填鸭表单官网 开源表单系统 xff0c 自定义工作流 xff0c 信息收集系统 业务表单自由拖拽实时生成 全新工作流版本 全新移动端UI 表单收款 全新预约组件 投票场景支持 考试场景支持 函数计算支持 目前市面上的表单平台虽
  • .net framework 官方下载地址

    net framework 官方下载地址 https dotnet microsoft com zh cn download dotnet framework
  • QT/C++多线程练习:单生产者多消费者(巨详细版本)

    QT多线程练习 单生产者多消费者 代码思路1 全局变量2 消费者线程3 消费者管理类4 生产者线程5 主线程总结 最近在研究qt的线程的一些知识点 从如何新建线程到以不同的方式去新建线程 xff0c 再到多线程以及多线程同步的几种方式等 看
  • uniapp 设置背景图像

    uniapp设置背景图像方法如下 xff0c 兼容android APP lt view class 61 34 outer 34 style 61 34 background 39 url 39 43 APPSET bgUrl 43 39
  • nginx https 代理 tomcat http,解决访问https还会跳转http问题

    server listen 443 ssl 配置HTTPS的默认访问端口为443 如果未在此处配置HTTPS的默认访问端口 xff0c 可能会造成Nginx无法启动 如果您使用Nginx 1 15 0及以上版本 xff0c 请使用liste
  • jquery pagination分页组件

    pagination 一个jQuery插件 xff0c 提供简单但完全可定制的分页 样式如下 官网 https pagination js org github https github com superRaytin pagination
  • 通过FRP搭建内网穿透,实现域名访问局域网本机

    1我的目标 xff1a 实现通过域名访问局域网tomcat服务 xff0c 域名访问方便本地微信调试 2思路 xff1a xff08 1 xff09 用服务器搭建内网穿透 利用FRP实现穿透 xff0c frp 是一个专注于内网穿透的高性能
  • java 用combiner工具合成图片

    目录 图片合成工具image combinermaven引入项目java代码合成图片 图片合成工具image combiner 官网地址 https gitee com dromara image combiner maven引入项目 lt
  • java用图片生成pdf

    maven引入组件itextpdf span class token tag span class token tag span class token punctuation lt span dependency span span cl
  • Spring整体架构

    Spring框架是一个分层架构 xff0c 它包含一系列的功能要素 xff0c 并被分为大约20个模块 xff0c 如下图所示 Spring整体架构图 1 Core Container Core Container xff08 核心容器 x
  • 使用networkx常用函数分析连接图

    使用networkx常用函数分析图 1 Connected components 连通图 连通图内任意两点之间都存在path 由此函数可以得到一个components的列表 nx connected components G Q xff1a
  • http not supported or disabled in libcurl 和 未将对象引用到实例的解决办法

    curl获取天气时 xff0c 报错 xff1a http not supported or disabled in libcurl 找了半天 xff0c 发现url地址前面多打了一个空格 xff01 去掉空格就好了 然后蹦出来另一个问题
  • Policy gradient(策略梯度详解)

    文章目录 策略梯度基本知识什么是策略梯度 xff1f 强化学习案例 策略梯度公式详解如何使你的损失函数更好增加一个基准为每一个action分配不同的权重 策略梯度基本知识 什么是策略梯度 xff1f 直接根据状态输出动作或者动作的概率 那么
  • android apk的签名和权限问题

    一 android apk的签名问题 http blog csdn net lyq8479 article details 6401093 1 为什么要给Android应用程序签名 xff1f 如果只能用一句简单的话语来回答这个问题的话 x
  • ERROR in The “path“ argument must be of type string. Received undefined

    在前端开发中 xff0c 用webpack打包时 xff0c 有时候会遇到如题这个错误 比如我机器上的某个工程 xff0c 以下的webpack的配置 xff1a output path ghpages filename bundle js
  • TensorFlow Lite发布重大更新!支持移动GPU、推断速度提升4-6倍

    乾明 发自 凹非寺 量子位 出品 公众号 QbitAI TensorFlow用于移动设备的框架TensorFlow Lite发布重大更新 xff0c 支持开发者使用手机等移动设备的GPU来提高模型推断速度 在进行人脸轮廓检测的推断速度上 x
  • 全量备份+mysqlbinlog恢复数据

    全量恢复数据 xff08 全量备份 43 mysqlbinog xff09 现在凌晨三点了 xff0c 数据库自动备份开始了 xff0c 我们通过如下命令将数据库备份成 SQL 脚本 cd www server data backup ls