標籤:
目的: 讓兩台mysql伺服器可以互為主從提供同步服務.
優點:
1. mysql的主從複製的主要優點是同步"備份", 在從機上的資料庫就相當於一個(基本即時)備份庫.
2. 在主從複製基礎上, 通過mysqlproxy可以做到讀寫分離, 由從機分擔一些查詢壓力.
3. 做一個雙向的主從複製, 兩台機器互相為主機從機, 這樣, 在任何一個機器的庫中寫入, 都會"即時"同步到另一台機器, 雙向的優點在於當一台主機發生故障時, 另一台主機可以快速的切換過來繼續服務.
步驟:
1. 在兩台機器上添加一個用於從機訪問的帳號, 賦予REPLICATION SLAVE許可權.
GRANT REPLICATION SLAVE ON *.* TO ‘slave‘@‘%‘ IDENTIFIED BY ‘slave‘;
為slave使用者賦予任何資料庫中任何錶上的REPLICATION SLAVE許可權, 此使用者可以在網路任意位置訪問, 訪問時以密碼slave標記.
當使用的是ubuntu的時候, 需要注意一點, /etc/mysql/my.cnf設定檔下的bind-address = 127.0.0.1這一行需要注釋, 不然從機在請求時是串連不到的.(我的是ubuntu, 其他版linux不知道會不會一樣)
為了保證工作的步驟明細, 可以採用在配置完使用者相關資訊之後, 在另一台機器上以指派的使用者密碼串連一次, 能成功則能保證當前步驟是正確的.
2. 設定管理員編號, 開啟bin-log
編輯mysql設定檔, linux: /etc/mysql/my.cnf, windows: c:/program files/mysql/mysql 5.0/my.ini
找到[mysqld]這個標籤,
在它的下面有兩行
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
開啟這兩行的注釋, 注意這裡的server-id是伺服器編號, 所以, 兩台伺服器上的值要設定的不一樣. 比如1和2
3. 使server-id和log-bin的配置修改生效:
sudo /etc/init.d/mysql restart
或者windows下在服務裡重啟mysql服務
4. 將兩台資料庫伺服器的mysql都鎖定
在mysql命令模式下:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
此時請保證執行這兩條命令的mysql控制台不要退出.
5. 分別重新開啟一個mysql控台台, 配置主機
CHANGE MASTER TO
MASTER_HOST = ‘host‘, #另一台機器的地址
MASTER_PORT = 3306, #另一台機器的連接埠
MASTER_USER = ‘slave‘,#另一台機器上第一步指派的使用者名
MASTER_PASSWORD = ‘slave‘, #另一台機器上第一步分配的密碼
MASTER_LOG_FILE = ‘mysql-bin.000001‘,#另一台機器上執行SHOW MASTER STATUS得到的檔案名稱
MASTER_LOG_POS = 192; #另一台機器上執行SHOW MASTER STATUS得到的位移量
6. 開啟同步
START SLAVE;
Mysql主從複製的配置(雙機互為主從)