WithCoderWithCoderWithCoder

MySQL数据库开启FEDERATED引擎实现表映射

MySQL数据库FEDERATED存储引擎能让你访问远程的MySQL数据库而不使用replication或cluster技术(类似于Oracle的dblink),使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地.

查看FEDERATED引擎状态:

FEDERATED引擎默认是不开启的.我们可以通过MySQL客户端软件(Navicat或SQLyog),在查询编辑器中输入指定: 

    show engines;

查看FEDERATED引擎是否开启,如下图:

1-20022420353C40.png

开启FEDERATED引擎:

    1.Windows系统MySQL开启FEDERATED引擎

        在MySQL安装目录重找到配置文件my.ini,在[mysqld]后面增加federated参数,然后重启数据库.

    2.Linux系统MySQL开启FEDERATED引擎

        找到MySQL配置文件,一般在/etc/my.cnf,通过vim /etc/my.cnf打开配置文件,并在[mysqld]后面添加federated参数,然后重启数据库.

    重启之后,进入数据库再次执行命令
        show engines;

    可以看到数据库已经开启了FEDERATED引擎.   

1-200224204Z3B6.png

建立映射表

在开启FEDERATED引擎的MySQL服务器上面(数据库登录用户名root1,密码:123456)

    1. 创建数据库a,在数据库a中创建表student

     CREATE TABLE `student` (
             `id` int(11) NOT NULL AUTO_INCREMENT,
             `name` varchar(20) DEFAULT NULL,
             PRIMARY KEY (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

    2. 创建数据库b,在数据库b中创建表结构student

    CREATE TABLE `student` (

      `id` INT(11) NOT NULL AUTO_INCREMENT,

      `name` VARCHAR(20) DEFAULT NULL,

      PRIMARY KEY (`id`)

    ) ENGINE=FEDERATED 

    DEFAULT CHARSET=utf8mb4 

    CONNECTION='mysql://root1:123456@127.0.0.1:3306/a/student';

    请注意创建数据库b中表student时的ENGINE和CONNECTION信息

    3. 在数据库a的表student中插入一条记录,在数据库b的student中应该可以看到同样的数据;同理,如果修改数据库b中的student记录,在数据库a的表student中可以看到同样的修改.

欢迎分享交流,转载请注明出处:WithCoder » MySQL数据库开启FEDERATED引擎实现表映射