一、主從復制方案
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 root@192.168.17.238:/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

