目的:MySQL 設定寫入 Master 後, 自動 Replication 到 Slave 去


設定 Replication 的操作 (Master)
1.vi /etc/my.cnf
 

#bind-address    = 127.0.0.1
server-id    = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days     = 7   #(binlog只保留7天)
 
#若是 innodb, 且有用 transaction 的話, 需再加入下面兩行
innodb_flush_log_at_trx_commit=1
sync_binlog=1

2.service mysqld restart
3.mysql -u root -p # 進入 mysql
4.mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass'; # 先假設 帳號 repl, 密碼 repl_pass, 此步驟是 設定 repl 的帳號/密碼, 格式: GRANT REPLICATION SLAVE ON *.* TO
'repl_user'@'%.mydomain.com' IDENTIFIED BY 'repl_password'; (Replacewith a real password!)
5.mysql> FLUSH TABLES WITH READ LOCK; # 先讓 DB 不要再寫資料進去
6.mysql> SHOW MASTER STATUS; # 這邊資料都要記好, 等一下設定 Slave 要用
 

 +----------------------+------------+------------------+----------------------+
 | File | Position| Binlog_Do_DB| Binlog_Ignore_DB |
 +----------------------+------------+------------------+----------------------+
 | mysql-bin.000012 |   1567  | |
 +----------------------+------------+------------------+----------------------+
 
7.mysql> quit # 離開, 準備倒資料
8.倒資料, 可以由下述的方法倒, 此次採用步驟 1
 
A.mysqldump -u root -p DB > dbdump.sql
B.mysqldump --all-databases --lock-all-tables >dbdump.sql
C.mysqldump --all-databases --master-data >dbdump.sql # --master-data: 會自動將CHANGE MASTER 的語法帶在裡面
 
9.mysql -u root -p # 進入 mysql
10.mysql> UNLOCK TABLES; # dump 完資料後, 進去 mysql 解除唯讀
11.再來就是將 dbdump.sql scp 到 Slave 去即可.
12.Master 就到此為止.

設定 Replication 的操作 (Slave)
1.vi /etc/mysql/my.cnf
 
server-id    = 2  # server-id 不能與其它機器相同
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days     = 7  #(binlog只保留7天)
2.mysql -u root -p # 進入 mysql
3.mysql> create database DBNAME;
4.mysql> use DBNAME; source dbdump.sql; 或 $ mysql -u root -p DBNAME < dbdump.sql

5.mysql>CHANGE MASTER TO
MASTER_HOST='IP',
MASTER_USER='ACCOUNT',
MASTER_PASSWORD='PASSWORD',
MASTER_LOG_FILE='mysql-bin.000012',
MASTER_LOG_POS=1567;
6.mysql> START SLAVE; # 這樣子就會開始 Replication 了, 會將 LOG_POS 之後新的資料開始 sync 回來.
7.mysql> show master status; # 檢查一下設定
8.mysql> show slave status \G; # 檢查一下設定, 看是不是有異常狀況.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
這兩行都必須是YES才算是正常
大概就是這樣

arrow
arrow
    全站熱搜

    紐士比 發表在 痞客邦 留言(0) 人氣()