MySQL主從復(fù)制

MySQL主從復(fù)制(Master-Slave)

Mysql作為目前世界上使用最廣泛的免費(fèi)數(shù)據(jù)庫(kù),相信所有從事系統(tǒng)運(yùn)維的工程師都一定接觸過(guò)。但在實(shí)際的生產(chǎn)環(huán)境中,由單臺(tái)Mysql作為獨(dú)立的數(shù)據(jù)庫(kù)是完全不能滿(mǎn)足實(shí)際需求的,無(wú)論是在安全性,高可用性以及高并發(fā)等各個(gè)方面。

因此,一般來(lái)說(shuō)都是通過(guò) 主從復(fù)制(Master-Slave)的方式來(lái)同步數(shù)據(jù),再通過(guò)讀寫(xiě)分離(MySQL-Proxy)來(lái)提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力 這樣的方案來(lái)進(jìn)行部署與實(shí)施的。

如下圖所示:


圖片.png

二、MySQL主從復(fù)制

場(chǎng)景描述:
主數(shù)據(jù)庫(kù)服務(wù)器:120.24.242.45,MySQL已經(jīng)安裝,并且無(wú)應(yīng)用數(shù)據(jù)。
從數(shù)據(jù)庫(kù)服務(wù)器:60.174.206.71,MySQL已經(jīng)安裝,并且無(wú)應(yīng)用數(shù)據(jù)。

2.1 主服務(wù)器上進(jìn)行的操作

啟動(dòng)mysql服務(wù)

/opt/mysql/init.d/mysql start

通過(guò)命令行登錄管理MySQL服務(wù)器

/opt/mysql/bin/mysql -uroot -p'new-password'

授權(quán)給從數(shù)據(jù)庫(kù)服務(wù)器60.174.206.71

mysql> GRANT REPLICATION SLAVE ON *.* to 'root'@'60.174.206.71' identified by ‘password’;

查詢(xún)主數(shù)據(jù)庫(kù)狀態(tài)

Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 1741226| | |
+------------------+----------+--------------+------------------+

記錄下 FILE 及 Position 的值,在后面進(jìn)行從服務(wù)器操作的時(shí)候需要用到。

2.2 配置從服務(wù)器

修改從服務(wù)器的配置文件/opt/mysql/etc/my.cnf
將 server-id = 1修改為 server-id = 10,并確保這個(gè)ID沒(méi)有被別的MySQL服務(wù)所使用。

啟動(dòng)mysql服務(wù)

/opt/mysql/init.d/mysql start

通過(guò)命令行登錄管理MySQL服務(wù)器

/opt/mysql/bin/mysql -uroot -p'new-password'

執(zhí)行同步SQL語(yǔ)句

change master to master_host='120.24.242.45',master_user='root',master_password='password',master_port=3306,master_log_file='mysql-bin.000004',master_log_pos=1741226;

正確執(zhí)行后啟動(dòng)Slave同步進(jìn)程

mysql> start slave;

主從同步檢查

mysql> show slave status
//其中Slave_IO_Running 與 Slave_SQL_Running 的值都必須為YES,才表明狀態(tài)正常。

如果主服務(wù)器已經(jīng)存在應(yīng)用數(shù)據(jù),則在進(jìn)行主從復(fù)制時(shí),需要做以下處理:

//(1)主數(shù)據(jù)庫(kù)進(jìn)行鎖表操作,不讓數(shù)據(jù)再進(jìn)行寫(xiě)入動(dòng)作
mysql> FLUSH TABLES WITH READ LOCK;

//(2)查看主數(shù)據(jù)庫(kù)狀態(tài)
mysql> show master status;

//(3)記錄下 FILE 及 Position 的值。
將主服務(wù)器的數(shù)據(jù)文件(整個(gè)/opt/mysql/data目錄)復(fù)制到從服務(wù)器,建議通過(guò)tar歸檔壓縮后再傳到從服務(wù)器解壓。

//(4)取消主數(shù)據(jù)庫(kù)鎖定
mysql> UNLOCK TABLES;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容