程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL數據庫在主流操作系統下的同步

MySQL數據庫在主流操作系統下的同步

編輯:關於MYSQL數據庫

  當數據庫的數據量讀寫頻繁的時候,我們就要考慮把數據庫的讀寫分開,以提高數據庫的使用效率,(當然還有其他用處比如,備份數據),這個時候我們就要用到MySQL的一個功能,數據庫同步。下面就具體講一下實現方法

  一、系統環境

  主數據庫(master):

  系統:Windows

  數據庫:MySQL 5.0.51

  IP:192.168.1.156

  從數據庫(slave):

  系統:Linux

  數據庫:MySQL 5.0.67

  IP:192.168.1.154

  二、配置參數:

  發現網上說,兩個數據庫的配置必須一致,還把兩個配置文件對拷。看起來挺有道理,因為怕部分功能不一致,也有可能導致同步錯誤。但是我的兩個MySQL的所在系統都不一樣,所以就按照默認的安裝配置了。

  數據庫准備:

  要同步的數據庫叫 account

  那就必須把主服務器上的account和數據完整的導一份 到slave服務器上

  且在主服務器上開一個帳戶,允許從服務器訪問。

  主數據庫(master)配置:

  修改MySQL 的配置文件my.cnf,

  找到 server-id 這一行,更改如下

  server-id = 1

  且增加兩行必要信息:

  log-bin = d:/log-bin.log #二進制變更日值的存放位置

  binlog-do-db = account #要同步的數據庫

  解釋下:Slave上MySQL的Replication工作有兩個線程,I/O thread和SQL thread,I/O 的作用是從master 3306端口上把它的binlog取過來(master在被修改了任何內容之後,就會把修改了什麼寫到自己的binlog等待slave更新),然後寫到本地的relay-log,而SQL thread則是去讀本地的relay-log,再把它轉換成本MySQL所能理解的東西,於是同步就這樣一步一步的完成.

  master數據庫的修改僅此一步就OK了

  從數據庫(slave)配置:

  修改 MySQL 下的my.cnf

  找到 server-id 這一行,更改如下

server-id = 2 //從數據庫
 

master-host = 192.168.1.156

master-user = lzy

master-passWord = lzy

master-port = 3306

replicate-do-db = account //要同步的數據庫

  最後,把兩個MySQL都重啟動一下。

  1、看看剛才設置的日志路徑下有沒有日志生成。

  2、在156上添加一條數據,看看從數據庫有沒增加。如果沒有,看看slave數據庫的錯誤日志,根據錯誤信息具體調試下。

  配置好同步後,我發覺log-bin的日志位置不好,想換一個地方,於是改到其他盤去了。重啟MySQL後發現同步不能用了。超級郁悶。於是去看了下MySQL的錯誤日志,

  “count not find first log file name in binary log in…”

  找了半天沒找到原因,忽然發現錯誤日志的同目錄下有個master.info文件,應該是記錄從主服務器取數據的記錄吧。打開看了看是的

  14

  log-bin.000003

  337

  192.168.1.156

  lzy

  lzy

  3306

  60

  0

  我把這個文件刪除了,重啟動MySQL。OK了數據同步過來了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved