美文网首页
实验:基于LVM快照,用cp命令备份数据库,结合binlog恢复

实验:基于LVM快照,用cp命令备份数据库,结合binlog恢复

作者: Simon_Ye | 来源:发表于2020-03-31 20:35 被阅读0次

    备份

    第一步:

    服务器加读锁,并切换日志;记录二进制日志文件名和 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
    

    相关文章

      网友评论

          本文标题:实验:基于LVM快照,用cp命令备份数据库,结合binlog恢复

          本文链接:https://www.haomeiwen.com/subject/frcguhtx.html