And*_*rei 10 mysql database cloud synchronization local
我有两个数据库,一个在伦敦,一个在都柏林.如何在云数据库中全面查看数据?假设数据库结构允许我使用多个位置,这样就不会发生冲突.
编辑:数据库中的所有更改都在本地完成.例如:假设我在都柏林有一个传感器,它将数据转储到Dublin数据库,另一个传感器在伦敦,它将收集的数据转储到伦敦数据库中.如何在云数据库中获取此数据的联合视图?从管理界面我想查询云数据库,而不是其他数据库.
计划A:包含3台服务器的Galera集群(在MariaDB中找到).
计划B:"多源复制",其中您的两个物理服务器是主服务器,云服务器是从服务器.再次,需要MariaDB.(见DBHash的答案.)
您可以在“云”数据库中定义FEDERATED表:对这些表的任何查询都将通过 MySQL 客户端协议从“云”服务器传输到相关的伦敦/都柏林服务器(请注意,数据不会复制到“云”服务器,因此不提供任何形式的备份服务):
CREATE SERVER london FOREIGN DATA WRAPPER mysql OPTIONS (\n HOST \'london.mysql.example.com\',\n PORT 9306,\n USER \'cloud_db_user\',\n PASSWORD \'...\',\n DATABASE \'my_database\'\n);\n\nCREATE SERVER dublin FOREIGN DATA WRAPPER mysql OPTIONS (\n HOST \'dublin.mysql.example.com\',\n PORT 9306,\n USER \'cloud_db_user\',\n PASSWORD \'...\',\n DATABASE \'my_database\'\n);\n\nCREATE TABLE london_table (\n -- table definition as normal\n)\nENGINE=FEDERATED\nCONNECTION=\'london/original_table\';\n\nCREATE TABLE dublin_table (\n -- table definition as normal\n)\nENGINE=FEDERATED\nCONNECTION=\'dublin/original_table\';\nRun Code Online (Sandbox Code Playgroud)\n\n然后,您可以定义一个VIEW包含UNION这些联合表的表。然而不幸的是,UNION视图既不可插入也不可更新\xe2\x80\x94,因此如果您需要对数据进行任何更改,则必须在底层(联合)表上进行操作:
CREATE VIEW combined AS\n SELECT * FROM london_table\nUNION ALL\n SELECT * FROM dublin_table;\nRun Code Online (Sandbox Code Playgroud)\n