/** *@ Date 2010.09.13 *@ Author 狼 *@ Email 1317983530@qq.com *@ QQ 1317983530 *@部落格 http://hi.baidu.com/1317983530/home */ 這兩天在搞mysql 資料同步問題,這配置很繁瑣。我這裡用了兩台機子做測試, 都是我本地的機子.分別是 主伺服器 192.168.0.118 從伺服器 192.168.0.187 1. 首先在 主從伺服器分別建立資料庫 backup_db和backup_table表作為測試 CREATE TABLE `backup_table` ( `id` int(11) NOT NULL auto_increment, `name` varchar(20) character set utf8 NOT NULL, `sex` varchar(2) character set utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 注意主從伺服器資料庫結構必須一致。否則出錯. 2.在住伺服器的mysql按照目錄找到my.ini檔案,開啟這個檔案在檔案末尾加上如下代碼 #主機器的my.cnf(或my.ini)中應該配置: server-id=1 #表示主伺服器 log-bin=e:/mysqlback/ #同步事件的日誌記錄檔案 log-bin-index =e:/mysqlback/master-log-bin.index log-error =e:/mysqlback/master-error.log #錯誤記錄檔 binlog-do-db=backup_db #提供資料同步服務的資料庫(這裡是剛才建立的測試資料庫) 3. 配置完主伺服器後 開啟從伺服器的my.cnf(或my.ini)檔案 在檔案末尾加入 如下代碼 server-id=2 #表示從伺服器 master-host=192.168.0.118 #主機A的地址
master-user=testuser #主機A提供給B的使用者,該使用者中需要包括資料庫backup_db的許可權
master-password=testpwd #訪問密碼 master-port=3306 #連接埠,主機的MYSQL連接埠
master-connect-retry=60 #稍候再試60秒 replicate-do-db=backup_db #同步的資料庫 4. 完成後,然後在主從伺服器的cmd 裡面開啟mysql控制台 授權從伺服器的testuser使用者來主伺服器同步資源的許可權 主伺服器執行 GRANT FILE ON *.* TO testuser@'192.168.0.187' IDENTIFIED BY 'testpwd' 從伺服器執行 GRANT FILE ON *.* TO testuser@'192.168.0.118' IDENTIFIED BY 'testpwd' 5. 重啟主從伺服器的mysql 從伺服器 mysql>slave start ; 主伺服器執行 mysql>show master status; 結果如下 mysql> show master status; +---------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------+----------+--------------+------------------+ | .000002 | 613 | backup_db | | +---------+----------+--------------+------------------+ 1 row in set (0.00 sec) 從伺服器 mysql>start slave; mysql> show slave status/G; 執行結果 *************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.0.118 Master_User: testuser Master_Port: 3306 Connect_Retry: 60 Master_Log_ mysql-bin.000016 Read_Master_Log_Pos: 173 Relay_Log_ mysqld-relay-bin.000002 Relay_Log_Pos: 98 Relay_Master_Log_ mysql-bin.000016 Slave_IO_Running: No Slave_SQL_Running:Yes ... 執行結果 Slave_IO_Running 和 Slave_SQL_Running 必須為yes 如果你發現Slave_IO_Running: No 那麼可能是許可權問題 解決步驟: mysql> show master status; +------------------+--------------------+----------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+-------------------+-----------------+------------------+ | mysql-bin.000001 | 98 | | |
+------------------+--------------------+-----------------+------------------+ mysql> slave stop; mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98; mysql> slave start; 或者開啟主從伺服器的 phpmyadmin 找到testuser 使用者 設定它們的許可權 然後再分別重啟,再到從伺服器中mysql> show slave status/G; 發現 Slave_IO_Running: Yes Slave_SQL_Running:Yes 這時你在 主伺服器的phpmyadmin 找到 backup_db 的 backup_table表 插入一條記錄, 在到從伺服器中看看這張表,發現多了一條記錄 ,成功了!!! |