如何使用 MYSQL 联合服务器在两台服务器之间进行数据集成?
1 回答
对于这几个步骤,我们需要遵循。让我们假设有两台服务器 s1 和 s2,我们同时拥有公共 IP 和私有 IP,我们只使用 Linux 服务器。
s1 的私有 IP 是 ps1,s2 是 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,我们必须运行以下脚本
CREATE SERVER feds1 FOREIGN DATA WRAPPER mysql OPTIONS (USER 'dbuser', HOST 'ps1/pbs1', PORT 3306, DATABASE 'dbs1');
to create feds2 in server s1 we have to run the following script
CREATE SERVER feds2 FOREIGN DATA WRAPPER mysql OPTIONS (USER 'dbuser', HOST 'ps2/pbs2', PORT 3306, DATABASE 'dbs2');
Step 4:
We have to create federated tables in both the servers.
Assuming that we have to update table fedtab1 of the server s1 from the server s2 and update table fedtab2 of the server s2 from the server s1
Before creating federated tables we have to keep in mind that the main table should be of InnoDB engine otherwise we will not be able to create federated tables.
So before creating federated table fedtab1 in the server s2 table should exist in the server s1 and with the InnoDB engine and same applies for the fedtab2 of server s2.
then we have to create federated tables using the following script
//fedtab1_f federated table in server s2
CREATE TABLE fedtab1_f
(
All/selective columns of fedtab1 table in server s1
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds1/fedtab1';
//fedtab2_f federated table in server s1
CREATE TABLE fedtab2_f
(
All/selective columns of fedtab2 table in server s2
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='feds2/fedtab2';
Step 5:
We have to implement data integration logic. It can be using triggers or PHP scripts.