zoukankan      html  css  js  c++  java
  • MySQL模拟备份与恢复

    一、MySQL-5.6 环境

    #背景
    1.备份策略:每天23:00,计划任务调用mysqldump执行全备脚本
    2.故障时间点:上午10点开发人员误删除一个核心业务表,如何恢复
    
    #恢复思路
    1.挂维护页
    2.找测试库测试
    3.恢复周二全备
    4.截取周二全备直到周三上午十点误删除之前binlog,并恢复
    5.测试业务功能正常
    6.恢复业务:
    	方案一:故障库导回到原生产
    	方案二:直接用测试库承当生产,先跑着。
    	
    
    #创建数据库进行模拟
    mysql> create database backup character set utf8;
    mysql> use backup;
    mysql> create table xuesheng;
    mysql> create table xuesheng(id int,name varchar(10));
    mysql> insert into xuesheng values('1','张山'),('2','李四');
    
    

    二、核心业务库被删,恢复

    -A    等于 --all-databases,导出所有库
    -B    指定库备份,只能指定库的名字
    -F    备份数据的同时刷新binlog
    -d    仅表结构
    -t    仅数据
    -E   备份事件
    -R   --routines 备份存储过程和函数数据
    --triggers 备份触发器数据
    --master-data=2 备份时进行打点,记录备份时的binlog位置点(必须开启binlog才能使用)
    --single-transaction 快照备份
    
    1.模拟周二全备      #(我这里没有设置密码,完整的需要加 -u用户 -p)
    [root@db01 ~]# mysqldump -A -R -E --master-data=2 --single-transaction --triggers >/tmp/backup_`date +%F`.sql
    
    2.模拟周三白天变化
    mysql> use backup;
    mysql> insert into xuesheng values('5','王五');
    
    3.删除库
    mysql> drop database backup;
    Query OK, 1 row affected (0.00 sec)
    
    4.找到起始位置点
    [root@db01 ~]# vim /tmp/backup_2021-04-27.sql    #在22行
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1320808;  
    
    5.找到结束位置点
    [root@db01 ~]# mysqlbinlog --base64-output=decode-rows -vvv --start-position=1320808 /usr/local/mysql/data/mysql-bin.000003 > 1.txt
    
    [root@db01 ~]# cat 1.txt
    ------------------------------
    # at 1321041
    #210427 19:05:05 server id 1  end_log_pos 1321139 CRC32 0x12ef3e7b 	Query	thread_id=8  exec_time=0	error_code=0
    SET TIMESTAMP=1619521505/*!*/;
    drop database backup
    --------------------------------
    
    5.截取binlog
    [root@db01 ~]#  mysqlbinlog --start-position=1320808  --stop-position=1321041 /usr/local/mysql/data/mysql-bin.000003 > /tmp/huifu.sql
    
    6.恢复周二全备和
    mysql> set sql_log_bin=0;
    mysql> source /tmp/backup_2021-04-27.sql;
    mysql> source /tmp/huifu.sql;
    
    
  • 相关阅读:
    java 设计模式之———单例模式
    java 中的 23 种开发模式(转)
    Java 简单的 socket 编程入门实战
    蓝桥杯比赛java 练习《立方变自身》
    蓝桥杯比赛关于 BFS 算法总结方法以及套路分析
    蓝桥杯比赛javaB组练习《生日蜡烛》
    C语言中调用运行python程序
    解决:执行python脚本,提示错误:/usr/bin/python^M: 解释器错误: 没有那个文件或目录。
    webRTC中回声消除(AEC)模块编译时aec_rdft.c文件报错:
    VMware下Linux虚拟机访问本地Win共享文件夹
  • 原文地址:https://www.cnblogs.com/backz/p/15320401.html
Copyright © 2011-2022 走看看