zoukankan      html  css  js  c++  java
  • 搭建mysql主从复制和删库数据恢复策略

    搭建主从复制

    主机:
    
    [mysqld] 下增加
    vim /etc/my.cnf
    ## 设置 server_id,一般设置为 IP
    server_id=8
    # # 复制过滤:需要备份的数据库,输出 binlog
    binlog-do-db=testdb
    #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
    binlog-ignore-db=mysql
    # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用
    log-bin=master-log-1
    binlog_cache_size  =  1M
    # 主从复制的格式(mixed,statement,row,默认格式是 statement)
    binlog_format=mixed
    # 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
    expire_logs_days=7
    #slave_skip_errors=1062
    #      #  relay_log 配置中继日志
    #relay_log=edu-mysql-relay-bin
    #log_slave_updates 表示 slave 将复制事件写进自己的二进制日志
    #log_slave_updates=1
     # 防止改变数据(除了特殊的线程)
    #read_only=1
    
    然后在主机里创建一个用户授予同步权限,专门用来进行复制:
    GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'sync_user'@'192.168.0.%' IDENTIFIED BY 'root';
    
    然后show master statusG;
    mysql> show master statusG;
    *************************** 1. row ***************************
                 File: master-log-1.000002
             Position: 584
         Binlog_Do_DB: testdb
    
    从机:
    ## 设置 server_id,一般设置为 IP
    server_id=8
    # # 复制过滤:需要备份的数据库,输出 binlog
    binlog-do-db=testdb
    #  #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
    binlog-ignore-db=mysql
    #   # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用
    log-bin=master-log-1
    binlog_cache_size  =  1M
    #     # 主从复制的格式(mixed,statement,row,默认格式是 statement)
    binlog_format=mixed
    #     # 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
    expire_logs_days=7
    
    然后重启, 登录进去后配置主从关系组. master_log_file实时取上面的show master status 的File字段的值, master_log_pos 取Position的值,然后执行下面的命令:
    mysql > stop slave;
    mysql > change master to master_host='192.168.0.7',master_user='sync_user',master_password='root',master_log_file='master-log-1.000002',master_log_pos=120 ;
    mysql > start slave;
    
    最后查看 show slave statusG;
    mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.0.7
                      Master_User: sync_user
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master-log-1.000002
              Read_Master_Log_Pos: 120
                   Relay_Log_File: mysqld-relay-bin.000002
                    Relay_Log_Pos: 286
            Relay_Master_Log_File: master-log-1.000002
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    
    其中 这两项都为Yes的话那就没什么问题了
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    直接开始主从同步吧



    db快速回滚恢复,防止发生删库跑路.

       一旦发生删库或其他危险性操作, 比如update不带条件式的修改(你又没开update保护), 那么跑路肯定不是第一选项的, 你起码得先尝试补救措施啊.

    @1: 一小时延迟从库
      一小时间隔后重新连上主机把所有的数据全部同步过来,然后立马断开,这个从库会与主库保持1个小时的数据差距. 在搭好的主从同步的从机上执行: 
       mysql> stop slave;
       mysql> change master to master_delay = 1800; #1800s后才同步 
       mysql> start slave; 
      但这个有个缺点就是: 从库在连上主库进行同步的一小段时间内刚好发生了删库事故或其他update不带条件的灾难,这个时候根本无法恢复. 因此最好开设双份的1小时延迟同步: 即对第一台从机执行一次延时1小时的命令change master to master_delay=3600; 
      过过半小时后再对另一台从机执行change master to master_delay=3600;
    那么现在这两台从机就有半小时的同步间隔时间,即使事故发生在第一台从机连接的时候,仍旧有半小时的补救时间. @2.另外就是全量备份 + 增量备份(用硬盘定时拷贝了)

     

  • 相关阅读:
    AC自动机模板
    HDU 3065 病毒侵袭持续中(AC自动机)
    HDU 2896 病毒侵袭(AC自动机)
    HDU 2222 Keywords Search (AC自动机模板题)
    HDU 1113 Word Amalgamation
    HDU 1171 Big Event in HDU(母函数或01背包)
    37.Qt网络与通信
    2.Matlab数值数组及其运算
    36.QT地图
    35.QT蝴蝶飞舞
  • 原文地址:https://www.cnblogs.com/zyp221314/p/9192782.html
Copyright © 2011-2022 走看看