在CentOS上配置MySQL主從複製(Master-Slave)

來源:互聯網
上載者:User

在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主從複製非同步半同步執行個體

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.