注意事项:
在MariaDB 10.3及更高版本中,建议使用Mariabackup替代 Percona XtraBackup的备份方法。在MariaDB 10.3及更高版本中,不支持 Percona XtraBackup,且mariabackup工具已默认安装。
数据库的默认存储引擎必须是InnoDB。
需要恢复的目标数据库数据目录必须为空,目标数据库服务恢复前处于关闭状态。
需要恢复的目标数据库INNODB的配置文件与备份文件里的backup-my.cnf里必须一致。
数据目录所属用户和所属组必须是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 -pTrs@admin123 --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