zoukankan      html  css  js  c++  java
  • 【MySQL】全量+增量的备份/恢复

      生产环境中,有时需要做MySQL的备份和恢复工作。因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助。如果想恢复数据到一个空库(例如数据迁移或者上云等更换MySQL数据库的场景),基于全量备份+增量备份的数据进行恢复,可以更接近于原本的数据。

      工作中曾经使用过的2种方法:

    1.基于dump全量备份.sql+binlog生成增量备份sql,进行全量+增量的备份/恢复操作。

    • 备份过程:

      (1)dump命令,生成全量备份sql文件。

     

       (2)查看全量备份文件.sql,注意这个信息:

     

      (3)全量备份之后,MySQL中又有增删改操作。例如:create一个表,并插入数据。 

       (4)增量备份:执行flush logs,会生成最新的增量binlog。

     

    • 恢复过程: 

      (1)dump出来的全量备份文件.sql 和 flush出来的增量binlog 都scp拷贝到要恢复的机器上。 

      (2)恢复dump全量备份:mysql -uroot -p密码 数据库名 < 全量备份.sql

      (3)基于binlog生成增量备份sqlmysqlbinlog --start-position=337 --database=数据库名 mysql-bin.000002 > 增量备份.sql

      (4)执行恢复该增量备份sql:mysql -uroot -p密码 数据库名 < 增量备份.sql

      

    2.基于Percona公司的xtrabackup工具,进行全量+增量的备份/恢复操作。

       (1)全量备份

        innobackupex --user=用户名 --password=密码 全量备份文件存放目录。

        同样,期间有些增量操作,建表,增删数据等 

       (2)增量备份

        innobackupex --user=用户名 --password=密码 --incremental 增量备份文件存放目录 --incremental-basedir=依赖的上一次全量备份或增量备份 

      (3)恢复日志的准备

    • 增量恢复日志的准备

        innobackupex --apply-log --redo-only 全量备份文件存放目录

        innobackupex --apply-log --redo-only 全量备份文件存放目录 --incremental-dir=增量备份文件存放目录

    • 全量恢复日志的准备

        innobackupex --apply-log 全量备份文件存放目录 

      (4)恢复数据

        关闭要恢复的数据库

        /etc/init.d/mysqld stop

        mv data data_old

        mv undo undo_old

        mv undo_log undo_log_old

        mkdir -p data undo_log

        innobackupex --move-back 全量备份文件存放目录

        chown mysql:mysql -R data/

        chown mysql:mysql -R undo_log/

        /etc/init.d/mysqld start

     

  • 相关阅读:
    【hive】时间段为五分钟的统计
    【git】提交到github不显示贡献小绿点问题的解决
    【hive】关于用户留存率的计算
    【hive】求日期是星期几
    【hive】数据仓库层次设计
    【hive】count() count(if) count(distinct if) sum(if)的区别
    转载:几种 hive join 类型简介
    丑小鸭和白天鹅没有区别
    好好照顾自己,就像照顾你爱的人那样;
    灵光一闪(最近更新于2020/8/23)
  • 原文地址:https://www.cnblogs.com/wwcom123/p/10920678.html
Copyright © 2011-2022 走看看