MySQL表名映射方案及擴展應用_MySQL

這篇文章介紹的簡單方案應用於以下需求:主庫爲了性能考慮,做分庫分表,從庫則上爲了多索引查詢等需求,不做分表。ide

參數replicate-rewrite-db 及應用性能

       這個參數是官方版本自帶的。配置格式爲 replicate-rewrite-db = from_db -> to_db。 同步效果爲將全部在from_db上的操做都修改成對to_db的操做。spa

         例子:.net

       所以能夠在主庫上作分庫,如須要將表abc分紅10個,則主庫上建10個db, 名字爲sdb_1, sdb_2, … , sbd_10, 從庫上則只有一個庫sdb.orm

       在從庫my.cnf中配置10行,第一行爲replicate-rewrite-db = sdb_1 -> sdb,以此類推。server


存在的問題索引

       這個參數可以解決一部分問題,可是對於單庫內的分表則沒法解決。並且若分庫多了,好比須要創建1024個庫,一來維護麻煩,二來my.cnf裏面配置好長.get

       還有一個很要命的問題是,對於有些應用是按照時間分表,好比按月份新增表,若用此方法新增庫,修改my.cnf則還須要重啓slave。同步

       另外,並非全部的表都須要分表,庫級別的映射方案也有諸多不便。it


參數replicate-wild-rewrite-table

       這個新增的參數目的就是要解決上面說到的問題。配置格式以下:

replicate-wild-rewrite-table=sdb.abc_% -> sdb.abc.

       從庫上同步效果爲,將sbd庫內全部符合abc_%格式的表的DML操做,都執行到 sdb.abc表中。


幾點說明

一、  這個patch(代碼)基於Percona Server 5.5.18 (淘寶MySQL分支目前基於這個版本)

二、  只對row based replication的有效

三、  只對dml有效

相關文章
相關標籤/搜索