在CentOS上配置MySQL主從複製(Master-Slave)
前面一篇介紹了免編譯版的MySQL的安裝,確實很方便,現在再來看看如何配置MySQL主從複製。資料庫的安裝請參考如何在CentOS6.5系統上安裝免編譯版的MySQL,我這裡假設你已經分別在兩台機器上安裝好了MySQL資料庫,都先不啟動。
先在Master上操作
#編輯my.cmf檔案,在[mysqld]以下添加兩行內容
vi /etc/my.cnf
[mysqld]
innodb_flush_log_at_trx_commit=2
sync_binlog=1
#然後修改以下內容,一般是在mysql-bin後面加上IP最後三位元,個人習慣
log-bin=mysql-bin 改成 log-bin=mysql-bin-60
#server-id不變
server-id=1
關於innodb_flush_log_at_trx_commit
抱怨Innodb比MyISAM慢 100倍?那麼你大概是忘了調整這個值。預設值1的意思是每一次事務提交或事務外的指令都需要把日誌寫入(flush)硬碟,這是很費時的。特別是使用電 池供電緩衝(Battery backed up cache)時。設成2對於很多運用,特別是從MyISAM錶轉過來的是可以的,它的意思是不寫入硬碟而是寫入系統緩衝。日誌仍然會每秒flush到硬 盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的資料。而值2隻會在整個作業系統 掛了時才可能丟資料。
關於sync_binlog
sync_binlog:這個參數是對於MySQL系統來說是至關重要的,他不僅影響到Binlog對MySQL所帶來的效能損耗,而且還影響到MySQL中資料的完整性。對於“sync_binlog”參數的各種設定的說明如下:
sync_binlog=0,當事務提交之後,MySQL不做fsync之類的磁碟同步指令重新整理binlog_cache中的資訊到磁碟,而讓Filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁碟。
sync_binlog=n,當每進行n次事務提交之後,MySQL將進行一次fsync之類的磁碟同步指令來將binlog_cache中的資料強制寫入磁碟。
在MySQL中系統預設的設定是sync_binlog=0,也就是不做任何強制性的磁碟排清指令,這時候的效能是最好的,但是風險也是最大的。因為一旦系統Crash,在binlog_cache中的所有binlog資訊都會被丟失。而當設定為“1”的時候,是 最安全但是效能損耗最大的設定。因為當設定為1的時候,即使系統Crash,也最多丟失binlog_cache中未完成的一個事務,對實際資料沒有任何實質性影響。從以往經驗和相關測試來看,對於高並發事務的系統來說,“sync_binlog”設定為0和設定為1的系統寫入效能差距可能高達5倍甚至更多。
#啟動主要資料庫服務
service mysqld start
#登入資料庫
mysql -uroot -p密碼
#授權給從資料庫伺服器192.168.1.61,使用者名稱repl,密碼123456,請根據自己實際情況修改,這裡只做示範
mysql > GRANT REPLICATION SLAVE ON *.* to 'repl'@'192.168.1.61' identified by'123456';
mysql > show master status;
記錄下File及Position的值,在後面進行從伺服器配置的時候需要用到
現在切換到從(Slave)上操作
vi /etc/my.cnf
#在[mysqld]以下添加兩行內容
[mysqld]
innodb_flush_log_at_trx_commit=2
sync_binlog=1
#然後修改以下內容,一般是在mysql-bin後面加上IP最後三位元,個人習慣
log-bin=mysql-bin 改成 log-bin=mysql-bin-61
#ID值必須唯一
server-id=1修改為 server-id=2
#啟動從資料庫服務
service mysqld start
#登入資料庫
mysql -uroot -p密碼
#執行以下語句
mysql> change master to
master_host='192.168.1.60',
master_user='repl',
master_password='123456',
master_log_file='File的內容',
master_log_pos=Position的內容;
#如果沒有報錯,就啟動Slave同步進程
mysql> start slave;
#主從同步檢查
mysql> show slave status\G
==============================================
Slave_IO_State:
Master_Host:192.168.1.60
Master_User: repl
Master_Port:3306
......
Slave_IO_Running: YES
Slave_SQL_Running: YES
以下內容省略......
==============================================
一定要確保其中Slave_IO_Running與Slave_SQL_Running的值為YES,主從配置才是成功的。
搞定,收工。
PS:這是在資料庫剛裝好的時候就配置的主從配置,沒有任何資料,那麼如果是已經有一台資料庫伺服器,要加一台從資料庫伺服器要怎麼配置?這個還需研究。
Linux環境下MySQL5.6 Master-Slave配置實戰
Linux下MySQL主從複製(Master-Slave)與讀寫分離(Amoeba)實踐
生產環境MySQL主主同步主鍵衝突處理
MySQL主從失敗 錯誤Got fatal error 1236
MySQL主從複製,單台伺服器上實施
搭建MySQLProxy 伺服器實現讀寫分離+主從同步
MySQL 5.5 主從雙向同步
MySQL 5.5主從同步排錯
MySQL主從複製非同步半同步執行個體
本文永久更新連結地址: