mysql多台伺服器資料同步

來源:互聯網
上載者:User
mysql多台伺服器資料同步

 

/**
*@ 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表 插入一條記錄,
在到從伺服器中看看這張表,發現多了一條記錄 ,成功了!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.