1. 程式人生 > 其它 >MySQL實現主從複製及主主複製

MySQL實現主從複製及主主複製

mysql實現主從複製

實驗環境

nodeMasterSlave
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   |
+----+------+

至此,主主同步環境也已經實現!