zoukankan      html  css  js  c++  java
  • MySQL利用mysqlbinlog模拟增量恢复

    背景:本次的恢复操作是在另外一台MySQL实例上进行,不是在同一个实例中操作的。相当于生产的数据库恢复到一个全新的实例上了

    1 创建库表并插入数据 

    #创建库
    create database test;
    # 切换库
    use test;
    # 创建表 带有自动更新的时间戳,方便下面的实验
    CREATE TABLE t (
    	ID INT (10) NOT NULL AUTO_INCREMENT,
    	USER_NAME VARCHAR (50) DEFAULT '',
    	`CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    	`UPDATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    	PRIMARY KEY (id)
    ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT = '测试表';
    
    # 插入数据,只插入ID 和 USER_NAME,时间戳有默认值会自动插入
    INSERT INTO t (ID, USER_NAME)
    VALUES
    	(1, '张三'),
    	(2, '李四'),
    	(3, 'zl'),
    	(4, 'yh'),
    	(5, 'jack')
    
    

     2 进行全量备份(模拟日常的数据库全量备份)

    mysqldump -uroot -proot -h10.238.162.31 --master-data=2  --single-transaction --databases test > /server/backup/test.sql

    3 全量备份之后进行数据的插入(模拟全量备份后数据库之后的改变)

    INSERT INTO t (ID, USER_NAME)
    VALUES
    	(6, 'rose'),
    	(7, 'nico')

     此时t表的数据如下,有7条数据

     

    4 利用这些备份恢复至数据库的最新状态(模拟现在的数据库服务器宕机不能启动或者数据被破坏,但是数据库做了异地备份,即有数据库的全量备份和日志备份。)

     首先在另一个MySQL实例上进行全量恢复

    mysql -uroot -proot < test.sql

    此时查看t表的数据是全量备份当时时间点的数据,没有全量备份之后的数据

    5 利用mysqlbinlog工具进行数据库增量恢复  

    首先查看全量备份文件中备份到那个点 

    利用这个binlog文件号和偏移量将数据库恢复至最新的状态 

    mysqlbinlog --start-position=2263  mysql-bin.000008 |mysql -uroot -proot

    查看数据已经恢复

  • 相关阅读:
    109. 有序链表转换二叉搜索树
    108. 将有序数组转换为二叉搜索树
    235. 二叉搜索树的最近公共祖先
    538. 把二叉搜索树转换为累加树
    230. 二叉搜索树中第K小的元素
    669. 修剪二叉搜索树
    513. 找树左下角的值
    637. 二叉树的层平均值
    671. 二叉树中第二小的节点
    DDL-Oracle中的5种约束总结(未完待续)
  • 原文地址:https://www.cnblogs.com/DBABlog/p/12926871.html
Copyright © 2011-2022 走看看