溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在linux系統(tǒng)中搭建mysql主從服務(wù)器?

發(fā)布時(shí)間:2020-05-21 14:50:35 來源:億速云 閱讀:186 作者:鴿子 欄目:MySQL數(shù)據(jù)庫

實(shí)現(xiàn)目標(biāo)

現(xiàn)在需要搭建兩臺(tái)MySQL服務(wù)器(一主一從),一臺(tái)作為主服務(wù)器,一臺(tái)作為從服務(wù)器,主服務(wù)器進(jìn)行寫操作,從服務(wù)器進(jìn)行讀操作。

工作流程

主服務(wù)器:

開啟二進(jìn)制日志

配置唯一的server-id

獲得master二進(jìn)制日志文件名及位置

創(chuàng)建一個(gè)用于slave和master通信的用戶賬號(hào)。

從服務(wù)器:

配置唯一的server-id

使用master分配的用戶賬號(hào)讀取master二進(jìn)制日志

啟用slave服務(wù)。

準(zhǔn)備工作

主從數(shù)據(jù)庫版本最好一樣

主從數(shù)據(jù)庫內(nèi)數(shù)據(jù)保持一致

主數(shù)據(jù)庫:192.168.244.201 : 3306

從數(shù)據(jù)庫:192.168.244.202 : 3306

開始配置

配置 Master 主服務(wù)器

找到主數(shù)據(jù)庫的配置文件my.cnf(Windows中是my.ini),我的在/etc/my.cnf
在[mysqld]部分插入如下兩行:

[mysqld]
log-bin=mysql-bin #開啟二進(jìn)制日志
server-id=201 #設(shè)置server-id,唯一值,標(biāo)識(shí)主機(jī)

重啟mysql服務(wù)

systemctl restart mysqld

創(chuàng)建用于主從同步的賬號(hào)/密碼

進(jìn)入MySQL : mysql -u root -p 回車輸入密碼。

我創(chuàng)建的用戶名叫“master_root”密碼是“MySql@6688”

【注意:由于之前把密碼改成支持簡(jiǎn)單密碼123456的了,導(dǎo)致這里新建用戶出現(xiàn)一些問題,說密碼不符合策略等,后來干脆我重裝mysql,使用默認(rèn)復(fù)雜密碼了,就沒有這么多問題了。習(xí)慣就好其實(shí)?!?/strong>

下面我都用的%,沒有寫具體ip,你可以自行決定。

#創(chuàng)建用戶(IP為可訪問該master的IP,任意IP就寫'%')
mysql> CREATE USER 'master_root'@'192.168.244.202' IDENTIFIED BY 'MySql@6688';
#分配權(quán)限(IP為可訪問該 master的IP,任意IP就寫'%')
mysql> GRANT REPLICATION SLAVE ON *.* TO 'master_root'@'192.168.244.202';
 #刷新權(quán)限
mysql>flush privileges;

查看master狀態(tài),記錄二進(jìn)制文件名(mysql-bin.000001)和位置(154).后面配從庫要用。

show master status;

如何在linux系統(tǒng)中搭建mysql主從服務(wù)器?

配置 Slave 主服務(wù)器

修改my.cnf 文件

vim /etc/my.cnf
[mysqld]
server-id=202 #設(shè)置server-id,唯一值,唯一標(biāo)識(shí)從庫

重啟mysql服務(wù)

systemctl restart mysqld

登錄進(jìn)入mysql,執(zhí)行同步sql語句(主服務(wù)器名,用于主從的用戶名,密碼,二進(jìn)制文件名,位置)

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.244.201',
    -> MASTER_USER='master_root',
    -> MASTER_PASSWORD='MySql@6688',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=154;

啟動(dòng)slave同步進(jìn)程

mysql>start slave;

查看slave狀態(tài)

show slave status\G

注意后面不要分號(hào);否則最后一行顯示報(bào)錯(cuò)如下:

ERROR: No query specified

當(dāng)Slave_IO_Running和Slave_SQL_Running都為YES的時(shí)候就表示主從同步設(shè)置成功了。

接下來就可以進(jìn)行一些驗(yàn)證了,比如在主master數(shù)據(jù)庫的test數(shù)據(jù)庫的一張表中插入一條數(shù)據(jù),在slave的test庫的相同數(shù)據(jù)表中查看是否有新增的數(shù)據(jù)即可驗(yàn)證主從復(fù)制功能是否有效,還可以關(guān)閉slave(mysql>stop slave;),然后再修改master,看slave是否也相應(yīng)修改(停止slave后,master的修改不會(huì)同步到slave),就可以完成主從復(fù)制功能的驗(yàn)證了。

其他相關(guān)參數(shù):

master開啟二進(jìn)制日志后默認(rèn)記錄所有庫所有表的操作,可以通過配置來指定只記錄指定的數(shù)據(jù)庫甚至指定的表的操作,具體在mysql配置文件的[mysqld]可添加修改如下選項(xiàng):

不同步哪些數(shù)據(jù)庫

binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema

只同步哪些數(shù)據(jù)庫,除此之外,其他不同步

binlog-do-db = game

如之前查看master狀態(tài)時(shí)就可以看到只記錄了test庫,忽略了manual和mysql庫。

以上就是linux下搭建mysql主從服務(wù)器的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI