Freebsd 8.3 下Mysql 主從配置

shawnloong發表於2015-06-25
Freebsd 8.3 下Mysql 主從配置
複製介紹:摘自 MYSQL 參考手冊
MySQL支援單向、非同步複製,複製過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。(這與同步複製可以進行對比,同步複製是MySQL簇的一個特徵—參見第17章:MySQL簇)。主伺服器將更新寫入二進位制日誌檔案,並維護檔案的一個索引以跟蹤日誌迴圈。這些日誌可以記錄傳送到從伺服器的更新。當一個從伺服器連線主伺服器時,它通知主伺服器從伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖並等待主伺服器通知新的更新。

如果你想要設定鏈式複製伺服器,從伺服器本身也可以充當主伺服器。

請注意當你進行復制時,所有對複製中的表的更新必須在主伺服器上進行。否則,你必須要小心,以避免使用者對主伺服器上的表進行的更新與對從伺服器上的表所進行的更新之間的衝突。

單向複製有利於健壯性、速度和系統管理:

·         主伺服器/從伺服器設定增加了健壯性。主伺服器出現問題時,你可以切換到從伺服器作為備份。

·         透過在主伺服器和從伺服器之間切分處理客戶查詢的負荷,可以得到更好的客戶響應時間。SELECT查詢可以傳送到從伺服器以降低主伺服器的查詢處理負荷。但修改資料的語句仍然應傳送到主伺服器,以便主伺服器和從伺服器保持同步。如果非更新查詢為主,該負載均衡策略很有效,但一般是更新查詢。

·     使用複製的另一個好處是可以使用一個從伺服器執行備份,而不會干擾主伺服器。在備份過程中主伺服器可以繼續處理更新

1.環境
兩臺裝好的MYSQL 版本最好一致
mysql> select version(),current_date();
+------------+----------------+
| version()  | current_date() |
+------------+----------------+
| 5.5.32-log | 2013-07-18     |
+------------+----------------+
1 row in set (0.00 sec)

OS:
mail# uname -a
FreeBSD mail.test.com 8.3-RELEASE FreeBSD 8.3-RELEASE #0: Mon Apr  9 21:23:18 UTC 2012     root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

主:192.168.20.199 從:192.168.20.222

2. 配置主伺服器
修改配置檔案
ee /usr/local/etc/my.cnf
server-id       = 1 #主資料庫ID一般預設即可
log-bin=mysql-bin #log程式
binlog_format=mixed  #binlog模式
三種模式來實現:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)
如果binlog採用了 MIXED 模式,那麼在以下幾種情況下會自動將binlog的模式由 SBR 模式改成 RBR 模式。
當DML語句更新一個NDB表時
當函式中包含 UUID() 時
2個及以上包含 AUTO_INCREMENT 欄位的表被更新時
行任何 INSERT DELAYED 語句時
用 UDF 時
expire_logs_days=5 #log過期時間建議設定一個
binlog-ignore-db = mysql #忽略的db,這裡可以寫多行
binlog-ignore-db = information_schema
replicate-do-db = extmail #複製的資料庫

修改完後重啟mysql
/usr/local/etc/rc.d/mysql-server restart

授權REPLICATION SLAVE
登入主庫
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.20.222' IDENTIFIED BY 'Abc123Q';
FLUSH TABLES WITH READ LOCK;
退出重新備份資料庫,將備份資料庫複製到從庫
mail# mysqldump -u root -p --all-databases --lock-tables=false > all12.sql
scp -P 22 all12.sql root@192.168.20.222:/home/root
檢視主庫狀態

mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000001 |      877 |              | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
1 row in set (0.00 sec)
解鎖資料表
mysql>UNLOCK TABLES;

3.從伺服器配置
mail# ee /usr/local/etc/my.cnf
修改以下引數
server-id       = 2 
#注此id不要和主庫一樣 否則會報"these ids must be different for replication to work"此類的錯誤
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days=5
 
匯入資料
mysql -u root -p

重啟mysql
/usr/local/etc/rc.d/mysql-server restart

進入mysql配置mysql slave
mysql -u root -p

change master to master_host='192.168.20.199', master_port=3306, master_user='slave’, master_password='Abc123Q’, master_log_file=’mysql-bin.000001', master_log_pos=373;
#此位置master_log_pos和主庫一致
啟動 slave程式。
mysql>start slave;

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.20.199
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 877
               Relay_Log_File: mail-relay-bin.000002
                Relay_Log_Pos: 757
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 877
              Relay_Log_Space: 912
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)

ERROR:
No query specified
檢查是否error,如果有error先停止slave stop slave,然後修改完後start slave




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24486203/viewspace-1712428/,如需轉載,請註明出處,否則將追究法律責任。

相關文章