mysql分佈式集羣使用-主從複製

1. 框架程序的支持,如Thinkphp、Yii2。

> TP的支持文檔:http://document.thinkphp.cn/manual_3_2.html#distributed_database

2. 數據庫的配置,使其支持主從或主主關係拷貝。

> 主從複製(亦叫 讀寫分離)
> 主主複製(亦叫 互爲主從,主主互備或雙機熱備)

主從複製,亦可稱爲讀寫分離

假設:
主服務器 -> 192.168.1.110
從服務器 -> 192.168.1.111

  • 主服務器配置

    • A) 修改配置文件 (開啓bin-log)

    • B) 創建授權帳號

  • 從服務器配置

    • A) 修改配置文件 (另置server-id)

    • B) 使用命令開啓slave

    • C) 檢查從服務器複製功能狀態

主服務器配置

A) 修改配置文件 (開啓bin-log)

開啓日誌記錄文件

vim /etc/my.cnf
server-id=1      #[必須]服務器唯一ID,同步的時候,根據此ID判斷,如果server_id是自己就不需要同步
log-bin=mysql-bin   #[必須]啓用二進制日誌
sync_binlog=1    #sync_binlog=n,每n次寫入binlog緩存時交換到硬盤裏。默認爲0,就是根據系統週期進行交換,效率最高,但安全性低,如果要做同步,設置爲1。
  
#保存後,重啓數據庫
service mysqld restart

B) 創建授權帳號

mysql>GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456'; //此處可用具體客戶端IP代替,如192.168.1.111,加強安全。
mysql>flush privileges;  

C) 查看MASTER狀態

mysql>show master status;  
+------------------+----------+--------------+------------------+  
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
+------------------+----------+--------------+------------------+  
| mysql-bin.000004 |      308 |              |                  |  
+------------------+----------+--------------+------------------+  
1 row in set (0.00 sec)  
注:執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化

從服務器配置

A) 修改配置文件 (另置server-id)

vim /etc/my.cnf
server-id=2      #[必須]服務器唯一ID
  
#保存後,重啓數據庫
service mysqld restart

B) 使用命令開啓slave

mysql>change master to master_host='192.168.1.110',master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;  
mysql>start slave; #啓動從服務器複製功能

C) 檢查從服務器複製功能狀態

mysql> show slave status\G
  
*************************** 1. row ***************************  
  
           Slave_IO_State: Waiting for master to send event
           Master_Host: 192.168.2.222  //主服務器地址
           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
                 ......  
  
lave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

以上操作過程,主從服務器配置完成,可以開始測試了。
在主服務器上插入一條數據,就可以看看從服務器的數據庫是否已更新就OK了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章