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;
    
    
  • 相关阅读:
    Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率
    实用设计模式之观察者模式
    并查集简单题pku1611
    HDU 4534 郑厂长系列故事——新闻净化(AC自动机+DP)
    求 小于 n 的 质数 几种方式
    MySQL数据库高并发优化配置
    MySQL 对于千万级的大表要怎么优化?
    mysql数据库优化总结
    php 正则表达式怎么匹配标签里面的style?
    MySql数据库优化可以从哪几个方面进行?
  • 原文地址:https://www.cnblogs.com/backz/p/15320401.html
Copyright © 2011-2022 走看看