自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何實現(xiàn)MySQL Replication 優(yōu)化

數(shù)據(jù)庫 MySQL
此文章主要向大家討論的是實現(xiàn)MySQL Replication 優(yōu)化的實際操作步驟,以及對MySQL Replication一些類型的介紹。

以下的文章主要討論的是MySQL Replication 優(yōu)化,我們大家都知道MySQL Replication的實際討論還是占為大多數(shù)的,很多內(nèi)容的實用性還是很強(qiáng)的,于是就總結(jié)了一下,希望會給你帶來一些幫助在此方面。

本人英文水平水平有限,難免有翻譯的不對的地方,有疑問歡迎討論:)

 

 

MySQL Replication延時的類型

 

1. 固定性的延時

Slave的數(shù)據(jù)持續(xù)性的落后于Master并且一直無法與Master的數(shù)據(jù)保持一致。

 

Slave的數(shù)據(jù)經(jīng)常在白天落后于Master,而在晚上可以趕上并與Master的記錄保持一致。

 

這種類型的延時通常是由于Slave服務(wù)器的負(fù)載已經(jīng)到達(dá)了上限或在白天訪問量大的時候到達(dá)上限造成的。

 

2. 非固定性的延時

Slave的數(shù)據(jù)只是短暫的落后于Master,可在短時間內(nèi)恢復(fù)

 

這類型的延時通常與批量任務(wù)和報表有關(guān),效率差的查詢也會導(dǎo)致這類延時

 

MySQL Replication的限制

MySQL的Replication是單線程的,意味著只能有效的使用一個CPU內(nèi)核和一個磁盤,一條復(fù)雜的查詢或者事務(wù)都導(dǎo)致進(jìn)程被阻塞,不過現(xiàn)在針對5.1版本的多線程Replication補(bǔ),還是pre版,有很多限制,感興趣的可以去看看。

Replication的容量

1. 理解什么是Replication的容量

可以將Replication暫停一個小時,重新啟動Replication后,觀察Slave的數(shù)據(jù)多久可以與Master一致。從Replication重新啟動到和Master數(shù)據(jù)一致所花費的時間與Replication暫停的時間的比值就是Replication的容量。

 

2. 建議保持Replication的容量在3倍以上,即延遲一個小時的數(shù)據(jù),Slave只需要20分鐘就能與Master的數(shù)據(jù)一致。

MySQL Replication的優(yōu)化

1. 5.0的MySQL中避免類似以下的更新語句

 

  1. INSERT … SELECT <complex query> 
  2. UPDATE .... WHERE <complex clause> 

 

 

復(fù)雜的查詢會導(dǎo)致Replication線程阻塞。如果是insert或update與select結(jié)合的語句,可以講select單獨執(zhí)行并保存在臨時表中,然后再執(zhí)行insert或者update。

 

如果使用的是5.1的MySQL,新功能中的行級Replication(RBR)可以解決這個問題。RBR可以將在Master上通過復(fù)雜查詢后更新的結(jié)果直接傳給Slave,Slave可以直接將結(jié)果更新到數(shù)據(jù)庫中。

 

2. 避免大的事務(wù)

太大的事務(wù)會造成Replication長時間阻塞,數(shù)據(jù)會嚴(yán)重滯后于Master。

 

Slave服務(wù)器的硬件選擇

更快的CPU內(nèi)核,對于單線程的Replication多核CPU是沒有任何優(yōu)勢的。

更高速的硬盤,包括更高的轉(zhuǎn)速和更好的高速緩存命中率,如果有錢的話上SSD吧

 

主從結(jié)構(gòu)的擴(kuò)展性問題

1. 如何降低寫操作的頻率

Master的寫操作會擴(kuò)散到所有的Slave上,所以高頻率的寫操作會降低Slave的讀操作效率。

 

至少保持一臺Slave做全庫同步,其他的Slave可以只做部分表的同步。當(dāng)然,這需要web應(yīng)用程序的配合來分配哪些查詢讀哪些Slave。

 

將一些更新操作放到memcached中,例如session和計數(shù)器。

 

Slave使用myisam引擎

 

將一些寫入量很大的更新操作直接在slave上執(zhí)行,而不通過Replication。

 

2. 如何更有效的利用Slave的硬件資源

使用分區(qū)

 

有選擇的對表進(jìn)行同步

 

在Slave上對數(shù)據(jù)進(jìn)行歸檔。

 

Session的持久化

 

為不同的應(yīng)用服務(wù)器分配不同的Slave進(jìn)行讀操作。

 

或者根據(jù)查詢類型的不同來分配不同的Slave。

 

3. 如何使你的程序最大化的利用Slave

將對數(shù)據(jù)更新不敏感的查詢放到Slave上,而需要實時數(shù)據(jù)的查詢則放到Master。

 

通過session的持久化,讓做了修改的用戶首先看到修改的內(nèi)容,其他的用戶可以等待Slave更新后再查看新內(nèi)容。

 

對于某些數(shù)據(jù),可以用memcached來存放數(shù)據(jù)的版本號,讀Slave的程序可以先對比Slave的數(shù)據(jù)和memcached數(shù)據(jù)的版本,如果不一致則去讀master。用戶和博客類的信息可以用這種方法。

 

在查詢前可以通過SHOW SLAVE STATUS檢測Slave的狀態(tài),然后根據(jù)返回的結(jié)果進(jìn)行服務(wù)器的選擇。 以上的相關(guān)內(nèi)容就是對MySQL Replication的介紹,望你能有所收獲。

【編輯推薦】

  1. MySQL連接字符串的經(jīng)驗總結(jié)
  2. 安裝MySQL在linux as3之下
  3. MySQL配置SSL的實際操作流程
  4. MySQL忘記密碼的正確解決方法
  5. MySQL 基本命令的用法與注意事項
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-05-24 11:26:27

MySQL鎖

2017-01-26 20:48:14

MySQL復(fù)制MySQL程序壓縮

2009-06-11 09:56:09

MySQL Repli原理

2023-02-26 23:43:43

MySQL數(shù)據(jù)庫分頁查詢

2019-09-11 10:40:49

MySQL大分頁查詢數(shù)據(jù)庫

2010-11-25 10:12:02

MySQL查詢優(yōu)化

2010-10-12 14:53:31

mysql索引優(yōu)化

2010-06-13 14:39:47

MySQL SQL

2010-06-04 10:48:15

Hadoop性能

2009-12-03 11:11:57

PHP網(wǎng)站優(yōu)化

2020-10-19 19:45:58

MySQL數(shù)據(jù)庫優(yōu)化

2019-06-03 10:30:42

MySQLCPU數(shù)據(jù)庫

2010-10-08 16:20:35

MySQL語句

2017-03-16 13:38:02

MySQLMGR

2011-07-26 09:04:44

MySQL Repli數(shù)據(jù)庫負(fù)載均衡

2021-03-29 09:00:00

Kubernetes容器工具

2016-12-20 18:26:51

Mysql優(yōu)化

2010-05-26 14:06:44

MySQL查詢

2010-05-17 17:09:29

Mysql LIMIT

2010-05-20 13:22:32

點贊
收藏

51CTO技術(shù)棧公眾號