federated存储引擎实现跨服务器的数据访问

目标:1.Mysql federated+存储过程+java+定时任务 实现”建行贷后管理提数” 自动化
2.Mysql federated+存储过程+shell 实现”建行贷后管理提数” 半自动化

federated存储引擎实现跨服务器的数据访问

.数据库之间的跨服务器访问在实际的工作中经常用到,最常见的是不同数据库的数据比对和数据抽取。

针对这个需求ORACLE可以通过透明网关和DBLINK的方式来实现;MySQL提供了存储引擎federated可以实现该功能;

一.实现原理
Federated,能够将多个分离(不在同一台服务器上的机器)的MySQL服务器链接起来,从多个物理服务器
创建一个逻辑数据库

二.实现
本地测试机: 远程测试机:
IP: 172.16.101.27 IP: 172.16.34.129
表名: local_table 表名: remote_table

1.查看数据库服务器是否支持"FEDERATED"存储引擎
    .show engines;  
    .为服务器开启"FEDERATED"存储引擎
    windows环境:
        E:\MyProgram\mysql-5.6.10-winx64\my.ini 文件中添加federated 如下:
            [mysqld]
            ##开启"FEDERATED"存储引擎
            federated

    Linux环境:
        .配置文件的位置一般在/etc/my.cnf          
        .具体怎么找              
            [root@localhost ~]# which mysqld
            /usr/sbin/mysqld
            [root@localhost ~]# /usr/sbin/mysqld --verbose --help|grep -A 1 'Default options';
            Default options are read from the following files in the given order:
            /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
        选/etc/my.cnf 文件中添加 federated 如windows举例
    .重启Mysql

2.创建表
    .CREATE TABLE `remote_table` (  
      `user_id` int(11) NOT NULL COMMENT '用户ID',  
      `user_name` varchar(255) NOT NULL COMMENT '用户名', 
      PRIMARY KEY (`user_id`) 
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    insert into remote_table values('1231','dj1');
    insert into remote_table values('1232','dj2');
    insert into remote_table values('1233','dj3');

    CREATE TABLE `local_table` (  
      `user_id` int(11) NOT NULL COMMENT '用户ID',  
      `user_name` varchar(255) NOT NULL COMMENT '用户名', 
      PRIMARY KEY (`user_id`) 
    )ENGINE=FEDERATED DEFAULT CHARSET=utf8 
    CONNECTION='mysql://root:[email protected]:3306/zhifu/remote_table' 

三.相关问题
.本地数据库服务必须支持”FEDERATED”存储引擎,远程服务器可以不支持,远程数据库目前仅限MySQL
.”FEDERATED”存储引擎是从MySQL5.0开始支持的
.本地的表结构必须与远程的完全一致,操作本地库中的远程表,就是操作远程库中对应的数据库表,
所以在本地库中对应远程表的操作(增、删、改),均为反应都对应的远程表中。
.本地服务器与远程服务器在同一网段,延迟与网速和服务器性能有关.
.由于是跨主机的访问,当表数据量级别达到十万以上的时候,整个访问的速度相对本机有明显的效率问题。

你可能感兴趣的:(mysql)