1. 程式人生 > >Windows上做MySQL5.5 主從熱備份

Windows上做MySQL5.5 主從熱備份

1、主從伺服器分別作以下操作:

  1. 版本一致
  2. 初始化表,並在後臺啟動mysql
  3. 修改root的密碼

2、修改主伺服器master:

修改my.ini

    [mysqld]
    log-bin=D:\log\mysql\mysql-bin     //[必須]啟用二進位制日誌
    server-id=222               //[必須]伺服器唯一ID,預設是1,一般取IP最後一段

    binlog-do-db=data           //要同步的資料庫
    binlog-do-db=data2
    binlog-do-db=data3

    binlog-ignore-db=mysql     
    binlog-ignore-db=mysql2
    //不同步的資料庫,如果指定了binlog-do-db這裡應該可以不用指定的

3、修改從伺服器slave:

修改my.ini

   [mysqld]
   log-bin=D:\log\mysql\mysql-bin     //[不是必須]啟用二進位制日誌
   server-id=11             //[必須]伺服器唯一ID,預設是1,一般取IP最後一段

   replicate-do-db=data     //要同步的資料庫

4、重啟兩臺伺服器的mysql

進入命令列模式

    net stop mysql
    net start mysql

5、在主伺服器上建立帳戶並授權slave:

# 給主機192.168.11.11
新增許可權,使用者名稱:mysync 密碼:AXSwMyx7Fl mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'192.168.11.11' identified by 'AXSwMyx7Fl';

6、登入主伺服器的mysql,查詢master的狀態

mysql>show master status;

7、先對主庫鎖表

FLUSH TABLES WITH READ LOCK;

8、配置從伺服器Slave:

# 注意不要斷開,107數字前後無單引號。
mysql>change master to master_host='121.40.175.39'
,master_port=7705,master_user='mysync',master_password='AXSwMyx7Fl',master_log_file='mysql-bin.000003',master_log_pos=107;
master_host:       主伺服器的IP
master_user:       主伺服器上用來同步的使用者名稱
master_password:   使用者的密碼
master_port:       主伺服器的埠,如果未曾修改,預設即可。
master_log_file:   主伺服器二進位制日誌檔案的名稱,填寫檢視主伺服器的master狀態時顯示的File的值
master_log_pos:    日誌的位置,填寫檢視主伺服器的master狀態時顯示的Position的值
# 啟動從伺服器複製功能
Mysql>start slave; 

9、檢查從伺服器複製功能狀態:

# 找到FilePosition 的值記錄下來;

mysql> show slave status\G
*************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.10.61        //主伺服器地址
              Master_User: mysync               //授權帳戶名,儘量避免使用root
              Master_Port: 3306                 //資料庫埠,部分版本沒有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600         //#同步讀取二進位制日誌的位置,大於等於Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes             //此狀態必須YES
              Slave_SQL_Running: Yes            //此狀態必須YES
               ......

注:Slave_IO及Slave_SQL程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

10、解鎖主庫

mysql> unlock tables;

11、注意點總結

(1) 變數最好放在[mysqld]段下,放到其他段下可能會有錯誤發生

(2) 在5.5的版本里不允許通過在從配置檔案中新增maste-host等變數,要通過控制檯 change master to 來設定

(3) 清理之前的主從備份
    mysql>stop slave;
    mysql>reset slave;

(4) MySQL 5.65.5之間做同步時,5.6的binlog_checksum預設設定的是crc32,
    而5.5 或者更早的版本預設值是None,所以要設定5.6上的 binlog_checksum=none