1、概念介紹
主從復(fù)制是指將主數(shù)據(jù)庫的DDL和DML操作通過二進(jìn)制日志傳到從庫服務(wù)器中,然后在從庫上對這些日志重新執(zhí)行(也叫重做),從而使得從庫和主庫的數(shù)據(jù)保持同步。
MySQL支持一臺主庫同時向多臺從庫進(jìn)行復(fù)制,從庫同時也可以作為其他從服務(wù)器的主庫,實(shí)現(xiàn)鏈狀復(fù)制。
MySQL復(fù)制的有點(diǎn)主要包含以下三個方面:
- 主庫出現(xiàn)問題,可以快速切換到從庫提供服務(wù)。
- 實(shí)現(xiàn)讀寫分離,降低主庫的訪問壓力。
- 可以在從庫中執(zhí)行備份,以避免備份期間影響主庫服務(wù)。
MySQL的主從復(fù)制原理:
- Master主庫在事務(wù)提交時,會把數(shù)據(jù)變更記錄在二進(jìn)制日志文件Binlog 中。
- 從庫讀取主庫的二進(jìn)制日志文件Binlog,寫入到從庫的中繼日志Relay Log 。
- slave重做中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。
2、主庫配置
a. 配置防火墻
# 開放指定的3306端口號(生產(chǎn)環(huán)境):
firewall-cmd--zone=public --add-port=3306/tcp -permanent
firewall-cmd -reload
# 關(guān)閉服務(wù)器的防火墻(本次采用關(guān)閉防火墻):
systemctl stop firewalld
systemctl disable firewalld
b. 修改 /etc/my.cnf
# mysql服務(wù)ID,保證整個集群環(huán)竟中唯一,取值范圍:1 - 2^32 - 1,默認(rèn)為1
server-id=1
# 是否只讀,1代表只讀,0代表讀寫
read-only=0
# 設(shè)置二進(jìn)制日志文件
log_bin=binlog
#忽略的數(shù)據(jù),指不需要同步的數(shù)據(jù)庫
#binlog-ignore-db=mysql
#指定同步的數(shù)據(jù)庫
#binlog-do-db=db01
# 重啟服務(wù)
systemctl restart mysqld
c. 創(chuàng)建用戶、賦予權(quán)限
登錄mysql,創(chuàng)建遠(yuǎn)程連接的賬號,并授予主從復(fù)制權(quán)限
-- 創(chuàng)建itcast用戶,并設(shè)置密碼,該用戶可在任意主機(jī)連接該MySQL服務(wù)
create user 'itcast'@'%' identified with mysql_native_password by 'Root@123456';
-- 為‘itcast'@'%'用戶分配主從復(fù)制權(quán)限
grant replication slave on *.* to 'itcast'@'%';
d. 查看二進(jìn)制日志坐標(biāo)
show master status;
字段含義說明:
- file:從哪個日志文件開始推送日志文件
- position : 從哪個位置開始推送日志
- binlog_ignore_db :指定不需要同步的數(shù)據(jù)庫
3、從庫配置
a. 配置防火墻
# 開放指定的3306端口號(生產(chǎn)環(huán)境):
firewall-cmd--zone=public --add-port=3306/tcp -permanent
firewall-cmd -reload
# 關(guān)閉服務(wù)器的防火墻(本次采用關(guān)閉防火墻):
systemctl stop firewalld
systemctl disable firewalld
b. 修改 /etc/my.cnf
# 保證整個集群環(huán)竟中唯一,取值范圍:1 - 2^32 - 1,和主庫不相同
server-id=2
# 是否只讀,1代表只讀,0代表讀寫
read-only=1
# 重啟服務(wù)
systemctl restart mariadb
c. 登錄mysql,設(shè)置主庫配置
-- mysql 8.0.26 以后
change replication source to source_host='192.168.137.252',source_user='test1',source_password='123456',source_log_file='binlog.000001',source_log_pos=245;
-- mysql 8.0.26 之前
change master to master_host='192.168.137.252',master_user='test1',master_password='123456',master_log_file='binlog.000001',master_log_pos=245;
d. 開啟同步操作
#8.0.22之后
start replica;
#8.0.22之前
start slave;
-- 查看主從同步狀態(tài)
show replica status; -- 8.0.22之后
show slave status; -- 8.0.22之前
文章來源:http://www.zghlxwxcb.cn/news/detail-816024.html
測試:在主數(shù)據(jù)庫創(chuàng)建數(shù)據(jù),在從庫中查詢數(shù)據(jù),驗(yàn)證主從是否同步。文章來源地址http://www.zghlxwxcb.cn/news/detail-816024.html
到了這里,關(guān)于MySQL 主從復(fù)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!