• mysql增量恢复的一个实例操作


    通过防火墙禁止web等应用向主库写数据或者锁表,让主库暂时停止更新,然后进行恢复

    模拟整个场景

    1、登录数据库

    [root@promote 3306]# mysql -uroot -S /data/3306/mysql.sock
    
    创建一个库,并创建一个表,里面适当的加入一些初始数据
    insert into nima(id,name) values(4,'hahh');
    

    2、将我本机的时间设置为早上0点 

    [root@promote ~]# date -s '2017/7/27'
    2017年 07月 27日 星期四 00:00:00 CST
    

    3、完全备份

    [root@promote 3306]# mysqldump -uroot -S /data/3306/mysql.sock -F -B --master-data=2 test >/opt/test.sql
    
    [root@promote 3306]# ll
    总用量 36
    drwxr-xr-x. 5 mysql mysql 4096 7月  20 15:15 data
    -rw-r--r--. 1 root  root  1897 7月  18 20:11 my.cnf
    -rwx------. 1 root  root  1299 7月  18 20:29 mysql
    -rw-rw----. 1 mysql mysql 1047 7月  27 00:02 mysql-bin.000002
    -------------------------------------------------------------------------------备份点  //最好提前看一下从哪里开始备份的,就是查看新的bin-log
    -rw-rw----. 1 mysql mysql  107 7月  27 00:02 mysql-bin.000003    --------------新内容
    -rw-rw----. 1 mysql mysql   56 7月  27 00:02 mysql-bin.index
    -rw-rw----. 1 mysql mysql    6 7月  20 15:15 mysqld.pid
    -rw-r-----. 1 mysql root  4184 7月  20 15:15 mysql_oldboy3306.err
    srwxrwxrwx. 1 mysql mysql    0 7月  20 15:15 mysql.sock
    

    4、在创建的表中加入新的数据

    没加入数据前
    mysql> select * from nima;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    1 | 尼玛   |
    | NULL | hahh   |
    |    3 | hahh   |
    |    4 | hahh   |
    +------+--------+
    4 rows in set (0.00 sec)
    
    
    
    mysql> insert into nima(id,name) values(100,'hahh');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into nima(id,name) values(101,'hahh');
    
    mysql> select * from nima;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    1 | 尼玛   |
    | NULL | hahh   |
    |    3 | hahh   |
    |    4 | hahh   |
    |  100 | hahh   |
    |  101 | hahh   |
    +------+--------+
    6 rows in set (0.00 sec)
    

    5、删除创建的数据库

    mysql> drop database test;
    Query OK, 1 row affected (0.07 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    3 rows in set (0.00 sec)
    

    6、此时就出现了问题,test库没有了,然后去查看bin-log  

    [root@promote 3306]# mysqlbinlog mysql-bin.000003
    
    # at 511
    #170727  0:08:56 server id 1  end_log_pos 592 	Query	thread_id=3	exec_time=0	error_code=0
    SET TIMESTAMP=1501085336/*!*/;
    drop database test   <==发现了是此条语句的问题
    /*!*/;
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */;
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    

    7、此时刷新一下bin-log

     

    [root@promote 3306]# mysqladmin -uroot -S /data/3306/mysql.sock flush-logs
    [root@promote 3306]# ll
    总用量 40
    drwxr-xr-x. 4 mysql mysql 4096 7月  27 00:08 data
    -rw-r--r--. 1 root  root  1897 7月  18 20:11 my.cnf
    -rwx------. 1 root  root  1299 7月  18 20:29 mysql
    -rw-rw----. 1 mysql mysql 1047 7月  27 00:02 mysql-bin.000002
    -rw-rw----. 1 mysql mysql  635 7月  27 00:18 mysql-bin.000003
    ---------------------------------------------------------------------------需要恢复03的内容,然后04就是新内容
    -rw-rw----. 1 mysql mysql  107 7月  27 00:18 mysql-bin.000004
    -rw-rw----. 1 mysql mysql   84 7月  27 00:18 mysql-bin.index
    -rw-rw----. 1 mysql mysql    6 7月  20 15:15 mysqld.pid
    -rw-r-----. 1 mysql root  4184 7月  20 15:15 mysql_oldboy3306.err
    srwxrwxrwx. 1 mysql mysql    0 7月  20 15:15 mysql.sock
    

    8、开始恢复手续

      

    [root@promote 3306]# cp mysql-bin.000003 /tmp
    [root@promote 3306]# cd /tmp
    [root@promote tmp]# ll
    总用量 4
    -rw-r-----. 1 root root 635 7月  27 00:20 mysql-bin.000003
    drwx------. 2 root root  24 6月  22 13:45 ssh-sq615X9ctBqx
    drwx------. 3 root root  16 6月  22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-colord.service-FFHLPi
    drwx------. 3 root root  16 6月  22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-cups.service-jm0Csy
    drwx------. 3 root root  16 6月  22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-rtkit-daemon.service-90fMAb
    drwx------. 3 root root  16 6月  22 13:44 systemd-private-d13e6e6b8a2d4dc6a5a816c2cfd8a0be-vmtoolsd.service-HfIX2Y
    [root@promote tmp]# mysqlbinlog -d test mysql-bin.000003 >bin.sql
    [root@promote tmp]# vim bin.sql //删除有问题的语句
    
    [root@promote tmp]# mysql -uroot -S /data/3306/mysql.sock < /opt/test.sql   //恢复全备
    [root@promote tmp]# mysql -uroot -S /data/3306/mysql.sock test <bin.sql     //恢复增量
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)
    
    mysql> use test;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select * from nima;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    1 | 尼玛   |
    | NULL | hahh   |
    |    3 | hahh   |
    |    4 | hahh   |
    |  100 | hahh   |
    |  101 | hahh   |
    +------+--------+
    6 rows in set (0.00 sec)
    
    mysql> 
    恢复结束
    

      

     

  • 相关阅读:
    Android Packaging Problem
    Dedecms中{dede:type}标签支持调用父级栏目名称
    DeDecms远程写入漏洞webshell (dedecms漏洞)
    Dedecms 目标仿站的学习视频
    关于前端JS走马灯(marquee)总结
    浏览器端如何使用VConsole.js调试代码?
    Firefox中input元素,不能重新获取焦点函数focus()
    Centos7 systemctl添加自定义系统开机服务
    织梦cms 内容模型 option下拉框 value 分离
    wdcp如何添加反向代理功能
  • 原文地址:https://www.cnblogs.com/bill2014/p/7243832.html
Copyright © 2020-2023  润新知