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

MySQL數據庫處於主流操作系統下的同步實際操作流程

編輯:MySQL綜合教程

我們大家都知道當MySQL數據庫的相關數據量讀寫較為頻繁的時候,我們就主要考慮把MySQL數據庫的實際讀寫分開,用這種方法來提高數據庫的使用效率,(當然還有其他用處比如,備份數據),這個時候我們就要用到MySQL的一個功能,數據庫同步。

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

一、系統環境

主數據庫(master):

系統:Windows

數據庫:MySQL 5.0.51

IP:192.168.1.156

從數據庫(slave):

系統:Linux

MySQL數據庫:MySQL 5.0.67

IP:192.168.1.154

二、配置參數:

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

數據庫准備:

要同步的數據庫叫 account

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

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

主MySQL數據庫(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 

從MySQL數據庫

  1. master-host = 192.168.1.156   
  2. master-user = lzy   
  3. master-password = lzy   
  4. master-port = 3306   
  5. replicate-do-db = account  

要同步的數據庫

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

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

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

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

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

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

  1. 14   
  2. log-bin.000003   
  3. 337   
  4. 192.168.1.156   
  5. lzy   
  6. lzy   
  7. 3306   
  8. 60   
  9. 0  

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

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