SQL数据库备份管理

数据库备份简介

  1. 备份目标:数据的一致性、服务的可用性
  2. 备份技术
    (1)物理备份/冷备份
    直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本,使用这种方法拷贝数据,优点快,缺点服务停止。
tar,cp,scp

(2)逻辑备份/热备份
备份的是建表、建库、插入等操作所执行SQL语句(DDL、DML、DCL),适用于中小型数据库,缺点是效率相对较低。

mysqldump,mydumper

(3)备份模式

  • 完全备份
  • 增量备份
    连续恢复
    特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
  • 差异备份
    跳跃恢复
    特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。

全量备份&增量备份

  1. 数据库备份工具percona安装
  • percona-xtrabackup24(mysql 57)
  • percpna-xtrabackup80(mysql 80)
    (1) 安装yum仓库
  • 下载yum仓库
wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y percona-release-latest.noarch.rpm
  • 查看yum仓库安装是否成功
yum repolist

(2)安装XtraBackup命令

yum install percona-xtrabackup-80 -y

注意:xtrabackup8.0只支持mysql 8.0以上的版本,mysql 5.7或以下需要使用xtrabackup 8.0以下的版本
(3)全备

mkdir -p /data/backup/
xtrabacup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/base/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check

(4)恢复

  • 删库
systemctl stop mysqld
rm -rf /var/lib/mysql/*
  • 准备备份文件
xtrabackup --prepare --target-dir=/data/backup/base/
  • 开始恢复
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
  • 授权
chown -R mysql.mysql /var/lib/mysql
  • 重启并登陆数据库
systemctl restart mysqld
mysql -uroot -p"旧密码"

(5)增备1

  • 数据修改
insert into school.t3 values (333);
  • 开始增量备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc1/ --incremental-basedir=/data/backup/base/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check

(6)增备2

  • 数据修改
insert into school.t3 values (444);
  • 开始增量备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc2/ --incremental-basedir=/data/backup/inc1/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check

(7)恢复增量备份
注意:最后一次把增量备份恢复到全部不要加 --apply-log-only

xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc1/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc2

这几步 --defaults-file=""选项可以不用加
(8)恢复到数据目录
全库级恢复要先停止数据库并清空数据目录

xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
chown -R mysql.mysql /var/lib/mysql

差异备份

  1. 全备
mkdir -p /data/backup
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/base/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check
  1. 增备1
    (1)数据修改
    (2)备份数据
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc1/ --incremental-basedir=/data/backup/base/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check
  1. 增备2
    (1)数据修改
    (2)备份数据
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc2/ --incremental-basedir=/data/backup/base/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check
  1. 恢复增量备份
    注意: 注意最后一次把增量备份恢复到全部不要加 --apply-log-only
    (1)应用完整备份
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base/

(2)应用增量

xtrabckup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup/base/ --incremental-dir=/data/backup/inc2
  1. 恢复到数据目录
    (1)停止数据库,删除数据
systemctl stop mysqld
rm -rf /var/lib/mysql/*

(2)开始恢复

xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base/
chown -R mysql.mysql /var/lib/mysql

压缩备份

  1. 压缩
xtrabackup --defaults-file=/etc/my.cnf --backup --compress --target-dir=/data/backup/compressed/ -uroot -p密码 -H localhost -P 3306 --no-server-version-check

如果要加速压缩,可以使用--compress-threads,--compress-threads=4 使用四个线程同时进行压缩。
2. 解压缩
注意:解压缩需要有qpress命令,可以通过yum安装

xtrabackup --defaults-file=/etc/my.cnf --decompress --target-dir=/data/backup/compressed/

注释:

  • --parallel可与--decompress选项一起使用以同时解压缩多个文件
  • 使用--decompress压缩的备份集在准备备份之前需要解压,解压工具是qpress。解压后的原文件不会被删除,可以使用--remove-original选项清除。
  1. 准备备份文件
xtrabackup --prepare --target-dir=/data/backup/comprssed
  1. 删库
  2. 开始恢复
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/compressed
posted @ 2024-06-25 07:07  小肚腩吖  阅读(3)  评论(0编辑  收藏  举报