跨服务器触发器(同步表)

时间:2024-04-06 12:27:59

一、MySQL 开启Federated引擎(Windows版)

1.进入到MySQL安装目录bin下,打开cmd命令窗口。用命令行登录数据库,然后查看是否开启Federated远程引擎:

mysql>show engines;

跨服务器触发器(同步表)
2.当前是已开启状态,若出现以下情况:
(1)未找到Federated引擎,证明未安装Federated。
跨服务器触发器(同步表)
先安装Federated:

mysql> install plugin federated soname ‘ha_federated.so’;

跨服务器触发器(同步表)
(2)查看存在Federated,但是是NO,说明没有开启
跨服务器触发器(同步表)
3.开启方法:
(1)找到my.ini或my.cnf配置文件:一般都在C盘下的隐藏目录下:路径如下:C:\ProgramData\MySQL\MySQL Server 5.7
跨服务器触发器(同步表)
跨服务器触发器(同步表)
(2)编辑my.ini文件,在[mysqld]下添加一行:federated,保存后重启MySQL服务。
跨服务器触发器(同步表)
(3)重启服务后再次到MySQL安装路径bin目录下进入命令窗口,再次查看engines,:
跨服务器触发器(同步表)
此时Federated远程引擎已开启。

二、创建同步表

先在远程服务器MySQL中创建一张表,字段可按需求添加。

CREATE TABLE user_test (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
name varchar(255) not null,
PRIMARY KEY (‘id’)
)DEFAULT CHARSET=utf8

然后在本服务器MySQL中创建同步表,要求表结构必须与远程表结构一致。
跨服务器触发器(同步表)

CREATE TABLE user_test (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
name varchar(255) not null,
PRIMARY KEY (‘id’)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION=‘mysql://root:[email protected]:3306/test_04/user_test’

此时,当本服务器上每在user_test中添加修改数据时,远程服务器的user_test表数据会同步。

三、创建本服务器与同步表的触发器

t_user表中有以下字段:
跨服务器触发器(同步表)
触发器只存id和name时,在t_user表中创建触发器ins_user:

create trigger ins_user
after insert on user for each row
begin
insert into user_test (id, name)
values( new.id, new.name);
end;

四、测试

(1)初始状态:
t_user表:
跨服务器触发器(同步表)
本服务器user_test表和远程服务器user_test表:
跨服务器触发器(同步表)
(2)在t_user表中添加一条数据:
跨服务器触发器(同步表)
本服务器user_test表和远程服务器user_test表:
跨服务器触发器(同步表)
跨服务器触发器(同步表)