最近要做資料庫同步,如果網上找了例子,成功,記錄下來,下回再看.
這個是網上找的一編文章.
以下配置在本機上已經成功:
實現功能:A為主伺服器,B為從伺服器,初始狀態時,A和B中的資料資訊相同,當A中的資料發生變化時,B也跟著發生相應的變化,使得A和B的資料資訊同步,達到備份的目的。
環境:
A、B的MySQL資料庫版本同為4.1.20
A:
作業系統:Windows 2003 server
IP地址:192.168.100.1
B:
作業系統:Windows 2003 server
的IP地址:192.168.100.2
配置過程:
1、在A的資料庫中建立一個備份帳戶,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO backup@'192.168.100.2'
IDENTIFIED BY ‘1234’;
建立一個帳戶backup,並且只能允許從192.168.100.2這個地址上來登陸,密碼是1234。
2、因為mysql版本新密碼演算法不同,所以進入mysql下,輸入:set password for 'backup'@'192.168.100.2'=old_password('1234');
3、關停A伺服器,將A中的資料拷貝到B伺服器中,使得A和B中的資料同步,並且確保在全部設定作業結束前,禁止在A和B伺服器中進行寫操作,使得兩資料庫中的資料一定要相同!
4、對A伺服器的配置進行修改,開啟mysql/my.ini檔案,在[mysqld]下面添加如下內容:
server-id=1
log-bin=c:log-bin.log
server-id:為主伺服器A的ID值
log-bin:二進位變更日值
5、重啟A伺服器,從現在起,它將把客戶堆有關資料庫的修改記載到二進位變更日誌裡去。
6、關停B伺服器,對B伺服器錦熙配置,以便讓它知道自己的鏡像ID、到哪裡去找主伺服器以及如何去串連伺服器。最簡單的情況是主、從伺服器分別運行在不同的主機上並都使用著預設的TCP/IP連接埠,只要在從伺服器啟動時去讀取的mysql/my.ini檔案裡添加以下幾行指令就行了。
[mysqld]
server-id=2
master-host=192.168.100.1
master-user=backup
master-password=1234
//以下內容為可選
replicate-do-db=backup
server-id:從伺服器B的ID值。注意不能和主伺服器的ID值相同。
master-host:主伺服器的IP地址。
master-user:從伺服器串連主伺服器的帳號。
master-password:從伺服器串連主伺服器的帳號密碼。
replicate-do-db:告訴主伺服器只對指定的資料庫進行同步鏡像。
7、重啟從伺服器B。至此所有設定全部完成。更新A中的資料,B中也會立刻進行同步更新。如果從伺服器沒有進行同步更新,你可以通過查看從伺服器中的mysql_error.log記錄檔進行排錯。
8、由於設定了slave的配置資訊,mysql在資料庫data目錄下產生master.info,所以如有要修改相關slave的配置要先刪除該檔案,否則修改的配置不能生效。
如果要兩台同時同步的話,只要server-id不同就行了.如果同步失敗,可以用下面的語句來查看.
1.show master statusG; 查看主機情況.
2.show slave statusG; 從機情況.
如果兩台的ID和檔案不同,可以用下面的語句更正.
CHANGE MASTER TO master_def [, master_def] ...
master_def:
MASTER_HOST = 'host_name'
| MASTER_USER = 'user_name'
| MASTER_PASSWORD = 'password'
| MASTER_PORT = port_num
| MASTER_CONNECT_RETRY = count
| MASTER_LOG_FILE = 'master_log_name'
| MASTER_LOG_POS = master_log_pos
| RELAY_LOG_FILE = 'relay_log_name'
| RELAY_LOG_POS = relay_log_pos
來源:http://blog.csdn.net/liq330