MySQL5.6一主多從的半同步複製執行個體
半同步簡介:
在預設情況下,MySQL的複製是非同步,這意味著主伺服器及其從伺服器是獨立的。非同步複製可以提供最佳的效能,因為主伺服器在將更新的資料寫入它的二進位日誌(Binlog)檔案中後,無需等待驗證更新資料是否已經複製到從伺服器中,就可以自由處理其它進入的交易處理請求。但這也同時帶來了很高的風險,如果在主伺服器或從伺服器端發生故障,會造成主從資料的不一致,甚至在恢複時造成資料丟失。
從MySQL5.5開始引入了一種半同步複製功能,該功能可以確保主伺服器和訪問鏈中至少一台從伺服器之間的資料一致性和冗餘。在這種配置結構中,一台主伺服器和其許多從伺服器都進行了配置,這樣在複寫拓撲中,至少有一台從伺服器在父主伺服器進行交易處理前,必須確認更新已經收到並寫入了其中繼日誌(Relay Log)。當出現逾時,源主伺服器必須暫時切換到非同步複製模式重新複製,直到至少有一台設定為半同步複製模式的從伺服器及時收到資訊。
繼5.5半同步複製後,MySQL5.6又對其進行了最佳化和改進,其中有兩個地方較為重要:
1、在主從切換後,在傳統的方式裡,需要找到binlog和POS點,然後更改master指向,而在mysql5.6裡,你無須再知道binlog和POS點,你只需要知道master的IP、連接埠,帳號密碼即可,因為同步複製是自動的,mysql通過內部機制GTID自動找點同步。
2、多線程複製,以前的版本,同步複製是單線程的,只能一個一個執行,在MySQL5.6裡,可以做到多個庫之間的多線程複製,但一個庫裡的表,多線程複製是無效的。
--------------------------------------分割線 --------------------------------------
MySQL主從同步設定的重要參數log_slave_updates
Ubuntu 14.04下安裝MySQL
《MySQL權威指南(原書第2版)》清晰中文掃描版 PDF
Ubuntu下Nginx做負載實現高效能WEB伺服器5---MySQL主主同步
生產環境MySQL主主同步主鍵衝突處理
MySQL主從失敗 錯誤Got fatal error 1236
MySQL主從複製,單台伺服器上實施
--------------------------------------分割線 --------------------------------------
一、實驗環境準備
1.1、安裝平台:vmware workstation 10
作業系統:CentOS release 6.6 (Final) x86_64,迷你安裝。
MySQL版本:mysql-5.6.24-linux-glibc2.5-x86_64
關閉防火牆
1.2、伺服器IP地址規劃:
MySQL Master:192.168.1.152
MySQL Slave1:192.168.1.201
MySQL Slave2:192.168.1.202
1.3、實驗拓撲:
二、安裝Mysql5.6
2.1、由於是迷你安裝的系統,需要安裝一些基本的組建
# yum -y groupinstall "Perl Support"
# yum -y instdall vim wget
# cd /usr/local/src
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
2.2、建立使用者和資料目錄。
# mkdir -pv /mydata/data
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data
2.3、安裝並初始化mysql
# tar zxvf mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.6.24-linux-glibc2.5-x86_64 mysql
# cd mysql
# chown -R mysql:mysql .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root .
2.4、為mysql提供主設定檔
12 # cd /usr/local/mysql
# cp support-files/my-default.cnf /etc/my.cnf
2.5、為mysql配置sysv服務指令碼
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld //添加至服務列表
# chkconfig mysqld on
為了使用mysql的安裝符合系統使用規範,並將其開發組件匯出給系統使用,這裡還需要進行如下步驟:
2.6、輸出mysql的man手冊至man命令的尋找路徑。
編輯/etc/man.config,添加如下行即可
MANPATH /usr/local/mysql/man
2.7、輸出mysql的標頭檔至系統標頭檔路徑/usr/include
這可以通過簡單的建立連結實現
# ln -sv /usr/local/mysql/include /usr/include/mysql
2.8、輸出mysql的庫檔案給系統庫尋找路徑。
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
# ldconfig //讓系統重新載入系統庫
2.9、修改PATH環境變數,讓系統可以直接使用mysql的相關命令。
# echo "export PATH=$PATH:/usr/local/mysql/bin " >/etc/profile.d/mysql.sh
# source /etc/profile.d/mysql.sh
以上安裝過程在三台伺服器軍需執行。
更多詳情見請繼續閱讀下一頁的精彩內容: