#MYSQL單節點的mysql遠遠不能滿於生成,以防止生產伺服器宕機,磁碟空間溢滿等種種原因,需要有一個備用資料庫, 這時候主從庫是不錯的選擇,在是資料庫集群中也起到了很大的作用 #MySQL 主從複製概念: MySQL 主從複製是指數據可以從一個MySQL資料庫伺服器主節點複製到一個或多個從節點。 ...
#MYSQL單節點的mysql遠遠不能滿於生成,以防止生產伺服器宕機,磁碟空間溢滿等種種原因,需要有一個備用資料庫,
這時候主從庫是不錯的選擇,在是資料庫集群中也起到了很大的作用
#MySQL 主從複製概念:
MySQL 主從複製是指數據可以從一個MySQL資料庫伺服器主節點複製到一個或多個從節點。MySQL 預設採用非同步複製方式,這樣從節點不用一直訪問主伺服器來更新自己的數據,數據的更新可以在遠程連接上進行,從節點可以複製主資料庫中的所有資料庫或者特定的資料庫,或者特定的表。
#一般主從架構
- 一主一從
一主一從和一主多從是最常見的主從架構,實施起來簡單並且有效,不僅可以實現HA,而且還能讀寫分離,進而提升集群的併發能力。
- 多主一從
多主一從可以將多個mysql資料庫備份到一臺存儲性能比較好的伺服器上
-
雙主複製
雙主複製,也就是互做主從複製,每個master既是master,又是另外一臺伺服器的slave。這樣任何一方所做的變更,都會通過複製應用到另外一方的資料庫中
- 級聯複製
級聯複製模式下,部分slave的數據同步不連接主節點,而是連接從節點。因為如果主節點有太多的從節點,就會損耗一部分性能用於replication,那麼我們可以讓3~5個從節點連接主節點,其它從節點作為二級或者三級與從節點連接,這樣不僅可以緩解主節點的壓力,並且對數據一致性沒有負面影響。
1.主從伺服器要求
(1)版本一致
(2)初始化表,併在後臺啟動mysql
(3)可供mysql用戶
2.主庫配置
2.從庫配置,從庫不配置日誌也是可以的,只配置server_id即可滿足
3.查看主庫的日誌信息
mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
4.重啟主從庫,配置從庫的slave
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000004',master_log_pos=308; //註意不要斷開,308數字前後無單引號。 Mysql>start slave; //啟動從伺服器複製功能
5.查看從庫複製功能狀態
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
註:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
6.進行驗證,在主庫建表,從庫會同步數據過來,可編寫shell腳本監控salve兩個yes(Slave_IO及Slave_SQL進程),如發現只有一個或零個yes,就表明主從有問題了,發簡訊警報吧。