注意事项:

  1. 在MariaDB 10.3及更高版本中,建议使用Mariabackup替代 Percona XtraBackup的备份方法。在MariaDB 10.3及更高版本中,不支持 Percona XtraBackup,且mariabackup工具已默认安装。
  2. 数据库的默认存储引擎必须是InnoDB。
  3. 需要恢复的目标数据库数据目录必须为空,目标数据库服务恢复前处于关闭状态。
  4. 需要恢复的目标数据库INNODB的配置文件与备份文件里的backup-my.cnf里必须一致。
  5. 数据目录所属用户和所属组必须是mysql。
1. 创建备份的用户并给予合理的权限

-- 创建备份需要的用户并授权
CREATE USER mariabackup@'localhost' IDENTIFIED BY 'admin123';

GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'mariabackup'@'localhost';

FLUSH PRIVILEGES;

2.创建存储备份的目录并进行全量备份

注意:物理备份需要保证磁盘空间足够,物理备份拷贝1:1 

#创建备份存储位置
mkdir -p /backup/base
#备份
mariabackup -umariabackup -padmin123 --backup --target-dir=/backup/base

#验证下备份出来的数据  【预恢复】
mariabackup --prepare --target-dir=/backup/base

3.全量恢复

#停止数据库
systemctl stop mariadb
#清空数据目录
rm -rf /var/lib/mysql/*
#准备备份 预恢复 检查是否有错误
mariabackup --prepare --target-dir=/backup/base

#复制到数据目录,数据目录必须为空,保留目录
mariabackup --copy-back --target-dir=/backup/base

#移动到数据目录,数据目录必须为空,不保留目录
mariabackup --move-back --target-dir=/backup/base

#修改权限
chown -R mysql:mysql /var/lib/mysql
#启动数据库服务
systemctl start mariadb

4.增量备份

#第一次增量备份
mariabackup -umariabackup -pmypassword --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base
#查看目录
ll /backup/
total 8
drwx------ 6 root root 4096 Feb 28 09:29 base
drwx------ 6 root root 4096 Feb 28 09:31 inc1
#第二次增量备份
mariabackup -umariabackup -pmypassword --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1
#查看目录
ll /backup/
total 12
drwx------ 6 root root 4096 Feb 28 12:52 base
drwx------ 6 root root 4096 Feb 28 12:59 inc1
drwx------ 6 root root 4096 Feb 28 13:03 inc2
#查看数据大小
du -sh /backup/*
16M	/backup/base
3.0M	/backup/inc1
3.0M	/backup/inc2

5.增量备份后的恢复

#准备现有备份
mariabackup --prepare --target-dir=/backup/base
#合并第一次增量备份到完全备份
mariabackup --prepare --target-dir=/backup/base --incremental-dir=/backup/inc1
#合并第二次增量备份到完全备份
mariabackup --prepare --target-dir=/backup/base --incremental-dir=/backup/inc2
#然后再执行步骤3全量恢复

6.做主从备份

#查看binlog位点
cat /backup/base/xtrabackup_info

这里主要查看binlog文件名 位置

#配置mysql主从两步:

1)将数据目录传输到从库上,恢复数据,启动数据库后,登陆数据库,change master to 的sql语句中使用从上面获取的文件名和位置,需要在主库创建好用户并授权

sql命令示例:

主库上操作:grant replication slave on *.* to 'bakuser'@'192.168.100.100' identified by 'admin123'; flush privileges;

从库上操作:change master to master_host='192.168.100.101', master_user='bakuser', master_password='admin123', master_log_file='mysql-bin.002695', master_log_pos=577098276;  start slave;

2)从库上检查验证:show  slave status\G;

mariadb 10.3以下的版本没有自带备份工具,需要安装:


yum install MariaDB-backup