博客 > MySQL知識(shí):MySQL8從零數(shù)據(jù)開始主從復(fù)制
瀏覽量:3205次評(píng)論:0次
作者:銳成網(wǎng)絡(luò)整理時(shí)間:2024-08-08 16:35:56
在MySQL中復(fù)制數(shù)據(jù)庫有讀寫分離、備份、故障切換等諸多好處,那么MySQL如何復(fù)制數(shù)據(jù)庫呢?以下是MySQL8從零數(shù)據(jù)開始主從復(fù)制詳細(xì)步驟,僅供大家參考。
為什么要復(fù)制數(shù)據(jù)庫?
簡(jiǎn)單來說有以下幾個(gè)用處:
1. 讀寫分離,通過MySQL復(fù)制可以實(shí)現(xiàn)讀寫分離,將讀操作分布到多個(gè)不同的服務(wù)器上,減輕服務(wù)器的壓力。
2. 備份,從庫可以作為數(shù)據(jù)的異地實(shí)時(shí)備份。
3. 故障切換,當(dāng)主庫遇到故障,系統(tǒng)可以切換到從庫,實(shí)現(xiàn)故障切換。
4. 升級(jí)測(cè)試 ,從庫可作為測(cè)試服務(wù)器的數(shù)據(jù)庫。
主從復(fù)制圖示如下:
復(fù)制數(shù)據(jù)的步驟
在主庫上把數(shù)據(jù)更改記錄到二進(jìn)制日志(Binary Log)中。
備庫將主庫上的日志復(fù)制到自己的中繼日志(Relay Log)中。
備庫讀取中繼日志中的事件,將其在備庫上重新執(zhí)行一遍。
具體操作步驟
主服務(wù)器地址:10.145.1.17從服務(wù)器地址:10.145.1.22
分別登錄主從服務(wù)器上的MySQL
在主從服務(wù)器上分別新建數(shù)據(jù)庫sync
這樣主從服務(wù)器上都新建了一個(gè)新的數(shù)據(jù)庫sync。
創(chuàng)建復(fù)制賬號(hào)repl,并賦予replication slave權(quán)限
create user 'repl'@'10.145.1.%' identified by 'Repl123!@#';
grant replication slave on *.* to 'repl'@'10.145.1.%';
修改主備數(shù)據(jù)庫的配置文件
主服務(wù)器配置
用命令 whereis my.cnf 找到my.cnf文件的位置,然后用vim打開
在文件中添加:
log_bin = mysql-bin
server_id = 17
這里的log_bin為日志文件名,自己取一個(gè)名詞, server_id 只要唯一就行。
systemctl restart mysqld 重啟mysql
重新登錄mySQL
輸入命令show master status;
可以看到file那一列變成了mysql-bin.000001,配置成功。
從服務(wù)器配置
退出mysql,找到并編輯my.cnf文件
添加以下內(nèi)容:
log_bin = mysql-bin
server_id = 22
relay_log = /var/lib/mysql/mysql-realay-bin
log_slave_updates = 1
read_only = 1
log_bin默認(rèn)情況下會(huì)使用機(jī)器名命名,這里設(shè)成和主庫相同的名稱,當(dāng)然也可以設(shè)置成其他名稱。
relay_log指定中繼日志的位置和名字,log_slave_updates允許備庫將其重放事件記錄到自身的二進(jìn)制文件中,read_only會(huì)阻止沒有權(quán)限的線程修改數(shù)據(jù)。
這里其實(shí)只有server_id是必填項(xiàng),其他都是選填的。
保存好配置文件后,重啟mysql
重新進(jìn)入MySQL,使用change master to命令開始復(fù)制:
change master to master_host='10.145.1.17',
master_user = 'repl',
master_password = 'Repl123!@#',
master_log_file = 'mysql-bin-000001',
master_log_pos = 0;
輸入命令show slave status\G;查看狀態(tài)
在主數(shù)據(jù)庫上運(yùn)行 show processlist\G;顯示了來自10.145.1.22的連接,并等待更多的更新。
在從數(shù)據(jù)庫上show processlist\G;顯示等待主服務(wù)器的數(shù)據(jù)。
好了,現(xiàn)在我們來驗(yàn)證一下:
剛開始都沒數(shù)據(jù),在主數(shù)據(jù)庫上建表,并插入數(shù)據(jù):
從數(shù)據(jù)庫同步了數(shù)據(jù):
第一次show tables沒數(shù)據(jù),第二次show tables的時(shí)候已經(jīng)同步了主數(shù)據(jù)庫上的數(shù)據(jù),也就有了數(shù)據(jù)。
自此主從復(fù)制設(shè)置完成。
重要聲明:本文來自編程我也會(huì),經(jīng)授權(quán)轉(zhuǎn)載,有部分增減,版權(quán)歸原作者所有,不代表銳成觀點(diǎn),轉(zhuǎn)載的目的在于傳遞更多知識(shí)和信息。
相關(guān)文章推薦
2025-05-27 11:53:22
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
熱門工具
標(biāo)簽選擇
閱讀排行
我的評(píng)論
還未登錄?點(diǎn)擊登錄