目錄
一、不停庫不鎖表在線主從配置
二、MySQL主主復(fù)制
三、關(guān)于auto_increment
四、MySQL讀寫分離
一、不停庫不鎖表在線主從配置
mysqldump適合備份10G以下的數(shù)據(jù)量,比較方便快捷。當(dāng)需要備份的數(shù)據(jù)量達(dá)到100G以上時(shí),mysqldump對(duì)原庫的壓力太大,導(dǎo)出性能很差。此時(shí)Percona-Xtrabackup備份工具是更好的選擇,Percona-Xtrabackup支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫),它有以下優(yōu)勢(shì):
xtrabackup優(yōu)勢(shì):
- 對(duì)InnoDB引擎的表做熱備
- 增量備份
- 流壓縮傳輸?shù)搅硗獾姆?wù)器上
- 在線移動(dòng)表
- 更簡單的創(chuàng)建主從同步
- 備份時(shí)不增加服務(wù)器負(fù)載
使用 Xtrabackup 在線對(duì)MySQL做主從復(fù)制具體操作步驟詳見如下鏈接:http://seanlook.com/2015/12/14/mysql-replicas/
MYSQL主從同步因主鍵沖突導(dǎo)致的主從無法同步情況
解決方法參考如下兩個(gè)鏈接:
http://www.rfyy.net/archives/2309.html
http://blog.51cto.com/storysky/259280
二、MySQL主主復(fù)制
原理:主主復(fù)制在兩臺(tái)MySQL互為主從,它們都可以變更數(shù)據(jù),其中一臺(tái)變更了數(shù)據(jù)另外一臺(tái)也會(huì)同步相應(yīng)的變更。
- 架構(gòu)方案思路:
- 兩臺(tái)mysql都可讀寫,互為主備,默認(rèn)只使用一臺(tái)(masterA)負(fù)責(zé)數(shù)據(jù)的寫入,另一臺(tái)(masterB)備用。
- masterA是masterB的主庫,masterB又是masterA的主庫,它們互為主從。
- 兩臺(tái)主庫之間做高可用,可以采用keepalived等方案(使用VIP對(duì)外提供服務(wù))。
- 所有提供服務(wù)的從服務(wù)器與masterB進(jìn)行主從同步(雙主多從)。
- 建議采用高可用策略的時(shí)候,masterA或masterB均不因宕機(jī)恢復(fù)后而搶占VIP(非搶占模式)。
這樣做可以在一定程度上保證主庫的高可用,在一臺(tái)主庫down掉之后,可以在極短的時(shí)間內(nèi)切換到另一臺(tái)主庫上(盡可能減少主庫宕機(jī)對(duì)業(yè)務(wù)造成的影響),減少了主從同步給線上主庫帶來的壓力。
- 不足:
- masterB可能會(huì)一直處于空閑狀態(tài)(可以用它當(dāng)從庫,負(fù)責(zé)部分查詢)。
- 主庫后面提供服務(wù)的從庫要等masterB先同步完了數(shù)據(jù)后才能去masterB上去同步數(shù)據(jù),這樣可能會(huì)造成一定程度的同步延時(shí)。
三、關(guān)于auto_increment
MySQL中對(duì)于表上ID自增列可以在創(chuàng)建表的時(shí)候指定列上的auto_increment屬性和auto_increment_offset屬性。
auto_increment_increment控制列中的值的增量值,也就是步長。
auto_increment_offset確定AUTO_INCREMENT列值的起點(diǎn),也就是初始值。
四、MySQL讀寫分離
- 原理:
讀寫分離就是在主服務(wù)器上修改,數(shù)據(jù)會(huì)同步到從服務(wù)器,從服務(wù)器只能提供讀取數(shù)據(jù),不能寫入,實(shí)現(xiàn)備份的同時(shí)也實(shí)現(xiàn)了數(shù)據(jù)庫性能的優(yōu)化,以及提升了服務(wù)器安全。
- 目前較為常見的Mysql讀寫分離分為以下兩種:
- 基于程序代碼內(nèi)部實(shí)現(xiàn)
在代碼中根據(jù)select 、insert進(jìn)行路由分類,這類方法也是目前生產(chǎn)環(huán)境下應(yīng)用最廣泛的。優(yōu)點(diǎn)是性能較好,因?yàn)槌绦蛟诖a中實(shí)現(xiàn),不需要增加額外的硬件開支,缺點(diǎn)是需要開發(fā)人員來實(shí)現(xiàn),運(yùn)維人員無從下手。- 基于中間代理層實(shí)現(xiàn)
代理一般介于應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,代理數(shù)據(jù)庫服務(wù)器接收到應(yīng)用服務(wù)器的請(qǐng)求后根據(jù)判斷后轉(zhuǎn)發(fā)到,后端數(shù)據(jù)庫,有以下代表性的程序。
一些擴(kuò)展
mysql-proxy 實(shí)現(xiàn)讀寫分離
http://blog.51cto.com/zzclinux/1980487
mysql-proxy類似的產(chǎn)品有:
mycat 基于阿里的開源軟件cobar,官網(wǎng) www.mycat.io
https://my.oschina.net/ruoli/blog/1789370
mycat實(shí)現(xiàn)分庫分表
https://www.cnblogs.com/joylee/p/7513038.html
atlas 出自于360,不維護(hù)不更新了 https://blog.csdn.net/AnPHPer/article/details/80566385
mysql環(huán)形主從
http://ask.apelearn.com/question/11437
mysql架構(gòu)演變 http://www.aminglinux.com/bbs/thread-8025-1-1.html
MHA架構(gòu)
http://blog.51cto.com/xiaoshuaigege/2060768
比較復(fù)雜的mysql集群架構(gòu) http://ask.apelearn.com/question/17026