[ZZ]MySQL分表分塊到主從

來源:互聯網
上載者:User

標籤:

1. 記得大學的時候搭建一個網站,資料庫,開發環境,web服務一股腦全部在一台機器上,用幾個數M的大圖片做webpage的背景,覺得很cool。沒有訪問就沒有資料庫最佳化問題。

2. 以MySQL為例,當一個table中有數百萬條記錄的時候,查詢自然就會越來越慢。這時通常做的就是分庫分表。
分庫:垂直分割
簡單的說就是將1個DB中不同的table人為的分離到不同的DB。
比如:DB中存有使用者資訊和群資訊2個table,使用者又屬於一個群。把原來的1個DB分成2個。一個存使用者DB,一個群DB,這就是分庫。
優勢:對於不同的庫可以有不同的操作邏輯,自然分散資料庫壓力。
問題:不能跨庫查詢,不能保證資料的一致性和完整性。例如,插入使用者資訊的同時應該把使用者加入群中。分庫後設計2個DB的操作。不能用transaction來完成。

分表:水平分割
我們有一個user的table,因為它過大。我們按照userID這個欄位的最後一位來拆分。將user拆分為user_0, user_1...user_9。這樣也可以分散壓力。不過程式上的複雜度也會提高。
拆分的Rule是非常重要,要考慮到各個表的平衡和可擴充性。
CREATE TABLE user (id INT, name DECIMAL(7,2), date DATE) ENGINE=INNODB
PARTITION BY HASH(MONTH(date)) PARTITIONS 12;
上面就是一個按照月份拆分的例子。

Memcached(緩衝技術)+ 分庫分表 是初期用來緩解資料庫壓力的辦法。

3. 主從設定,MySQL Replication為例。
一主多從:
一般來說是由一台主庫和多台從庫組成,從庫可以作備份和容災,當主庫出現故障時,從庫就手動變成主庫。
(1)對Master(主庫)的操作都記錄在log中。
(2)Slave(從庫)將主庫的log events拷貝到自己的relay log中。
(3)Slave重做log中的事件,反映在從庫中。
一般寫操作master,讀從slave中取得。多個slave可以分流查詢的壓力。一般主從的設定都是配合Proxy或Amoeba來操作,下面將介紹。

具體設定參考:

http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/


主從+MySQL Proxy(MySQL Amoeba)
在主從設定的基礎上,還可以通過使用Proxy或Amoeba來將讀寫分離,從而減輕資料庫壓力。



以Mysql Proxy為例。Proxy相當於一個處於Client和Server之間的連接器。由Lua指令碼寫成。使用其可以將讀寫分離。對於寫的操作,我們讓master來處理,寫之後Slave自動同步master的更改。而對於讀,我們用slave來處理。

多主多從:
多主多從的設定,是一個loop環形,每個DB既是前一個DB的Slave又是後一個的Master。
注意的地方就是在對各個DB做插入操作時,要設定好auto_increment_increment和auto_increment_offset.為了防止最後merge時出現的主鍵衝突錯誤。
優勢: 一個Master掛掉,也還可以繼續DB操作。每個DB都可以進行讀寫,分散壓力。
多主多從的設計,寫操作不在只能在一個master上進心,而是可以在任何DB上進行。讀的操作壓力也可以更好的分散到各個DB中。

 

原地址:

http://blog.sina.com.cn/s/blog_7e89c3f501012vpr.html

[ZZ]MySQL分表分塊到主從

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.