mysql 触发器同步远程服务器上数据库

要想实现本地数据库和远程数据库中的某一些表实时同步数据。需要在本地数据库创建一个类似于映射表

1、检查服务器A上的mysql是否支持fedrated数据引擎

mysql> show engines;

查看mysql的 FEDERATED 数据引擎,一般都是关闭状态,需要在

配置my.ini文件

[mysqld]

federated #添加该属性

[client]
port=3306
default-character-set=utf8
[mysqld]
# 开启事件
event_scheduler=ON
# 设置为自己的MYSQL的安装目录
basedir=D:\mysql-5.7.29-winx64
# 设置为自己的MYSQL的数据目录
datadir=D:\mysql-5.7.29-winx64\data
port=3306
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION
#开启查询缓存
explicit_defaults_for_timestamp=true
# skip-grant-tables
federated 

2、在服务器A上创建federated引擎表,该引擎表与服务器B上要更新的表结构相同

比如我想把本地的某一个数据表(t_rebiao)数据同步到远程服务器的数据表(t_rebiao)中,需要在本地创建一个远程数据表的映射表"bak_rebiao"

CREATE TABLE `bak_rebiao`  (
  `Sample_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自动增长的编号',
  `Sample_DateTime` datetime(0) NULL DEFAULT NULL COMMENT '采样日期时间',
  `Sample_JinshuiWendu` double(18, 2) NULL DEFAULT NULL COMMENT '进水温度',
  `Sample_HuishuiWendu` double(18, 2) NULL DEFAULT NULL COMMENT '回水温度',
  `Sample_ShunshiLiuliang_Jinshui` double(18, 2) NULL DEFAULT NULL COMMENT '进水管瞬时流量',
  `Sample_LeijiLiuliang_Jinshui` double(18, 2) NULL DEFAULT NULL COMMENT '进水管累计流量',
  `Sample_ShunshiReliang_Jinshui` double(18, 2) NULL DEFAULT NULL COMMENT '进水管瞬时热量',
  `Sample_LeijiReliang_Jinshui` double(18, 2) NULL DEFAULT NULL COMMENT '进水管累计热量',
  `Sample_ShunshiLiuliang_Huishui` double(18, 2) NULL DEFAULT NULL COMMENT '回水管瞬时流量',
  `Sample_LeijiLiuliang_Huishui` double(18, 2) NULL DEFAULT NULL COMMENT '回水管累计流量',
  `Sample_ShunshiReliang_Huishui` double(18, 2) NULL DEFAULT NULL COMMENT '回水管瞬时热量',
  `Sample_LeijiReliang_Huishui` double(18, 2) NULL DEFAULT NULL COMMENT '回水管累计热量',
  `Sample_JinshuiYali` double(18, 2) NULL DEFAULT 0.00 COMMENT '进水压力',
  `Sample_HuishuiYali` double(18, 2) UNSIGNED ZEROFILL NULL DEFAULT 000000000000000.00 COMMENT '回水压力',
  `Sample_Code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '计量点代码',
  PRIMARY KEY (`Sample_ID`) USING BTREE,
  INDEX `IX_Sample_Code`(`Sample_Code`) USING BTREE COMMENT '计量点代码',
  INDEX `IX_Sample_DateTime`(`Sample_DateTime`) USING BTREE COMMENT '采集时间'
) ENGINE=FEDERATED CONNECTION='mysql://user:password@ip:port/db_name/table_name';

说明:CONNECTION='mysql://user:password@ip:port/db_name/table_name';对应的参数要根据自己需要修改

user:数据库账号
password:数据库登录密码
ip:远程服务器ip
port:数据库端口
db_name:数据库名称
table_name:数据表名称

3、在服务器A 上创建基于本地表的触发器

BEGIN

  INSERT INTO `bak_rebiao` SELECT * FROM `t_rebiao` WHERE Sample_ID = NEW.Sample_ID;

    END

 

 
上一篇:Django ORM F查询和Q查询


下一篇:sql