zoukankan      html  css  js  c++  java
  • (十一)mysql备份之物理备份xtrabackup

    (1)备份介绍

    (2)下载安装xtrabackup

    官网:https://www.percona.com/downloads/XtraBackup/LATEST/
    我选择yum安装,centos版本7

    wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/
    percona-release-0.1-4.noarch.rpm
    rpm -ivH percona-release-0.1-4.noarch.rpm
    yum install percona-xtrabackup-24 -y
    

    (3)完全备份与恢复

    1)完全备份

    • 创建备份账户
    mysql> grant reload,process,lock tables,replication client on *.* to backup@localhost identified by 'backup';
    mysql> flush privileges;
    
    • 创建完全备份目录
      
    mkdir /mysql/backup-full -pv
    
    • 完全备份
    方式一:innobackupex --user=backup --password=backup --host=127.0.0.1 /mysql/backup-full/
    方式二:innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock  /mysql/backup-full/
    生成目录:/mysql/backup-full/2018-04-24_11-16-17/
    

    2)完全备份恢复

    • 停止服务删除数据目录
    systemctl stop mysqld
    rm -rf /data/mydata/*
    
    • 恢复
    innobackupex --apply-log /mysql/backup-full/2018-04-24_11-16-17/
    innobackupex --copy-back /mysql/backup-full/2018-04-24_11-16-17/
    
    • 授权与恢复
    chown -R mysql.mysql /data/mydata/
    systemctl start mysqld 
    

    (4)增量备份与恢复

    注意:增量备份目录我这里放在/mysql/目录下,完全备份目录放在/mysql/backup-full/目录下

    1)完全增量备份

    注意:增量备份目录我这里放在/mysql/目录下,完全备份目录放在/mysql/backup-full/目录下

    • 准备环境
    mysql> create database testdb;
    mysql> create table testdb.test(id int);
    mysql> insert into testdb.test values(1);
    
    • 完全备份:4月24日
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock  /mysql/backup-full/
    目录下生成:/mysql/backup-full/2018-04-24_12-15-09/
    
    • 第一次增量备份:4月25日增量备份1
      修改时间为4月25日:date -s "20180425"
    插入数据:mysql> insert into testdb.test values(2);
    

    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/ --incremental-basedir=完全备份

    基准是完全备份:/mysql/backup-full/2018-04-24_12-15-09/
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/  --incremental-basedir=/mysql/backup-full/2018-04-24_12-15-09/
    

    生成增量备份目录:/mysql/2018-04-25_00-01-14/

    • 第二次增量备份:4月26日增量备份2
      修改时间为4月26日:date -s "20180426"
    再次插入数据:mysql> insert into testdb.test values(3);
    

    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/ --incremental-basedir=上一次增量备份

    基准是上一次增量备份:/mysql/2018-04-25_00-01-14/
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql --incremental-basedir=/mysql/2018-04-25_00-01-14/
    

    生成增量备份目录:/mysql/2018-04-26_00-00-59/

    2)增量恢复

    • 停止服务删除数据
    systemctl stop mysqld
    rm -rf /data/mydata/* 
    
    • 数据恢复
      innobackupex --apply-log --redo-only 完整备份目录
      innobackupex --apply-log --redo-only 完整备份目录 --incremental-dir=第一次增量备份目录
      innobackupex --apply-log --redo-only 完整备份目录 --incremental-dir=第二次增量备份目录
      innobackupex --copy-back 完整备份
    innobackupex --apply-log --redo-only /mysql/backup-full/2018-04-24_12-15-09/
    innobackupex --apply-log --redo-only /mysql/backup-full/2018-04-24_12-15-09/  --incremental-dir=/mysql/2018-04-25_00-01-14/
    innobackupex --apply-log --redo-only /mysql/backup-full/2018-04-24_12-15-09/  --incremental-dir=/mysql/2018-04-26_00-00-59/
    innobackupex --copy-back /mysql/backup-full/2018-04-24_12-15-09/
    
    • 目录授权与启动mysql
    chown -R mysql.mysql /data/mydata/
    systemctl start mysqld
    

    (5)差异备份恢复

    注意:差异备份的基准永远根据上一次完全备份

    1)差异备份

    • 准备环境
    mysql> create database testdb;
    mysql> create table testdb.test(id int);
    mysql> insert into testdb.test values(1);
    
    • 完整备份:20180424(date -s "20180424")
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock  /mysql/backup-full/
    生成目录:ll /mysql/backup-full/2018-04-24_00-00-08/
    
    • 插入一条数据
    mysql> insert into testdb.test values(2);
    
    • 差异备份1:20180425(date -s "20180425")
      innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/ --incremental-basedir=完整备份目录
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/  --incremental-basedir=/mysql/backup-full/2018-04-24_00-00-08/
    生成目录:/mysql/2018-04-25_00-01-51/
    
    • 插入一条数据
    mysql> insert into testdb.test values(3);
    
    • 差异备份2:20180426(date -s "20180426")
      innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/ --incremental-basedir=完整备份目录
    innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backup --socket=/tmp/mysql.sock --incremental /mysql/  --incremental-basedir=/mysql/backup-full/2018-04-24_00-00-08/
    生成目录:/mysql/2018-04-26_00-00-15/
    

    2)差异备份恢复

    • 停止数据和删除数据目录
    systemctl stop mysqld
    rm -rf /data/mydata/*
    
    • 数据恢复
      innobackupex --apply-log --redo-only 完整备份目录
      innobackupex --apply-log --redo-only 完整备份目录 --incremental-dir=某个差异备份目录
      innobackupex --copy-back 完整备份目录
    innobackupex --apply-log --redo-only  /mysql/backup-full/2018-04-24_00-00-08/
    innobackupex --apply-log --redo-only /mysql/backup-full/2018-04-24_00-00-08/  --incremental-dir=/mysql/2018-04-26_00-00-15/
    innobackupex --copy-back /mysql/backup-full/2018-04-24_00-00-08/
    
    • 目录授权与启动数据库
    systemctl start mysqld
    chown -R mysql.mysql /data/mydata/
    systemctl start mysqld
    
  • 相关阅读:
    Cocos游戏引擎,让小保安成就大梦想
    Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码
    Java中字符串相等与大小比較
    Android四大基本组件之 Activity
    C++基础学习教程(五)
    HAWQ技术解析(八) —— 大表分区
    Jenkins 安装与使用--实例
    Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能
    Mycat(4):消息表mysql数据库分表实践
    谋哥:《App自推广》开篇之回到远古人类
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8934925.html
Copyright © 2011-2022 走看看