準備
主資料庫伺服器:192.168.5.14
從資料庫伺服器:192.168.5.18,192.158.5.19,...(這裡可以是多台,為了友善示範我就隻選一台)
所有資料庫伺服器均安裝了統一版本的MariaDB,并且主資料庫到每台從資料庫的網絡是通的,防火牆也開放了3306端口(如果不會開放防火牆就先把防火牆關了,後期把規則加回去即可)
主資料庫伺服器與從資料庫伺服器的MariaDB資料庫版本最好一緻,其實不一緻的情況下之前也測試過是可以成功的(小版本),但為了友善整個項目架構的版本管理最好是一緻的
開始
修改主資料庫伺服器的資料庫配置檔案
vi /etc/my.cnf
加入下列兩條規則
server-id=1 #設定一個服務id,一般來說用1代表主,用2、3、4...代表從
log-bin=master-bin #開啟二進制檔案功能
儲存,退出。然後進入主資料庫伺服器的mysql指令行,建立slave使用者(這一步用資料庫管理者賬戶登入就行,我這邊用的是root)
給從伺服器192.168.5.18授權一個使用者slave1,密碼設定成123456
grant replication slave on *.* to 'slave1'@'192.168.5.18' identified by '123456';
設定完成後重新開機主資料庫伺服器上的MariaDB
systemctl restart mariadb
進入主資料庫伺服器mysql指令行,執行
show variables like "%log_bin";
檢查二進制日志功能是否打開
再執行
show master status;
檢視主資料庫伺服器狀态
記錄好File和Position這兩個值,每個人應該都是不同的。這兩個值待會在從資料庫伺服器上配置時一定會用到,并且每次重新開機都會改變,是以這兩個值不是一成不變的
主資料庫伺服器這邊的配置就已經完成了,接下來就要切換到從資料庫伺服器操作
修改從資料庫伺服器的mysql配置檔案
vi /etc/my.cnf
加入一條id,由于這裡是從資料庫伺服器,是以id給2,如果還有另一台從資料庫伺服器就用3,反正就是id不能重複,必須是唯一的
server-id=2 #設定一個服務id,一般來說用1代表主,用2、3、4...代表從
儲存退出,重新開機MariaDB
systemctl restart mariadb
進入從資料庫伺服器mysql指令行,配置主資料庫位址、使用者名、密碼、二進制檔案及pos點
change master to
master_host='192.168.5.14',
master_user='slave1',
master_password='123456',
master_log_file='master-bin.000002', #這裡就是上面說到要記錄的
master_log_pos=345;
執行成功後,執行
slave start;
啟動slave程序
執行
show slave status\G
檢視從伺服器狀态
這兩個值如果是Yes說明主從配置成功,如果是connecting就說明有問題,需要仔細檢查
現在可以嘗試一下主從是否有效:
在主資料庫伺服器上建一個名為hello的庫
create database hello charset utf8;
可以看到主資料庫伺服器上是有hello這個庫的,現在我們切換到從資料庫伺服器show一下所有的database
可以看到從資料庫伺服器上也同步了一個hello庫