部署mysql主從同步
一、什么是mysql主從同步
主:正在被客戶端訪問的數(shù)據(jù)庫服務(wù)器,被稱作主庫服務(wù)器。
從:自動同步主庫上的數(shù)據(jù)的數(shù)據(jù)庫服務(wù)器,被稱作從庫服務(wù)器。
二、配置mysql主從同步
2.1 拓?fù)鋱D
數(shù)據(jù)庫服務(wù)器 192.168.4.51 做主庫
數(shù)據(jù)庫服務(wù)器 192.168.4.52 做從庫
2.2 環(huán)境準(zhǔn)備
主從同步未配置之前,要保證從庫上要有主庫上的數(shù)據(jù)。
禁用selinux ]# setenforce 0
關(guān)閉防火墻服務(wù)]# systemctl stop firewalld
物理連接正常 ]# ping -c 2 192.168.4.51/52
數(shù)據(jù)庫正常運行,管理可以從本機(jī)登錄
2.3 配置mysql主從同步
+++2.3.1 配置主庫
a 創(chuàng)建用戶授權(quán)
b 啟用binlog日志
c 查看正在使用binlog日志信息
+++.3.2 配置從庫
a 驗證主庫的用戶授權(quán)
b 指定server_id
c 數(shù)據(jù)庫管理員本機(jī)登錄,指定主數(shù)據(jù)庫服務(wù)器的信息
mysql> change master to
-> master_host="主庫ip地址",
-> master_user="主庫授權(quán)用戶名",
-> master_password="授權(quán)用戶密碼",
-> master_log_file="主庫binlog日志文件名",
-> master_log_pos=binlog日志文件偏移量;
d 啟動slave進(jìn)程
e 查看進(jìn)程狀態(tài)信息
相關(guān)命令
mysql> show slave status; # 顯示從庫狀態(tài)信息
mysql> show master status; #顯示本機(jī)的binlog日志文件信息
mysql> show processlist; #查看當(dāng)前數(shù)據(jù)庫服務(wù)器上正在執(zhí)行的程序
mysql> start slave ; #啟動slave 進(jìn)程
mysql> stop slave ; #停止slave 進(jìn)程
2.4 在客戶端測試主從同步配置
2.4.1 在主庫服務(wù)器上添加訪問數(shù)據(jù)時,使用連接用戶
2.4.2 客戶端使用主庫的授權(quán)用戶,連接主庫服務(wù)器,建庫表插入記錄
2.4.3 在從庫本機(jī),使用管理登錄查看是否有和主庫一樣庫表記錄及授權(quán)用戶
2.4.4 客戶端使用主庫的授權(quán)用戶,連接從庫服務(wù)器,也可以看到新建的庫表及記錄
+++++++++++++++++++++++++++++++
三、mysql主從同步的工作原理
從庫數(shù)據(jù)庫目錄下的文件:
master.info 記錄主庫信息
主機(jī)名-relay-bin.XXXXXX 中繼日志文件,記錄主庫上執(zhí)行過的sql命令
主機(jī)名-relay-bin.index 索引文件,記錄當(dāng)前已有的中繼日志文件
relay-log.info 中繼日志文件,記錄當(dāng)前使用的中繼日志信息
從庫IO線程 和SQL線程的作用?
IO線程 把主庫binlog日志里的sql命令記錄到本機(jī)的中繼日志文件
SQL線程 執(zhí)行本機(jī)中繼日志文件里的sql命令,把數(shù)據(jù)寫進(jìn)本機(jī)。
IO線程報錯原因: 從庫連接主庫失?。╬ing grant firewalld selinux)
從庫指定主庫的日志信息錯誤(日志名 偏移量)
Last_IO_Error: 報錯信息
修改步驟:
mysql> stop slave;
mysql> change master to 選項="值";
mysql> start slave;
SQL線程報錯原因: 執(zhí)行本機(jī)中繼日志文件里的sql命令,用到庫或表在本機(jī)不存在。
Last_SQL_Error: 報錯信息
設(shè)置從庫暫時不同步主庫的數(shù)據(jù)?
在從庫上把slave 進(jìn)程停止
mysql> stop slave;
把從庫恢復(fù)成獨立的數(shù)據(jù)庫服務(wù)器?
]# rm -rf /var/lib/mysql/master.info
]# systemctl restart mysqld
]# rm -rf 主機(jī)名-relay-bin.XXXXXX 主機(jī)名-relay-bin.index relay-log.info
四、mysql主從同步結(jié)構(gòu)模式
一主一從
一主多從
主從從
主主結(jié)構(gòu)(又稱作互為主從)
五、mysql主從同步常用配置參數(shù)
主庫服務(wù)器在配置文件my.cnf 使用的參數(shù)
]#vim /etc/my.cnf
[mysqld]
binlog_do_db=庫名列表 #只允許同步庫Binlog_Ignore_DB=庫名列表 #只不允許同步庫
]# systemctl restart mysqld
從庫服務(wù)器在配置文件my.cnf 使用的參數(shù)
]# vim /etc/my.cnf
[mysqld]
log_slave_updates
#級聯(lián)復(fù)制
relay_log=中繼日志文件名
replicate_do_db=庫名列表 #只同步的庫
replicate_ignore_db=庫名列表 #只不同步的庫
:wq
]# systemctl restart mysqld
配置mysql主從從結(jié)構(gòu)
主庫 192.168.4.51
從庫 192.168.4.52 ( 做51主機(jī)從庫)
從庫 192.168.4.53 ( 做53主機(jī)從庫)
要求:客戶端訪問主庫51 時 創(chuàng)建庫表記錄 在52 和53 數(shù)據(jù)庫服務(wù)器都可以看到
配置步驟:
一、環(huán)境準(zhǔn)備
主從同步未配置之前,要保證從庫上要有主庫上的數(shù)據(jù)。
禁用selinux ]# setenforce 0
關(guān)閉防火墻服務(wù)]# systemctl stop firewalld
物理連接正常 ]# ping -c 2 192.168.4.51/52
數(shù)據(jù)庫正常運行,管理可以從本機(jī)登錄
二、配置主從同步
2.1 配置主庫51
用戶授權(quán)
啟用binlog日志
查看正在使用的日志信息
2.2 配置從庫52
用戶授權(quán)
啟用binlog日志,指定server_id 和 允許級聯(lián)復(fù)制
查看正在使用的日志信息
驗證主庫的授權(quán)用戶
管理員登錄指定主庫信息
啟動slave進(jìn)程
查看進(jìn)程狀態(tài)信息
2.3 配置從庫53
驗證主庫的授權(quán)用戶
指定server_id
管理員登錄指定主庫信息
啟動slave進(jìn)程
查看進(jìn)程狀態(tài)信息
三、客戶端驗證配置
3.1 在主庫上授權(quán)訪問gamedb庫的用戶
3.2 客戶端使用授權(quán)用戶連接主庫,建庫、表、插入記錄
3.3 客戶端使用授權(quán)用戶連接2臺從庫時,也可以看到主庫上新的庫表記錄
六、mysql主從同步復(fù)制模式
異步復(fù)制
全同步復(fù)制
半同步復(fù)制
查看是否可以動態(tài)加載模塊
mysql> show variables like "have_dynamic_loading";
主庫安裝的模塊
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
從庫安裝的模塊
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看系統(tǒng)庫下的表,模塊是否安裝成功
mysql>
SELECT PLUGIN_NAME , PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE
PLUGIN_NAME LIKE '%semi%';
啟用半同步復(fù)制模式
主庫
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
從庫
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
查看半同步復(fù)制模式是否啟用
mysql> show variables like "rpl_semisync%_enabled";
修改配置文件/etc/my.cnf 讓安裝模塊和啟用的模式永久生效。
主庫
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
:wq
從庫
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
:wq
既做主又做從
vim /etc/my.cnf
[mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
:wq
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。