Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL表名映射方案及扩展应用

WBOY
Freigeben: 2016-06-07 17:59:02
Original
997 Leute haben es durchsucht

这篇文章介绍的简单方案应用于如下需求:主库为了性能考虑,作分库分表,从库则上为了多索引查询等需求,不作分表。 参数replicate-rewrite-db 及应用 这个参数是官方版本自带的。配置格式为 replicate-rewrite-db = from_db - to_db。 同步效果为将所有在fro

这篇文章介绍的简单方案应用于如下需求:主库为了性能考虑,作分库分表,从库则上为了多索引查询等需求,不作分表。

参数replicate-rewrite-db 及应用

这个参数是官方版本自带的。配置格式为 replicate-rewrite-db = from_db -> to_db。 同步效果为将所有在from_db上的操作都修改为对to_db的操作。

-

例子:

因此可以在主库上做分库,如需要将表abc分成10个,则主库上建10个db, 名字为sdb_1, sdb_2, … , sbd_10, 从库上则只有一个库sdb.

在从库my.cnf中配置10行,第一行为replicate-rewrite-db = sdb_1 -> sdb,以此类推。

存在的问题

这个参数能够解决一部分问题,但是对于单库内的分表则无法解决。而且若分库多了,比如需要建立1024个库,一来维护麻烦,二来my.cnf里面配置好长.

还有一个很要命的问题是,对于有些应用是按照时间分表,比如按月份新增表,若用此方法新增库,修改my.cnf则还需要重启slave。

另外,并不是所有的表都需要分表,库级别的映射方案也有诸多不便。

参数replicate-wild-rewrite-table

这个新增的参数目的就是要解决上面说到的问题。配置格式如下:

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

从库上同步效果为,将sbd库内所有符合abc_%格式的表的DML操作,都执行到 sdb.abc表中。



几点说明

1、  patch (代码) 基于Percona Server 5.5.18 (淘宝MySQL分支目前基于这个版本)

2、  只对row based replication的有效(多表更新的SQL改写问题)

3、  只对dml有效(细想一下就知道,ddl不能支持)
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage