如何使用MYSQL联合服务器在两台服务器之间进行数据集成?
对于这几个步骤,我们需要遵循。让我们假设有两个服务器s1和s2,我们都有公共IP和私有IP,我们只使用Linux服务器。
s1的私有IP是ps1,s2是ps2,s1的公共IP是pbs1,s2是pbs2
两个数据库是dbs1和dbs2
如果服务器不在同一个局域网上,那么我们必须使用公共IP,如果在同一个局域网中,我们可以使用其中任何一个。但是,私有IP使用更安全。
步骤1:我们需要在文件my.cnf中使用此方法在MYSQL中启用联合引擎
“#bind-address = 127.0.0.1 federated”
第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');
要在服务器s1中创建feds2,我们必须运行以下脚本
CREATE SERVER feds2 FOREIGN DATA WRAPPER mysql OPTIONS(USER'dbuser',HOST'ps2 / pbs2',PORT 3306,DATABASE'dbs2');
第4步:
我们必须在两个服务器中创建联合表。
假设我们必须从服务器s2更新服务器s1的表fedtab1并从服务器s1更新服务器s2的表fedtab2
在创建联合表之前,我们必须记住主表应该是InnoDB引擎,否则我们将无法创建联合表。
因此,在服务器s2表中创建联合表fedtab1之前,应该存在服务器s1和InnoDB引擎,并且同样适用于服务器s2的fedtab2。
然后我们必须使用以下脚本创建联合表
// fedtab1_f服务器s2中的联合表CREATE TABLE fedtab1_f
(服务器s1中fedtab1表的所有/选择列)ENGINE = FEDERATED DEFAULT CHARSET = utf8 CONNECTION ='feds1 / fedtab1';
// fedtab2_f服务器s1中的联合表CREATE TABLE fedtab2_f
(服务器s2中fedtab2表的所有/选择列)ENGINE = FEDERATED DEFAULT CHARSET = utf8 CONNECTION ='feds2 / fedtab2';
第5步:
我们必须实现数据集成逻辑。它可以使用触发器或PHP脚本。