傳統的MySQL在運作時,通常都會將資料庫備份,一旦設備或資料庫有問題就可以將其作復原,以達到資料損失最少的情況,但如果假設遇到資料不可遺失的情況,備份資料庫的方法就不太適用,這裡介紹如何讓資料庫可以做到Always On,資料不遺失,至於原理文章很多就不再細說。
STEP 1:安裝MySQL
—- CentOS 7 改為內建MariaDB —-
- 不安裝內建的MariaDB,強制安裝 Oracle版的MySQL
# wget http://dev.MySQL.com/get/MySQL57-community-release-el7-9.noarch.rpm
# rpm –ivh MySQL57–community–release–el7–9.noarch.rpm
# yum install –y MySQL–server
STEP 2:調整設定檔 my.cnf
# vi /etc/my.cnf
[mysqld] # Sync Imformation server-id = 2 # Master 上的server-id為1,2者不可相同 read-only = 0 # read-only = 1為啟用唯獨,適合用在Master-Slave架構 log-bin = mysql-bin binlog-do-db = DBName # 需要被同步的DB expire-logs-days=7 # Log 保留7天 auto_increment_increment = 2 auto_increment_offset = 2 # to ensure that changes that happened on the other master are also reflected in this machine's binary log relay-log = relay-bin relay-log-index = relay-bin.index relay-log-info-file = relay-bin.info log_slave_updates = 1 binlog_format="mixed" # 將資料庫的檔案格式設定成混合模式,避免因為同步產生的讀寫錯誤 slave-skip-errors = all # 忽略slave同步Premary Key值產生的錯誤導致無法同步
STEP 3:設定同步專用帳號
# mysql -u root -p
mysql>USE mysql; mysql>CREATE USER 'replication'@'%' IDENTIFIED BY '<password>'; mysql>GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; mysql>FLUSH PRIVILEGES;
STEP 4:查詢Master資訊
- 這邊需要2邊同時設定,在這裡範例中介紹單一台,另一台設定方式相同
mysql>show master status;
- 將File與Position記起來,設定Slave會用到
STEP 5:設定同步
這要在Slave設定,這要在Slave設定,這要在Slave設定,很重要
這要在Slave設定,這要在Slave設定,這要在Slave設定,很重要
mysql>SLAVE STOP; mysql>CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='replication', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.00005', MASTER_LOG_POS=24809168; mysql>SLAVE START;
STEP 6:檢查同步狀態
mysql>show slave status \G;
- 2邊出現上圖紅框訊息表示設定成功正在執行同步