MariaDB實現主從配置及讀寫分離(一)
阿新 • • 發佈:2018-11-06
一、主從複製方案
1. 在兩臺CentOS7虛擬機器上分別部署MariaDB, 主資料庫伺服器IP為192.168.17.235, 從伺服器IP為192.168.17.238. 從伺服器通過調取主伺服器上binlog日誌, 在本地重建庫、表, 實現與主伺服器的AB複製.
二、步驟
1. 對兩臺虛擬機器上現有的MariaDB 資料庫初始化.
為了在啟用binlog日誌及資料庫同步之前保持主、從庫的一致性, 最好對主、從伺服器初始化(備份主伺服器上現有的庫, 手工匯入到從伺服器上). 當現有庫、表引擎都是MyISAM時, 執行離線備份、恢復, 能極大的提高效率. 其它情況可以通過musqldump等工具來實現庫的匯出、匯入.
(1)在主伺服器192.168.17.235 上如下操作:
mysql -u root -p //登入MariaDB
MariaDB>reset master; //重置binlog日誌 MariaDB>quit; mysqldump -u root -p --all-databases > /root/mysql.sql //備份主伺服器庫
scp /root/mysql.sql [email protected]:/root/ //將備份檔案拷貝到從伺服器
(2)在從伺服器192.168.17.238上如下操作:
mysql -u root -p < /root/mysql.sql //將備份資料庫匯入從伺服器MariaDB
2. 配置主伺服器
vim /etc/my.cnf [mysql] log_bin=c235-bin //啟用binlog日誌, 並指定檔名字首 server_id=68 //指定伺服器ID號
systemctl restart mariadb
MariaDB>grant replication slave on *.* to 'replicater'@'192.168.17.%' identified by '123'; //新建備份使用者,授予複製許可權“replication slave", 允許從slave伺服器訪問 MariaDB>show master status; //檢視主伺服器狀態, 記錄當前日誌檔名和偏移位置
3. 配置從伺服器
vim /etc/my/cnf [mysql] log_bin=c238-bin //啟用binlog日誌, 並指定檔名字首 server_id=69 //指定伺服器ID號, 不能與master的ID相同 slave-net-timeout=60 //指定當主、從伺服器網路中斷時,重試超時時間 systemctl restart mariadb //重啟MariaDB
MariaDB>change master to master_host='192.168.17.235', //通過change master語句指定master的IP、同步使用者名稱和密碼、起始日誌檔案、偏移位置
master_user='replicater',
master_password='123',
master_log_file='user.000004',
master_log_pos=401
MariaDB>start slave; //啟動slave
MariaDB>show slave status\G; //檢視slave伺服器狀態
4. 設定從伺服器為只讀
從伺服器作為主伺服器的備份, 避免寫入衝突, 在採用主、從複製結構時, 為保持主、從資料庫的一致性, 使用者不能在從伺服器上執行資料庫寫入操作.
可以通過my.cnf將從伺服器配置為只讀模式. 在只讀模式下, 只有super許可權的使用者和slave同步執行緒才能寫入.
vim /etc/my.cnf [mysql] ... read-only=1 //設定從伺服器為只讀模式 ... systemctl restart mariadb