备份
第一步:
服务器加读锁,并切换日志;记录二进制日志文件名和 position
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH LOGS;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 161342 |
| mariadb-bin.000002 | 23480 |
| mariadb-bin.000003 | 111391 |
| mariadb-bin.000004 | 38801 |
| mariadb-bin.000005 | 245 |
+--------------------+-----------+
5 rows in set (0.00 sec)
第二步:
创建快照:
lvcreate -L 3G -n data_snap -s -p r /dev/mariadb/data
第三步:
解锁服务器:
MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
挂载快照逻辑卷(xfs文件系统需要加 nouuid,norecovery):
mount -o nouuid,norecovery /dev/mariadb/data_snap /mnt
第四步:
打包存档快照后内容到备份目录
[root@mariadb-server ~]# tar Jcf /backup/data_backup_all_$(date +%F).tar.xz /mnt/*
[root@mariadb-server ~]# ls /backup/
data_backup_all_2020-03-31.tar.xz
第五步:
cp命令直接备份二进制日志
恢复
第一步:
复制二进制日志文件到需要恢复的主机上:
[root@node6 ~]# scp /mariadb/bin_log/mariadb-bin.000005 172.16.0.16:/root
导出二进制日志文件为sql脚本:
[root@node6 ~]# mysqlbinlog --start-position=245 mariadb-bin.000005 > bin.sql
解压数据库文件:
[root@node6 ~]# tar xvf data_backup_all_2020-03-31.tar.xz -C /var/lib/mysql
第二步:
修改配置文件,让用户暂时无法访问数据库,并启动数据库:
[root@node6 ~]# vim /etc/my.cnf
[mysqld]
# 添加一行禁用网络
skip-networking
[root@node6 ~]# systemctl restart mariadb.service
导入sql脚本:
[root@node6 /var/lib/mysql]# mysql -uroot -pcentos < /root/bin.sql
第三步:
删除skip-networking,并重启服务
[root@node6 ~]# vim /etc/my.cnf
[mysqld]
[root@node6 ~]# systemctl restart mariadb.service
网友评论