注意事项:
-
在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 statusG;
mariadb 10.3以下的版本没有自带备份工具,需要安装:
yum install MariaDB-backup



