mysql如何使用联邦服务器实现数据集成?

How to implement data integration using federated servers in mysql?

如何使用MYSQL 联合服务器在两个服务器之间进行数据集成?

对于这几个步骤,我们需要遵循。 让我们假设有两台服务器 s1 和 s2,我们有 public IP 和私有 IP,我们只使用 Linux 服务器。

s1 的私有 IP 是 ps1,s2 的私有 IP 是 ps2 public s1 的 IP 是 pbs1 s2 是 pbs2

两个数据库是dbs1和dbs2

如果服务器不在同一个 LAN 中,那么我们必须使用 public IP,如果在同一个 LAN 中,那么我们可以使用其中任何一个。但是,私有 IP 使用更安全。

第一步: 我们需要在 MYSQL 中启用联合引擎,方法是在文件 my.cnf

中使用它

"#绑定地址=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 步:

我们必须在两个服务器中创建联合 table。

假设我们必须从服务器 s2 更新服务器 s1 的 table fedtab1 和 从服务器 s1

更新服务器 s2 的 table fedtab2

在创建联合 table 之前,我们必须记住主 table 应该是 InnoDB 引擎,否则我们将无法创建联合 table。

因此,在服务器 s2 中创建联合 table fedtab1 之前 table 应该存在于服务器 s1 中并且具有 InnoDB 引擎,同样适用于服务器 s2 的 fedtab2。

然后我们必须使用以下脚本创建联合 tables

//fedtab1_f 在服务器 s2 中联合 table 创建 TABLE fedtab1_f ( 服务器 s1 中 fedtab1 table 的 All/selective 列 ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds1/fedtab1';

//fedtab2_f 在服务器 s1 中联合 table 创建 TABLE fedtab2_f ( 服务器 s2 中 fedtab2 table 的 All/selective 列 ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds2/fedtab2';

第 5 步:

我们必须实施数据集成逻辑。它可以使用触发器或 PHP 脚本。