---
title: 增量备份与恢复
description: "1. 在主库创建备份目录。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0041.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0041.html
indexId: 22e808384dcbd1bae4c7566289b0bab2d3be00b08424542c82248141f691eb2780
---
# 增量备份与恢复

1. 在主库创建备份目录。
  1 2 3 4 5 6 7 8 9 10 mkdir -p /data/xbackup/full/ mkdir -p /data/xbackup/inc1/ mkdir -p /data/xbackup/inc2/ ll /data/xbackup/ ll /data/xbackup/full/ ll /data/xbackup/inc1/ ll /data/xbackup/inc2/ rm -rf /data/xbackup/full/* rm -rf /data/xbackup/inc1/* rm -rf /data/xbackup/inc2/*

2. 在主库上备份主库的数据（增量备份，简称增备）。

  a. 进入XtraBackup的bin目录。

    - xtrabackup-8.0.13版本：
      1 cd /usr/local/xtrabackup-8.0.13/bin/


    - xtrabackup-2.4.20版本：
      1 cd /usr/local/xtrabackup-2.4.20/bin/

  b. 创建全量备份。
    1 ./xtrabackup --user=root --password=123456 --port=3306 --host=192.168.220.58 --socket=/data/mysql/run/mysql.sock --parallel=16 --backup --target-dir=/data/xbackup/full/

  c. 创建第一次增量备份。
    1 ./xtrabackup --backup --user=root --password=123456 --port=3306 --socket=/data/mysql/run/mysql.sock --host=192.168.220.58 --target-dir=/data/xbackup/inc1/ --incremental-basedir=/data/xbackup/full/

  d. 创建第二次增量备份。
    1 ./xtrabackup --backup --user=root --password=123456 --port=3306 --socket=/data/mysql/run/mysql.sock --host=192.168.220.58 --target-dir=/data/xbackup/inc2/ --incremental-basedir=/data/xbackup/inc1/

  e. 查看全量备份xtrabackup_checkpoints中的lsn（log sequence number，日志序列号）。
    1 cat /data/xbackup/full/xtrabackup_checkpoints

  f. 查看全量备份xtrabackup_binlog_info中的binlog位置。
    1 cat /data/xbackup/full/xtrabackup_binlog_info

  g. 查看增量备份xtrabackup_checkpoints中的lsn（log sequence number，日志序列号）。
    1 2 cat /data/xbackup/inc1/xtrabackup_checkpoints cat /data/xbackup/inc2/xtrabackup_checkpoints

  h. 查看增量备份xtrabackup_binlog_info中的binlog位置。
    1 2 cat /data/xbackup/inc1/xtrabackup_binlog_info cat /data/xbackup/inc2/xtrabackup_binlog_info

3. 在主库查看备份数据。
  1 2 3 4 5 6 7 8 ll /data/xbackup/ ll /data/xbackup/full/ ll /data/xbackup/inc1/ ll /data/xbackup/inc2/ du -sh /data/xbackup/ du -sh /data/xbackup/full/ du -sh /data/xbackup/inc1/ du -sh /data/xbackup/inc2/

4. 在主库把备份的主库数据拷贝到从库。

  a. 在从库创建备份目录。
    1 2 3 4 5 6 7 8 9 10 mkdir -p /data/xbackup/full/ mkdir -p /data/xbackup/inc1/ mkdir -p /data/xbackup/inc2/ ll /data/xbackup/ ll /data/xbackup/full/ ll /data/xbackup/inc1/ ll /data/xbackup/inc2/ rm -rf /data/xbackup/full/* rm -rf /data/xbackup/inc1/* rm -rf /data/xbackup/inc2/*

  b. 在主库把备份的主库数据拷贝到从库。
    1 2 3 scp -r /data/xbackup/full/* root@192.168.220.152:/data/xbackup/full/ scp -r /data/xbackup/inc1/* root@192.168.220.152:/data/xbackup/inc1/ scp -r /data/xbackup/inc2/* root@192.168.220.152:/data/xbackup/inc2/

  c. 在从库查看备份数据。
    1 2 3 4 5 6 7 8 ll /data/xbackup/ ll /data/xbackup/full/ ll /data/xbackup/inc1/ ll /data/xbackup/inc2/ du -sh /data/xbackup/ du -sh /data/xbackup/full/ du -sh /data/xbackup/inc1/ du -sh /data/xbackup/inc2/

5. 在从库的服务器上停止从库的MySQL进程。
  1 2 3 ps -ef | grep mysql /usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock ps -ef | grep mysql

6. 在从库把备份的主库数据恢复到从库（增备恢复）。

  a. 进入XtraBackup的bin目录。

    - xtrabackup-8.0.13版本：
      1 cd /usr/local/xtrabackup-8.0.13/bin/


    - xtrabackup-2.4.20版本：
      1 cd /usr/local/xtrabackup-2.4.20/bin/

  b. 准备全量备份。
    1 2 ./xtrabackup --prepare --apply-log-only --target-dir=/data/xbackup/full/ ll /data/xbackup/full/

    出现completed OK，则说明准备完成。

  c. 将第一次增量备份合并到全量备份。
    1 2 ./xtrabackup --prepare --apply-log-only --target-dir=/data/xbackup/full/ --incremental-dir=/data/xbackup/inc1/ ll /data/xbackup/full/

  d. 将第二次增量备份合并到全量备份。

```
./xtrabackup --prepare --target-dir=/data/xbackup/full/ --incremental-dir=/data/xbackup/inc2/
ll /data/xbackup/full/
```


  e. 恢复数据。
    1 rsync -avrP /data/xbackup/full/ /data/mysql/data/

7. 启动数据库。

```
ps -ef | grep mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
```


8. 登录数据库并查看数据。
  1 2 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock show databases;
