MySQL實現主從複製及主主複製
阿新 • • 發佈:2021-07-11
mysql實現主從複製
實驗環境
node | Master | Slave |
---|---|---|
linux | CentOS7.9 | CentOS7.9 |
mysql | 5.7 | 5.7 |
IP | 192.168.18.131 | 192.168.18.133 |
主機點配置:
[mysqld] server-id=1 #為當前節點設定一個全域性惟的ID號 log-bin #啟用二進位制日誌 datadir=/data/mysql socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock
從節點配置:
[mysqld]
server-id=2 #為當前節點設定一個全域性惟的ID號(不能和主節點一樣)
log-bin #啟用二進位制日誌
read_only=ON #限制從資料庫為只讀,針對supper user無效
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
檢視主節點當前的二進位制檔名及位置:
在主機點上建立有複製許可權的使用者賬號
在從節點上使用有複製許可權的使用者賬號連線至主伺服器,並啟動複製執行緒
檢視從節點IO執行緒及SQL執行緒
上面的兩個程序都顯示YES則表示配置成功
驗證
主節點建立資料庫和表
從節點檢視已同步
主主複製
兩個mysql伺服器互為主從
在剛剛的主從複製環境下稍加修改即可。
131主機配置檔案修改如下:
[mysqld] server_id=1 log-bin auto_increment_offset=1 #設定自動增長的欄位的偏移量,即初始值為1 auto_increment_increment=2 #增長幅度 datadir=/data/mysql socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock
133主機配置檔案修改如下:
[mysqld]
server_id=2
log-bin
auto_increment_offset=2 #設定自動增長的欄位的偏移量,即初始值為2
auto_increment_increment=2 #增長幅度
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
注:其中只有server_id不同和 auto-increment- offset不同
auto-increment-increment的值應設為整個結構中伺服器的總數,此次實驗環境只用到兩
臺伺服器,所以值設為2。
重啟mysql使配置生效;
檢視133主機當前的二進位制檔名及位置,用於131主機連線時使用:
兩個伺服器上分別執行建立一個用於主從複製的賬號,給與REPLICATION SLAVE許可權。
131主機上文已經建立過,且133主機也已經同步,故這裡不再建立;
配置連線master的相關資訊
在slave中指定master相關引數,並開啟slave執行緒;
在主從複製中133主機已經配置過相關引數,現在只需在131主機上配置即可。
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.18.133',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='123456',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='centos7-bin.000004', #指定133主機的二進位制檔案
-> MASTER_LOG_POS=154; #指定(在master二進位制檔案中)要開始複製的位置
mysql> start slave;
檢視從節點IO執行緒及SQL執行緒狀態為:YES,說明同步開啟成功。
最後進行測試驗證:
#在131主機執行
mysql> create table test1(id int auto_increment primary key,name char(8));
mysql> insert test1 (name) values('vn');
#在133主機執行
mysql> insert test1 (name) values('ez');
#驗證
mysql> select * from test1;
+----+------+
| id | name |
+----+------+
| 1 | vn |
| 2 | ez |
+----+------+
至此,主主同步環境也已經實現!