【发布时间】:2019-04-18 23:31:41
【问题描述】:
如何使用 MYSQL 联合服务器在两台服务器之间进行数据集成?
【问题讨论】:
标签: mysql integration federated
如何使用 MYSQL 联合服务器在两台服务器之间进行数据集成?
【问题讨论】:
标签: mysql integration federated
对于这几个步骤,我们需要遵循。 让我们假设有两台服务器 s1 和 s2,我们同时拥有公共 IP 和私有 IP,我们只使用 Linux 服务器。
s1 的私有 IP 是 ps1,s2 的私有 IP 是 ps2 s1的公网IP是pbs1,s2是pbs2
两个数据库分别是dbs1和dbs2
如果服务器不在同一个 LAN 上,那么我们必须使用公共 IP,如果在同一个 LAN 中,那么我们可以使用其中任何一个。但是,使用私有 IP 更安全。
第 1 步: 我们需要在 my.cnf 文件中使用它来启用 MYSQL 中的联邦引擎
"#bind-address=127.0.0.1 联合”
第 2 步:
我们需要授予服务器 s1 的 MySQL 数据库用户权限,以便它可以访问服务器 s2 的 MySQL 数据库,也可以访问
我们需要授予服务器 s2 的 MySQL 数据库用户权限,以便它可以访问服务器 s1 的 MySQL 数据库
第 3 步: 我们需要使用以下脚本在服务器 s1 和服务器 s2 中创建联合服务器
在服务器 s2 中,我们将为 s1 创建联合服务器,以便我们可以从服务器 s1 更新 s2 的 MySQL 数据库。
同样,在服务器 s1 中,我们将为 s2 创建联合服务器,以便我们可以从服务器 s2 更新 s1 的 MySQL 数据库。
假设两台服务器分别是 feds1 和 feds2
要在服务器 s2 中创建 feds1,我们必须运行以下脚本
创建服务器 feds1 国外数据包装器mysql 选项(用户“dbuser”、主机“ps1/pbs1”、端口 3306、数据库“dbs1”);
要在服务器 s1 中创建 feds2,我们必须运行以下脚本
创建服务器 feds2 国外数据包装器mysql 选项(用户“dbuser”、主机“ps2/pbs2”、端口 3306、数据库“dbs2”);
第 4 步:
我们必须在两个服务器中创建联合表。
假设我们必须从服务器 s2 更新服务器 s1 的表 fedtab1 并且 从服务器 s1 更新服务器 s2 的表 fedtab2
在创建联邦表之前,我们必须记住主表应该是 InnoDB 引擎的,否则我们将无法创建联邦表。
因此,在服务器 s2 中创建联合表 fedtab1 之前,表应该存在于服务器 s1 和 InnoDB 引擎中,同样适用于服务器 s2 的 fedtab2。
那么我们必须使用以下脚本创建联合表
//fedtab1_f 服务器s2中的联合表
创建表fedtab1_f (
服务器 s1 中 fedtab1 表的所有/选择性列
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds1/fedtab1';
//fedtab2_f 服务器s1中的联合表
创建表fedtab2_f (
服务器 s2 中 fedtab2 表的所有/选择性列
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds2/fedtab2';
第 5 步:
我们必须实现数据集成逻辑。它可以使用触发器或 PHP 脚本。
【讨论】: