文章出自 johnpupu
MySQL 設定寫入 Master 後, 自動 Replication 到 Slave 去, 運作基本原理是:
INSERT/UPDATE/DELETE 語法, 自動寫入 Master 的 binlog file.
由 GRANT REPLICATION 授權的帳號, 自動將 SQL 語法 repl 到 Slave 的 DB 執行.
因而完成 Replication 的動作.
Master
1. 複制 my.cnf
甲、#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
2. 修改my.cnf
甲、server-id = 1
乙、log-bin=mysql-bin
丙、expire-logs-days = 7
丁、max_binlog_size = 268435456
戊、# 若是 innodb, 且有用 transaction 的話, 需再加入下面兩行
innodb_flush_log_at_trx_commit=1
sync_binlog=1
3. # mysql -u root -p # 進入 mysql
甲、# 先假設 帳號 repl, 密碼 repl_pass, 此步驟是 設定 repl 的帳號/密碼,
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass';
# 格式:
mysql > GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass';
# (Replace
乙、# 先讓 DB 不要再寫資料進去
mysql> FLUSH TABLES WITH READ LOCK;
丙、# 這邊資料都要記好, 等一下設定 Slave 要用
mysql> SHOW MASTER STATUS;
+----------------------+------------+------------------+----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+------------+------------------+----------------------+
| mysql-bin.000014 | 232 | | |
+----------------------+------------+------------------+----------------------+
4. # 離開, 準備倒資料
mysql> quit
5. # 倒資料
cp –Rp /var/db/mysql /mnt/nas
6. # dump 完資料後, 進去 mysql 解除唯讀
mysql> UNLOCK TABLES;
Slave
7. 複制 my.cnf
甲、#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
8. 修改my.cnf
甲、server-id = 2 # server-id 不能與其它機器相同
乙、log-bin=mysql-bin
丙、expire-logs-days = 7
丁、max_binlog_size = 268435456
戊、# 若是 innodb, 且有用 transaction 的話, 需再加入下面兩行
innodb_flush_log_at_trx_commit=1
sync_binlog=1
9. 複制mysql 資料夾過來
甲、# mv /var/db/mysql /var/db/mysql.bak
乙、# cp -Rp /mnt/nas/mysql /var/db/mysql
10. 設定slave
甲、mysql> CHANGE MASTER TO
MASTER_HOST='MASTER_HOSTNAME',
MASTER_USER='repl',
MASTER_PASSWORD='repl_pass',
MASTER_LOG_FILE='mysql-bin.000014',
MASTER_LOG_POS=232;
# 這邊就要用到之前 Master 抄下來的值
乙、# 這樣子就會開始 Replication 了, 會將 LOG_POS 之後新的資料開始 sync 回來
mysql> START SLAVE;
丙、# 檢查一下設定
mysql> show master status;
丁、# 檢查一下設定, 看是不是有異常狀況
mysql> show slave status;
測試
11. 在 master: mysql> create database test2;
12. 在 slave: mysql> show database; # 應該會看到 test2
2010年4月13日 星期二
MySQL 設定 Replication (Master - Slave)
@ 下午5:31
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言