MySQL數(shù)據(jù)庫(kù)在主流操作系統(tǒng)下的同步
當(dāng)數(shù)據(jù)庫(kù)的數(shù)據(jù)量讀寫頻繁的時(shí)候,我們就要考慮把數(shù)據(jù)庫(kù)的讀寫分開,以提高數(shù)據(jù)庫(kù)的使用效率,(當(dāng)然還有其他用處比如,備份數(shù)據(jù)),這個(gè)時(shí)候我們就要用到MySQL的一個(gè)功能,數(shù)據(jù)庫(kù)同步。下面就具體講一下實(shí)現(xiàn)方法
一、系統(tǒng)環(huán)境
主數(shù)據(jù)庫(kù)(master):
系統(tǒng):Windows
數(shù)據(jù)庫(kù):MySQL 5.0.51
IP:192.168.1.156
從數(shù)據(jù)庫(kù)(slave):
系統(tǒng):Linux
數(shù)據(jù)庫(kù):MySQL 5.0.67
IP:192.168.1.154
二、配置參數(shù):
發(fā)現(xiàn)網(wǎng)上說,兩個(gè)數(shù)據(jù)庫(kù)的配置必須一致,還把兩個(gè)配置文件對(duì)拷??雌饋硗τ械览恚?yàn)榕虏糠止δ懿灰恢?,也有可能?dǎo)致同步錯(cuò)誤。但是我的兩個(gè)MySQL的所在系統(tǒng)都不一樣,所以就按照默認(rèn)的安裝配置了。
數(shù)據(jù)庫(kù)準(zhǔn)備:
要同步的數(shù)據(jù)庫(kù)叫 account
那就必須把主服務(wù)器上的account和數(shù)據(jù)完整的導(dǎo)一份 到slave服務(wù)器上
且在主服務(wù)器上開一個(gè)帳戶,允許從服務(wù)器訪問。
主數(shù)據(jù)庫(kù)(master)配置:
修改MySQL 的配置文件my.cnf,
找到 server-id 這一行,更改如下
server-id = 1
且增加兩行必要信息:
log-bin = d:/log-bin.log #二進(jìn)制變更日值的存放位置
binlog-do-db = account #要同步的數(shù)據(jù)庫(kù)
解釋下:Slave上MySQL的Replication工作有兩個(gè)線程,I/O thread和SQL thread,I/O 的作用是從master 3306端口上把它的binlog取過來(master在被修改了任何內(nèi)容之后,就會(huì)把修改了什么寫到自己的binlog等待slave更新),然后寫到本地的relay-log,而SQL thread則是去讀本地的relay-log,再把它轉(zhuǎn)換成本MySQL所能理解的東西,于是同步就這樣一步一步的完成.
master數(shù)據(jù)庫(kù)的修改僅此一步就OK了
從數(shù)據(jù)庫(kù)(slave)配置:
修改 MySQL 下的my.cnf
找到 server-id 這一行,更改如下
server-id = 2 //從數(shù)據(jù)庫(kù) |
最后,把兩個(gè)MySQL都重啟動(dòng)一下。
1、看看剛才設(shè)置的日志路徑下有沒有日志生成。
2、在156上添加一條數(shù)據(jù),看看從數(shù)據(jù)庫(kù)有沒增加。如果沒有,看看slave數(shù)據(jù)庫(kù)的錯(cuò)誤日志,根據(jù)錯(cuò)誤信息具體調(diào)試下。
配置好同步后,我發(fā)覺log-bin的日志位置不好,想換一個(gè)地方,于是改到其他盤去了。重啟MySQL后發(fā)現(xiàn)同步不能用了。超級(jí)郁悶。于是去看了下MySQL的錯(cuò)誤日志,
“count not find first log file name in binary log in…”
找了半天沒找到原因,忽然發(fā)現(xiàn)錯(cuò)誤日志的同目錄下有個(gè)master.info文件,應(yīng)該是記錄從主服務(wù)器取數(shù)據(jù)的記錄吧。打開看了看是的
14
log-bin.000003
337
192.168.1.156
lzy
lzy
3306
60
0
我把這個(gè)文件刪除了,重啟動(dòng)MySQL。OK了數(shù)據(jù)同步過來了
【編輯推薦】