centos7下mariadb主從環境搭建詳細步驟
一、主從複製原理
主伺服器開啟二進位制日誌功能後,主伺服器的的變更就會記錄到二進位制日誌中。從伺服器把主伺服器的二進位制日誌讀到本地的中繼日誌,然後利用中繼日誌重做變更,以此保證主從兩個環境變更一致。
二、搭建環境
vmware虛擬機器,centos7,mariadb 10.2.14
主伺服器IP:192.168.160.7
從伺服器IP:192.168.160.8
三、搭建步驟
1、安裝mariadb
分別在主從兩個伺服器上安裝好mariadb,和安裝單例項資料庫沒有差別,安裝步驟直接略過。我的實驗環境是直接通過虛擬機器克隆獲得的。
2、配置主伺服器配置檔案
編輯my.cnf檔案:vi /etc/mysql/my.cnf
開啟二進位制日誌:log-bin=mysql-bin
新增不同步資料的資料庫:
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
(也可以指定同步的資料,本文兩種配置都配置:binlog-do-db=hse_aq )
修改server_id:server-id = 1
然後儲存退出配置檔案,完成配置
3、配置從伺服器配置檔案
編輯my.cnf檔案:vi /etc/mysql/my.cnf
開啟中繼日誌:relay-log = /app/data/relay-bin
限制從伺服器資料庫只讀(超級許可權使用者依然能修改從庫的資料):read_only = 1
修改server_id:server-id = 2
然後儲存退出配置檔案,完成配置
4、在主伺服器上建立複製使用者
登入mariadb,建立複製賬戶:GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'marry'@'192.168.160.8' IDENTIFIED BY '123456';
檢視主庫二進位制日誌狀態,以便在從伺服器選擇複製開始位置:show master status;
5、在從伺服器上訪問主伺服器
在從伺服器上登入mariadb,使用複製賬戶marry訪問主伺服器,其中MASTER_LOG_FILE是主伺服器當前使用的二進位制日誌,MASTER_LOG_POS是日誌的開始位置:
CHANGE MASTER TO MASTER_HOST='192.168.160.7',MASTER_PORT=3306,MASTER_USER='marry',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=7000;
檢視同步狀態:SHOW SLAVE STATUS\G
MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.160.7
Master_User: marry
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 7000
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 7000
Relay_Log_Space: 256
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
1 row in set (0.00 sec)
從上面的內容可以看到
Slave_IO_Running: No
Slave_SQL_Running: No
說明覆制過程還沒有開始,在從伺服器上啟動複製:START SLAVE;
再檢視同步狀態:SHOW SLAVE STATUS\G
MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.160.7
Master_User: marry
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 7000
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 555
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 7000
Relay_Log_Space: 858
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
1 row in set (0.00 sec)
兩個狀態都已經變成yes,說明同步已經開始。
6、驗證
在主伺服器上新建資料庫(如果主伺服器配置了binlog-do-db引數,新建資料庫不會同步到從伺服器)、新建表、新增資料、修改資料、刪除資料、刪除表等操作,都能反應到從庫,說明環境搭建成功。
7、備註
如果在從伺服器上訪問主伺服器出現問題,可以用stop slave、reset slave命令重新配置。
還有很多配置引數在本次搭建沒有配置,可以一點點配置測試。