在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周日用完整备份,周一到周六实用增量备份。
下面是采用Xtrabackup备份的过程。(从安装到如何备份)
一、安装Xtrabackup
##>> 安装percona xtrabackup
$ wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
$ yum -y install percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
##>> 验证是否安装成功 查看版本
$ xtrabackup --version
xtrabackup: recognized server arguments: --datadir=/var/lib/mysql
xtrabackup version 2.4.28 based on MySQL server 5.7.40 Linux (x86_64) (revision id: 44a8f7b)
##>> 设置备份用户
$ mysql -uroot -p
password:
mysql> CREATE USER 'backup'@'localhost' IDENTIFIED BY '******';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'backup'@'localhost';
二、全量备份
##>> 开始备份
$ mkdir -p /data/mysql/backup/ #创建目录,此目录为备份存储的地方
$ innobackupex --defaults-file=/etc/my.cnf \
--user=backup --password='******' \
/data/mysql/backup/
$ mysql -uroot -p
password:
mysql> DROP DATABASE class;
$ systemctl stop mysqld
$ rm -rf /var/lib/mysql/*
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --use-memory=1G --apply-log /data/backup/2023-08-09_21-07-16/
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --copy-back /data/backup/2023-08-09_21-07-16/
$ chown -R mysql:mysql /var/lib/mysql
$ systemctl start mysqld
三、增量备份
##>> 增量备份
$ mkdir -p /data/mysql/backup/increments
###>>> 模拟数据增加的操作
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --password='******' \
--incremental-basedir=/data/backup/2023-08-09_21-07-16/ --incremental /data/backup/increments/
$ mysql -uroot -p'******'
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --apply-log --redo-only /data/backup/2023-08-09_21-07-16/
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --apply-log --redo-only /data/backup/2023-08-09_21-07-16/ --incremental-dir=/data/backup/increments/2023-08-09_21-28-40/
$ systemctl stop mysqld
$ rm -rf /var/lib/mysql/*
$ innobackupex --defaults-file=/etc/my.cnf --user=backup --copy-back /data/backup/2023-08-09_21-07-16/
$ chown -R mysql:mysql /var/lib/mysql
$ systemctl start mysqld