• ADADADADAD

    两个场景下Mysqldump数据库备份恢复[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:13:21

    作者:文/会员上传

    简介:

    场景一    昨天凌晨2点做过一次完全备份,白天正常使用,该下班的时候,好巧啊!硬盘坏了。不过幸运的是做过备份并且二进制日志和数据库分开存放1、建立数据库并开启二进制日志

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    场景一

        昨天凌晨2点做过一次完全备份,白天正常使用,该下班的时候,好巧啊!硬盘坏了。不过幸运的是做过备份并且二进制日志和数据库分开存放

    1、建立数据库并开启二进制日志

    建立用于存放二进制日志的文件夹,修改文件夹属组属主使mysql用户可以读

    二点钟做完全备份,备份完看下是否备份成功

    mysqldump -A -F --single-transaction --master-data=2 > /backup/fullbak`date +%F`.sql

    less /backup/fullbak2019-07-11.sql    #--master-data选项在备份时自动记录bin-log的位置

    模拟2点到18点的数据修改

    2、存放数据库的硬盘损坏,所有数据库丢失

    3、还原

    故障恢复中可以让用户暂停访问数据库

    vi /etc/my.cnf  #添加一行

    systemctl restart mariadb

    查看当前二进制日志的位置

    从二进制日志中获取2点到18点数据

    [root@swh ~]mysqlbinlog  --start-position=245 /data/logbin/mysql-bin.000003 > /backup/inc.sql[root@swh ~]#mysqlbinlog  /data/logbin/mysql-bin.000004 >> /backup/inc.sql[root@swh ~]#mysqlbinlog  /data/logbin/mysql-bin.000005 >> /backup/inc.sql[root@swh ~]#mysqlbinlog  /data/logbin/mysql-bin.000006 >> /backup/inc.sql


    由于恢复数据库会产生大量的日志,可以临时关闭二进制日志

    MariaDB [(none)]> set sql_log_bin=off;MariaDB [(none)]> source  /backup/fullbak2019-07-11.sql  #导入完全备份MariaDB [(none)]> source  /backup/inc.sql     #导入增量备份MariaDB [(none)]> set sql_log_bin=on;恢复后检查数据库,恢复访问MariaDB [hellodb]> select * from students;
    vi /etc/my.cnf  #去掉skip-networking

    场景二

        凌晨2点做过一次完全备份,白天使用过程中,某同事误删除数据库,当时并未发现,直到下班的时候出故障了

    1、数据库完全备份

    mysqldump -A -F --single-transaction --master-data=2 > /backup/fullbak`date +%F`.sql

    less /backup/fullbak2019-07-11.sql       #--master-data选项在备份时自动记录bin-log的位置

    2、表被删除,但是没有发现,继续使用,在18点发现问题

    3、还原

    故障恢复中可以让用户暂停访问数据库

    vi /etc/my.cnf  #添加一行

    systemctl restart mariadb

    查看当前日志的位置

    根据备份文件中记录的日志位置,从二进制日志获取增量

    [root@swh ~]#mysqlbinlog  --start-position=245 /data/logbin/mysql-bin.000013 > /backup/inc.sql[root@swh ~]#cp /backup/inc.sql  /backup/inc.sql.bak    #修改下备份下[root@swh ~]#vi /backup/inc.sql   #从二进制日志中找出删表语句并删除,剩下的日志就是使用的日志
    [root@swh ~]#rm -rf /var/lib/mysql/*    #可以选择删除所有数据库恢复,或者直接恢复增量备份[root@swh ~]#systemctl restart mariadbMariaDB [(none)]> set sql_log_bin=off;MariaDB [(none)]> source  /backup/fullbak2019-07-11.sqlMariaDB [(none)]> source /backup/inc.sqlMariaDB [(none)]> set sql_log_bin=on;

    检查数据

    vi /etc/my.cnf  #去掉skip-networking

    虽然可以恢复但是花费的时间成本或许是相当大的,生产环境还需慎重

    两个场景下Mysqldump数据库备份恢复.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载