Mysql使用Federate引擎实现操作本地表映射远程操作表
来源:互联网 发布:centos7 安装网络配置 编辑:程序博客网 时间:2024/05/01 10:59
考虑这样一个场景,存在多台agent系统(每台均拥有自己的数据库)各自做完操作后,将会触发各自数据库的存储过程进行复杂运算,各自完成后均需要向远程某Master机器的数据库的表中擦入一条信息,以通知操作完成。初步设想有两个方案来实现。
- 在agent系统里面通过java代码调用存储过程,直到存储过程执行完成后,再将执结束信息写入到Master系统的数据库中。
- 通过为每一个agent系统中的数据库建立一个远程映射表,从而实现agent系统存储过程执行完成后,通过存储过程再将信息写入本地的映射表中,由mysql自动同步数据到Master上。(此处也凸显出mysql一个短板,本地存储过程不能调用远程数据库的存储过程,不能操作远程数据库的表,貌似oracle,sqlserver等都可以,不然就不用这么麻烦了╮(╯▽╰)╭)
因为在实际项目中,第一种方式的会因为存储过程的运行时间过长(半个小时甚至更久),会导致agent系统的性能有影响,迫于无赖才使用第二种方案。
首先需确保已经打开federated引擎,可通过show engines命令查看是否安装。然后具体步骤如下:
首先在Master机器上建立projects表,我们只需要将每个agent数据库中建立映射表projects
CREATE TABLE `projects` ( `project_id` INT(11) NOT NULL AUTO_INCREMENT, `project_code` VARCHAR(50) NOT NULL, `test_code` VARCHAR(50) NOT NULL, `create_time` BIGINT(11) NULL DEFAULT NULL, `result` VARCHAR(255) NULL DEFAULT NULL, `ts` BIGINT(11) NOT NULL, PRIMARY KEY (`id`))COLLATE='utf8_general_ci'ENGINE=FEDERATEDCONNECTION='mysql://user:password@202.59.232.211:3306/testdb/tb_projects_tests';
注意connection语句的设置,需要远程Master数据库的用户名,密码以及映射表的相应信息,中然后在每一个存储过程执行完成后对本地的projects执行一条insert语句即可。
PS:需要注意的是,此种方式不适合大数据量的同步操作。
0 0
- Mysql使用Federate引擎实现操作本地表映射远程操作表
- 本地表、远程表的复制操作(SQL命令行)
- mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)
- 从一个远程数据库的表copy到本地表
- 配置Mysql实现远程操作
- mysql 使用federated 引擎实现dblink 远程表访问
- mysql使用federated引擎实现dblink远程表访问
- 实现mysql的innodb表引擎的分区操作
- MySQL实现远程跨库操作
- MySQL授权远程操作
- MySQL实现操作表
- 云端远程操作实现
- php实现远程操作
- 远程操作SDR实现
- MySQL开启federated引擎实现数据库表映射
- MYSQL数据库学习----MYSQL数据库、表操作和引擎区别
- 使用表达式树+反射实现简易ORM对象映射操作
- Mysql基于FEDERATED存储引擎的远程表使用
- 编译器的编译基本过程
- 网站上线前需要测试的内容
- Android -- Looper.prepare()和Looper.loop() —深入版
- ASIHTTPRequest详解
- vim 配置及用法
- Mysql使用Federate引擎实现操作本地表映射远程操作表
- jetty
- 编译通过不能执行
- jQuery之下拉框左右选择
- 雅可比矩阵
- 经典线程同步 关键段CS
- 获取adriod 虚拟机的ip
- 计算机视觉相对容易的期刊
- MFC框架分析