Mysql雙主配置

一,需求說明
保證現有業務在主機房網絡中斷的情況下,能迅速切至備用機房,切保證數據最小丟失。

二,環境需求
1,應用環境
現dxt和zw兩個機房各有一套業務服務器,dxt爲主機房,zw爲備用機房,使用cdn取雙源,當主節點網絡異常的時候可以實現自動無縫切換。
弊端:
1,主節點異常後, 自動切至備用節點。當主節點恢復後,cdn會立即恢復到主節點,此時主節點的db數據不完整,不能存在修改和刪除操作。
2,網絡正常,db異常無法正常切換,需開發調整程序。
2,軟件環境
主備機房服務器都使用msyql5.5.16,安裝環境步驟忽略。

三,實施步驟
1,同步主備節點的數據
A,測試環境使用的是新安裝的mysql數據庫,直接將測試數據導入主備服務器的數據庫
主服務器master1
1 # mysql -u root -p
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
mysql> source /opt/cdn.sql
主服務器master2 步驟同上

B, 如果是已經運行的線上服務器需要做雙主,需保證使用的服務器master1 爲只讀模式後, 對該數據庫做全備,將備份數據copy至master2服務器上, 同A一樣對master進行數據導入。(當主主配置完成後,即可解除master1的只讀模式)

2,添加db同步用帳號
1 Grant replication slave on . to reuser@'211.147.6.233' identified by 'repass'; ##master1
2 Grant replication slave on . to reuser@'103.227.81.14' identified by 'repass'; ##master2

3,測試連通可用性
1 mysql -u reuser -p -h 211.147.6.233 ##master1
2 mysql -u reuser -p -h 103.227.81.14 ##master2

4,修改mysql配置
1 #vi /etc/my.cnf ##master1
2 log-bin = mysql-bin
server-id = 6 ###此處兩個主機的值不能相同
log-slave-updates
auto_increment_increment=2
auto_increment_offset=1 ###此處兩個主機的值不能相同

1 #vi /etc/my.cnf ##master2
2 log-bin = mysql-bin
server-id = 7
log-slave-updates
auto_increment_increment=2
auto_increment_offset=2

5,重啓master1和master2的數據庫服務
1 #/usr/local/mysql55/scripts/my3306.sh restart #master2 and master1

6,查看各主機master狀態
1 #show master status\G #master1
1. row
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)

1 #show master status\G #master2
1. row
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)

7,配置數據庫參數
1 mysql> CHANGE MASTER TO MASTER_HOST="211.147.6.233",MASTER_USER="reuser",MASTER_PASSWORD="repass",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107 #master1

1 mysql> CHANGE MASTER TO MASTER_HOST="103.227.81.14",MASTER_USER="reuser",MASTER_PASSWORD="repass",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107 #master2

8,開啓slave
1 mysql> slave start #master1

1 mysql> slave start #master2

9,查看slave狀態
1 #show slave status\G #master1 (下面只截取部分信息)
1. row
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

1 #show slave status\G #master2 (下面只截取部分信息)
1. row
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四,測試可用性
可通過創建表和插入數據來測試mysql雙主的可用性,不詳述。
五,注意事項
本實驗使用的是默認3306端口, 所以change master時無需指定端口,如果使用非3306端口,請自行添加MASTER_PORT=31306 參數(此處假定自定義的數據庫端口爲31306)

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