偶尔我们需要这样做。
在一台主机上如果复制多个主库,可以很简单:在备库主机上启动多个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)引擎是一种特殊的存储引擎,它的设计目标是允许MySQL数据库跨越不同的服务器进行数据集成,类似于Oracle数据库中的DBLINK功能。这个引擎使得用户可以在本地数据库中查询和操作远程MySQL服务器...
FEDERATED引擎是MySQL中的一种存储引擎,用于实现分布式数据库系统中的数据同步。下面是使用FEDERATED引擎实现数据库用户表同步的详细知识点: 什么是FEDERATED引擎 FEDERATED引擎是一种插件式存储引擎,用于实现...
总的来说,MySQL的Federated引擎提供了一种简单的方法来实现跨数据库的访问,但其局限性在于事务处理和性能,因此在设计系统时需要根据具体需求权衡使用。在互联网环境中,这种跨数据库的集成技术对于构建分布式、高...
但通过Federated存储引擎,MySQL可以实现跨数据库的数据访问,从而达到与Oracle的DBLINK相似的效果。 Federated存储引擎允许MySQL在一个服务器上访问远程服务器上的表,仿佛这些表是本地表一样。在使用Federated...
MySQL的FEDERATED引擎提供了一种解决办法,使得在不同数据库之间实现数据表的同步成为可能。本文主要介绍如何利用FEDERATED引擎来实现两个数据库用户表的同步。 首先,我们需要确保MySQL服务器支持FEDERATED引擎。...
在实验中,我们使用 MySQL 8.0 查看了支持的存储引擎,包括 InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、EXAMPLE、FEDERATED、Archive、Merge 等。不同的存储引擎有不同的特点和使用场景,在选择存储引擎时需要根据...
不过,多主一从复制中通常不直接使用Federated引擎,而是作为辅助手段来实现跨服务器的数据整合。 在实际应用中,多主一从复制可能涉及复杂的网络环境和更精细的权限控制,需要对MySQL的复制机制有深入理解,以确保...
FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。 但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则...
二进制便携式存储引擎,主要用于只读或以只读为主的工作负载。请参见 第16.2节“ MyISAM存储引擎”。 MEMORY 该存储引擎的数据仅存储在内存中。请参见 第16.3节“ MEMORY存储引擎”。 CSV 以逗号分隔值格式存储...
MySQL支持多种存储引擎,如InnoDB、MyISAM、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。 InnoDB是MySQL5.5之后的默认存储引擎,提供了具有提交、回滚和崩溃恢复能力的事务...
MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...
7. Federated:允许在多个MySQL服务器之间分布数据,形成逻辑上的单一数据库,适合分布式应用。 8. Cluster/NDB:集群存储引擎,通过多台数据服务器提供高可用性和冗余,适合高数据量且对安全性与性能有严格要求的...
MySQL是世界上最流行的关系型数据库管理系统之一,其强大的功能和灵活性主要得益于它支持多种存储引擎。在MySQL课程中,深入理解存储引擎是至关重要的,因为不同的存储引擎有着不同的特性和适用场景,这直接影响到...
在MySQL中,通过Federated存储引擎可以实现一个MySQL服务器(服务器B)访问另一个MySQL服务器(服务器A)的数据表。这种机制允许用户在不复制数据的情况下,直接查询远程数据库中的数据。 **Federated引擎特点**: ...
FEDERATED存储引擎在MySQL中用于实现远程数据的联邦,当它被禁用时,可能会影响服务的稳定运行。本文将详细探讨这个问题的成因、解决方法以及相关的优化措施。 首先,`Plugin 'FEDERATED' is disabled`的出现通常是...
- **Federated**:可以将分布在不同MySQL服务器上的表作为一个逻辑表进行访问,非常适合分布式环境。 - **Cluster/NDB**:适合高可用性和高性能查找的应用场景,支持分布式数据存储和处理。 #### 五、选择合适的...
除了这些常见的引擎,还有如Archive用于长期归档数据,Merge用于合并多个MyISAM表,以及Federated用于连接远程MySQL服务器等。每个引擎的实现都值得深入研究,它们在处理数据存储、索引、并发控制等方面都有各自的...
- Federated存储引擎允许在不同服务器之间分布数据,一个表可以是一个远程服务器上的表的映射,适合分布式环境。 7. **CSV** - CSV存储引擎将数据存储为逗号分隔值格式,便于与其他系统交换数据。 8. **...
除了InnoDB和MyISAM之外,MySQL还支持多种其他的存储引擎,如Memory、Archive、Federated等,这些引擎各有特色,可以满足不同的业务需求。 #### 四、存储引擎选择 选择合适的存储引擎对于保证数据库性能和稳定性至...