将本地MySQL数据库与云数据库同步

时间:2015-08-10 17:29:21

标签: mysql database synchronization cloud local

我有两个数据库,一个在伦敦,一个在都柏林。如何在云数据库中全面查看数据?假设数据库结构允许我使用多个位置,这样就不会发生冲突。

Replication

编辑:数据库中的所有更改都在本地完成。例如:假设我在都柏林有一个传感器,它将数据转储到Dublin数据库,另一个传感器在伦敦,它将收集的数据转储到伦敦数据库中。如何在云数据库中获取此数据的联合视图?从管理界面我想查询云数据库,而不是其他数据库。

4 个答案:

答案 0 :(得分:2)

您可以在“云”数据库中定义FEDERATED表:这些表上的任何查询都将通过MySQL客户端协议从“云”服务器传输到相关的伦敦/都柏林服务器(请注意,数据是已复制到“云”服务器,因此它不提供任何形式的备份服务):

CREATE SERVER london FOREIGN DATA WRAPPER mysql OPTIONS (
  HOST 'london.mysql.example.com',
  PORT 9306,
  USER 'cloud_db_user',
  PASSWORD '...',
  DATABASE 'my_database'
);

CREATE SERVER dublin FOREIGN DATA WRAPPER mysql OPTIONS (
  HOST 'dublin.mysql.example.com',
  PORT 9306,
  USER 'cloud_db_user',
  PASSWORD '...',
  DATABASE 'my_database'
);

CREATE TABLE london_table (
    -- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='london/original_table';

CREATE TABLE dublin_table (
    -- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='dublin/original_table';

然后,您可以定义VIEW,其中包含UNION个联合表。但遗憾的是,UNION视图既不可插入也不可更新 - 因此,如果您需要对基础(联合)表上必须操作的数据进行任何更改:

CREATE VIEW combined AS
  SELECT * FROM london_table
UNION ALL
  SELECT * FROM dublin_table;

答案 1 :(得分:2)

您可以在云服务器中设置MariaDB,并将LONDON和DUBLIN服务器作为主服务器。 MariaDB中提供了多主复制。我假设主人有不同的数据库名称。

https://mariadb.com/kb/en/mariadb/multi-source-replication/

答案 2 :(得分:2)

Presto 在这里也很有用。

您可以在云计算机上部署presto,使用mysql连接器连接到不同的地理数据库,创建不同的目录模式。

编写查询以合并两个数据库的结果。类似的东西:

select * from dublin.A
union all
select * from london.A

Some Random Links on this

答案 3 :(得分:2)

为每个数据库位置提供两个Web服务。 Web服务以定期间隔查询各个数据库并将数据插入云数据库。