搭建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 status\G; mysql> show master status\G; *************************** 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 status\G; mysql> show slave status\G; *************************** 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.另外就是全量備份 + 增量備份(用硬盤定時拷貝了)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM