主需要用一台電腦,從可以有多台電腦;這裡以一台主伺服器,一台從伺服器為例。
情境:主伺服器IP地址:192.168.1.104
從伺服器IP地址:192.168.1.114
作業系統Windows XP SP3
mysql版本:5.0.22(兩台伺服器的版本最好相同)
一、對主伺服器的配置(即操作在主伺服器上進行)
1. 設定一個同步帳號:
命令:grant file on *.* to ‘hfut’@’192.168.1.114’ identified by ‘hzh’
//為從伺服器添加使用者hfut,密碼為hzh。注意這句sql語句分配的是file
//操作許可權,還要為其分配insert等許可權,按照自己的需要進行;
命令:grant replication slave on *.* to ‘hfut’@192.168.1.114’ identifiedby ‘hzh’
2. 上述兩個命令設定了一個可以從從伺服器訪問主伺服器的帳號hfut,密碼是hzh,許可權可以自己繼續添加;
3. 建立一個用於同步的資料庫和表:
命令:create database huzunhua;
usehuzunhua;
createtable mytest(username varchar(20), password varchar(20));
說明:如果同步的資料庫裡面已經存在其他的資料,那麼需要自己手動將已有的資料複製,然後同步新的資料。
4. 開啟my.ini 在[mysqld]輸入下面的內容:
log-bin=c:\master.log
binlog-do-db=huzunhua
server_id=1
說明:第一行是日誌記錄位置,第二行是需要同步的資料庫的名稱,這裡就用的第三步建立的用例資料庫。第三行是一個master的ID,相當於標識,可以不設定。
5. 在cmd中用net stop mysql 命令終止mysql服務,然後用net start mysql命令啟動mysql服務,這樣就重啟了mysql服務,然後使用在主伺服器的mysql命令視窗中(第三步用到的視窗)使用命令:
show master status \G
得到如下輸出即可:
記錄File和Position兩個值,在後面需要繼續用到。
二、對從伺服器的配置(即操作在從伺服器上進行)
1. 開啟my.ini 在[mysqld]輸入下面的內容:
log_bin=c:/master.log
master-host=192.168.1.104
master-user=hfut
master-pass=hzh
master-port=3306
master_log_file=master.000006
master_log_pos=98
replicate-ignore-db = mysql
replicate-do-db =huzunhua
replicate-ignore-db =information_schema
master_log_file和master_log_pos參數就是上面中的那兩個值,一定要設定正確。當然這個設定也可以用命令進行的。、
2. 重啟mysql服務;
3. 使用命令:
show slave status \G
應該顯示下列資訊:
注意第一行的顯示是:Waiting for master to sent event 才算是配置成功了,另外Slave_IO_Running和Slave_SQL_Running顯示應該是yes,不然也同步不了。
三、測試
在主伺服器進行insert操作,然後在從伺服器中用select出在主伺服器中insert的值,應該是可以實現的、