`

MySQL Federated引擎实现多主一备

 
阅读更多
偶尔我们需要这样做。

在一台主机上如果复制多个主库,可以很简单:在备库主机上启动多个MySQL实例(mysqld_muilt),每个实例使用一个端口,复制多台主库就可以了。但是如果希望复制过来的数据都在同一个实例中,事情就复杂了。

1. 问题以及开源社区的尝试
需求:多个主库都复制到一个备库,复制过来的数据都在一个实例中,这样实现对应用层的透明。目前,MySQL本身不提供这样的功能(考虑过,但一直未实现)。

1.1 开源社区也有很多方案和想法,例如Tungsten replicator:可以支持异构数据复制,JAVA实现,数据量较大时,性能较差,而且MySQL版本更新较快,而该软件支持较慢;

1.2 再如P.Linux的尝试:通过拉取多个主库上的Binlog在单个备库上应用的方式,对MySQL没有入侵,实现也较为简单。

1.3 High Performance MySQL还可以通过多级复制的方式实现:例如有主库DB1、DB2,都需要复制到S1上,则先配置D2复制D1的全部数据,然后再从S1上复制D2的全部数据就可以了。整理需要注意D2上的log-slave-update需要打开,为了减少D2的压力,DB上复制过来的表可以全部使用Blackhole引擎。

1.4 另外,还有一些欠成熟的Patch实现。

2. MySQL Federated引擎的“软链接”特性
Federated引擎可以在本地数据库中创建一个远端数据表的“软链接”。这样,访问远端数据表就如同访问本地数据表。(这里远端可以是不同主机上的不同实例)



3. 使用Federated数据表实现多主一备
例如,主库DB1,DB2,都需要复制到S1上,这里DB1,DB2,S1分别在主机H1,H2,H3上。首先,在主机H3(S1所在的主机)上其另外起两个MySQL实例S2、S3,分别复制主库DB1和DB2,然后在实例S1上建立多个Federated表关联S2、S3中的数据表(相当于在S1中建立到S2、S3的软连接)。



这时应用,连接到S1,就可以同时透明的访问到DB1、DB2中的实时数据表了。

4. 一些说明
4.1 上面描述的方法,也可以直接在S1上建立到DB1、DB2各个表的软连接,但是为了最大程度的减少对主库的影响,最好如上多配一层备库。

4.2 最简单的可以直接在备库上配置多个实例,让应用连接多个实例就好了,无需上面这么复制的配置。

参考文献:

1. MySQL Manual: The FEDERATED Storage Engine

2. Post of MySQL Forums : Multiple masters to single slave

3. 通过tungsten replicator实现mysql多主一从的备份架构

4. Is it possible to do N-master => 1-slave replication with MySQL

5. MySQL Multi-Master – Single-Slave – Replication

分享到:
评论

相关推荐

    MySQL federated引擎 实现类似oracle dblink功能

    MySQL数据库,有很多跨服务器访问的情况.SQL Server使用链接服务器实现跨服务器访问,而MySQL是通过Federated引擎实现的。

    Mysql 开启Federated引擎的方法

    FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。 但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则...

    「mysql使用federated实现类似oracle的dblink的功能」.pdf

    「mysql使用federated实现类似oracle的dblink的功能」.pdf「mysql使用federated实现类似oracle的dblink的功能」.pdf

    「mysql使用federated实现类似oracle的dblink的功能」.docx

    「mysql使用federated实现类似oracle的dblink的功能」.docx「mysql使用federated实现类似oracle的dblink的功能」.docx

    MySQL-FEDERATED引擎 跨主机联表查询(1)

    二进制便携式存储引擎,主要用于只读或以只读为主的工作负载。请参见 第16.2节“ MyISAM存储引擎”。 MEMORY 该存储引擎的数据仅存储在内存中。请参见 第16.3节“ MEMORY存储引擎”。 CSV 以逗号分隔值格式存储...

    MySQL数据库:MySQL存储引擎.pptx

    MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...

    MySQL课程之MySQL存储引擎入门

    MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB 、 BDB 支持事务,其他...

    MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问

    对于MySQL而言,有一个FEDERATED存储引擎与之相对应。同样也是通过创建一个链接方式的形式来访问远程服务器上的数据。本文简要描述了FEDERATED存储引擎,以及演示了基于FEDERATED存储引擎跨实例访问的示例。 1、...

    使用FEDERATED引擎,实现数据库,用户表同步.pdf

    ...

    使用FEDERATED引擎,实现数据库,用户表同步.docx

    ...

    MySQL 5.1中文手冊

    5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 ...

    mysql自动停止 Plugin FEDERATED is disabled 的完美解决方法

    今天在配置服务器的时候,发现mysql的一个错误提示在 本地计算机 无法启动 MySQL 服务。错误 1067: 进程意外终止,其实原因很多这个不是导致进程意外终止的最终原因,但可以解决

    MySQL 5.1官方简体中文参考手册

    5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 ...

    MySQL 5.1参考手册

    5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 ...

    MySQL 5.1参考手册中文版

    5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作...

    MySQL 5.1参考手册 (中文版)

    5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 ...

    mysql5.1中文手册

    在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲...

    Db2 Federated

    Db2 Federated 基础教程

Global site tag (gtag.js) - Google Analytics