`

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

阅读更多

http://dinglin.iteye.com/

 

 

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

 

 参数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不能支持)

4、 结合多主复制 http://t.cn/zWwSFhM ,则整个方案能将分库分表的都同步到slave的同一个表上

分享到:
评论

相关推荐

    postfix+mysql.pdf

    通过将Postfix与MySQL集成,可以实现邮件系统的用户认证和配置动态管理,提高系统的可扩展性和灵活性。 #### 四、MySQL服务管理 - **启动MySQL服务**:`/etc/init.d/mysqld start` - **关闭MySQL服务**:`/etc/init...

    excel数据导入mysql工具

    MySQL是一款开源、免费的RDBMS,被广泛应用于Web应用程序和企业级系统,支持高性能、可扩展性和数据安全性。它可以存储大量数据,且提供了SQL语言来执行查询、更新和管理数据,适合处理复杂的数据关系和事务。 ...

    excel导入mysql 完整版

    而MySQL则是一款开源的关系型数据库管理系统,广泛应用于Web应用程序,因其高效率和可扩展性而备受青睐。将Excel数据导入MySQL,可以帮助用户将静态的Excel文件转化为动态、实时更新的数据库,便于进行复杂的查询和...

    大数据入门HIVE和MySQL安装包

    1. **Hive Metastore**:存储元数据,包括表名、列名、分区信息等,通常与MySQL或PostgreSQL等RDBMS集成。 2. **Hive Driver**:处理用户提交的HQL查询,解析并转化为MapReduce任务。 3. **Hive执行器**:执行实际的...

    shp2mysql的实现

    5. **配置导入选项**:在导入设置中,确保目标表名和字段映射正确。你可以根据需要调整其他高级选项,比如处理空值、数据类型转换等。 6. **执行导入**:确认所有设置无误后,点击“运行”开始导入过程。等待进度条...

    hibernate映射和查询

    Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 Hibernate 核心功能的基础。 **一...

    java备份mysql数据库

    3. **Apache Commons Collections**:`commons-collections-3.2.1.jar`是Apache Commons项目的一部分,提供了许多实用的集合框架扩展,如列表、映射和队列的操作。在备份过程中,这些工具可以帮助处理数据集合,比如...

    T4模板数据表映射实体

    这种映射通常在ORM(对象关系映射)框架中非常常见,例如Entity Framework,它使得在.NET应用程序中操作数据库变得更为简便。 首先,我们需要理解T4模板的基本结构。T4模板由两部分组成:文本和控制逻辑。文本部分...

    J2ME+servlet+mysql查询数据

    【Servlet】:Servlet是Java语言中的一个接口,用于扩展服务器的功能。在Web应用中,Servlet处理来自客户端(通常是浏览器)的HTTP请求,并返回响应。在本例中,`sql2000test` 类继承了 `HttpServlet`,实现`doGet` ...

    eclipse rcp excel表转mysql程序 源码

    此外,可能还需要提供配置选项,允许用户自定义数据库连接信息、表名、字段映射等。 总之,这个“eclipse rcp excel表转mysql程序”项目结合了Eclipse RCP的桌面应用开发能力、Apache POI的Excel处理功能以及JDBC的...

    分布式mysql邮件解析1

    分库分表策略可以通过配置表名和字段映射来实现,如基于哈希、范围等方式,将数据均匀分配到各个子表中。 4.3 用户名密码修改 在server.xml中,需要配置MyCat的管理员用户名和密码,以及连接到MySQL数据库的用户...

    PHP将数据从Oracle向Mysql数据迁移的技术要领

    2. **字段类型转换**:由于Oracle和MySQL的字段类型不完全对应,需要建立字段类型的映射表,如Oracle的`NUMBER`对应MySQL的`INT`或`BIGINT`,`VARCHAR2`对应`VARCHAR`或`TEXT`等。 3. **处理约束**:通过查询`USER_...

    mysql 连接数据库包

    MySQL数据库是世界上最受欢迎的开源关系型数据库之一,广泛应用于各种规模的应用程序中。在Java开发环境中,连接并操作MySQL数据库通常需要使用特定的驱动包,例如JDBC(Java Database Connectivity)驱动。MyBatis...

    solr5.3.1 导入mysql数据

    比如,我们需要指定 MySQL 的 JDBC 驱动、连接信息、表名、查询语句等。 3. **执行 Full Import**: 使用 Solr 的管理界面或命令行工具执行全量导入。这将执行 DataConfig.xml 中的 SQL 查询,将结果转换为 Solr ...

    mysql mybaits代码自动生成工具

    2. **定义数据库表映射**:在配置文件中,你需要列出需要自动生成代码的数据库表,并可以设置表名与Java类名的映射规则。 3. **生成代码**:运行MBG,它会根据配置文件读取数据库信息,然后生成指定的Java文件和XML...

    shp2mysql-win-64_6666_

    6. **命令行工具**:shp2mysql-win-64可能是通过命令行运行的,用户需要了解基本的命令行操作和可能的命令参数,以便配置数据导入设置,如数据库连接信息、表名和字段映射等。 7. **64位系统兼容性**:由于文件名中...

    mybatis自动生成映射

    用户只需要在配置文件中指定数据库连接信息、表名及相应的规则,MBG就能根据这些信息自动生成所需的代码。 2. **配置MBG**: 要使用MBG,首先需要在项目中引入MBG的依赖,并创建一个XML配置文件。配置文件中包含...

    Hive安装所需软件文件压缩包(包括Hive,Mysql以及依赖包).rar

    Hive提供了一个可扩展的架构,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,方便对大数据进行分析处理。Hive-0.9.0是此压缩包中包含的一个版本,可能较旧,但依然能用于学习和理解Hive的基本操作...

    mysql,sqlserver,Oracle 数据库生成javabean小工具

    MySQL以其开源、免费和高性能受到青睐,SQL Server以其强大的管理和安全性见长,Oracle则在大型企业级应用中表现出色,提供高级的数据管理功能。 2. **生成javabean**: 生成javabean的过程主要是将数据库中的表...

Global site tag (gtag.js) - Google Analytics