1–在從服務(wù)器可以執(zhí)行查詢工作 (即我們常說(shuō)的讀功能),降低主服務(wù)器壓力;(主庫(kù)寫,從庫(kù)讀,降壓)
2–在從主服務(wù)器進(jìn)行備份,避免備份期間影響主服務(wù)器服務(wù);(確保數(shù)據(jù)安全)
3–當(dāng)主服務(wù)器出現(xiàn)問(wèn)題時(shí),可以切換到從服務(wù)器。(提升性能)
1.mster 將改變記錄到二進(jìn)制日志 (binary log) 當(dāng)中 這些記錄過(guò)程叫做二進(jìn)制日志事件 binary log events;
2.slave 將 master 的 binary log events 拷貝到它的中繼日志 (relay log) 當(dāng)中;
3.slave 重做中繼日志中的事件 將改變應(yīng)用到自己的數(shù)據(jù)庫(kù)當(dāng)中 mysql 復(fù)制是異步的且串行化的 3.slave 重做中繼日志中的事件 將改變應(yīng)用到自己的數(shù)據(jù)庫(kù)當(dāng)中 mysql 復(fù)制是異步的且串行化的
復(fù)制的最大問(wèn)題:
從主機(jī)復(fù)制數(shù)據(jù)達(dá)到從機(jī)可能會(huì)有延時(shí)!
都說(shuō) master 主機(jī)和 slave 從機(jī)的 mysql 版本號(hào)要一致 我就沒(méi)一致
master 主機(jī)上是 5.6 slave 從機(jī)上是 5.7 一樣搞
拿過(guò)來(lái)一臺(tái)服務(wù)器你不得先找 mysql 嗎?mysql 在哪里 配置文件在哪里?
執(zhí)行命令:
which mysql
/usr/bin/mysql --verbose --help | grep -A 1 'Default options'
結(jié)果如圖所示:
先去找 /etc/my.cnf 再去找 /etc/mysql/my.cnf 然后就是后邊
我的是在 /etc/my.cnf
修改 my.cnf 配置文件如下:
重啟 mysql 服務(wù)器執(zhí)行命令:
service mysqld restart;
解釋:
server-id=1 // 復(fù)制組中的每臺(tái)服務(wù)器都要配置唯一的 Server ID,取值范圍是 1 到 (232)?1,你自己決定取值
log-bin=master-bin // 日志文件名以 “master-bin” 作為前綴
binlog-do-db=finance_online // 要同步的 finance_online 數(shù)據(jù)庫(kù)
如要同步多個(gè)數(shù)據(jù)庫(kù),就多加幾個(gè) replicate-db-db = 數(shù)據(jù)庫(kù)名
binlog-ignore-db=mysql // 要忽略的數(shù)據(jù)庫(kù)
read-only // 主機(jī) 讀寫都可以 (必須)
登錄上 mysql 然后執(zhí)行:
show master status;
結(jié)果如下:
記住里面的 File 和 Position 的值 待會(huì)會(huì)用到!
在主數(shù)據(jù)中創(chuàng)建一個(gè)同步賬號(hào)(可不創(chuàng)建使用現(xiàn)有的),如果僅僅為了主從復(fù)制創(chuàng)建賬號(hào),只需要授予 REPLICATION SLAVE 權(quán)限
創(chuàng)建一個(gè)賬號(hào),賬號(hào):zcfz 密碼: 123456
這個(gè)賬號(hào)是專門用來(lái)搞主從復(fù)制用的哈
上述 主服務(wù)器配置完成
slave 從服務(wù)器配置開始:
重啟 mysql 服務(wù)器:
service mysqld restart;
進(jìn)入到 slave 從機(jī)的 mysql 命令行執(zhí)行命令:
stop slave;
CHANGE MASTER TO MASTER_HOST='10.10.20.120',
MASTER_USER='zcfz',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000005',
MASTER_LOG_POS=3878614;
解釋:
MASTER_HOST 就是 master 主服務(wù)器的 ip
MASTER_USER 就是 master 主服務(wù)器里面的專門復(fù)制復(fù)制的用戶 zcfz
MASTER_PASSWORD 就是 zcfz 賬戶的密碼
MASTER_LOG_FILE 就是我們上邊讓您保存的 file 對(duì)應(yīng)的值
MASTER_LOG_POS 就是我們上邊讓您保存的 Position 的值
然后執(zhí)行命令:
show slave status\G
結(jié)果如圖所示:
wating for master to send evnet 說(shuō)明已經(jīng)在待命狀態(tài)了
另外必須注意的是 slave_io_runing 以及 slave_sql_runing 都同時(shí)必須為 yes 才行?。?!
截止到此刻說(shuō)明主從復(fù)制的道路打通了!
然后執(zhí)行命令:
start slave;
驗(yàn)證階段:
執(zhí)行命令創(chuàng)建數(shù)據(jù)庫(kù):
CREATE DATABASE finance_online DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
這個(gè)時(shí)候 master 和 slave 上都有了數(shù)據(jù)庫(kù)
然后你再導(dǎo)入數(shù)據(jù)到 master 主機(jī)上的 finance_online 那么 slave 從機(jī)上也就有了然后你再導(dǎo)入數(shù)據(jù)到 master 主機(jī)上的 finance_online 那么 slave 從機(jī)上也就有了
另外如果你不想復(fù)制這個(gè)庫(kù)了 想換一個(gè)
那么去修改 master 主機(jī)上的 my.cnf 當(dāng)中的 binlog-do-db=tprbac 然后重啟 mysql 服務(wù)
然后 show master status 看看 file 和 positon
然后再去 linux 服務(wù)器上停止 slave 在 mysql 當(dāng)中執(zhí)行 stop slave;
然后再執(zhí)行:
CHANGE MASTER TO MASTER_HOST=’10.10.20.120’,
MASTER_USER=’zcfz’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE='你看到的 file’,
MASTER_LOG_POS = 你看到的 positon;
然后在 start slave;
就完事了!
這樣就會(huì)主從復(fù)制你想要復(fù)制的數(shù)據(jù)庫(kù)了?。?!
聯(lián)系客服