您的位置:首页 > 数据库 > MySQL

MYSQL跨服务器操作数据库表

2014-03-20 16:28 141 查看
因为牵扯到两台服务器之间,相互核对数据。所以找了些研究了下这个技术。技术分享

在另一片文章中,内容是说主从服务器配置, 这个有个局限就是会自动同步数据,不可控!

以下为配置过程步骤:

 /******************************

(1) 配置 federated引擎表

 ****************************/

 执行以下命令

 mysql->show engines;

 +------------+--------+

| Engine | Support |

+------------+--------+

| FEDERATED | NO |

#显示为上述结果,说明有引擎,但是没有开启;

需要在my.ini中、[mysqld]下添加一行:federated

重启Mysql,完成。

× 如果没有出现结果, 就是没有federated引擎。具体方法没有研究过

(2)以下是配置同步表
 //远程表格式 (ip 192.168.1.2) 即有数据的实体表结构

 use test;

 CREATE TABLE `tab` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `a` varchar(32) DEFAULT NULL,

  `b` varchar(32) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=41  DEFAULT CHARSET=gbk

(3)//本地创建对应的远程虚拟表,实际里面没有数据,这个表的作用就是用来在本地查询远程表中的数据

表结构需要一致,表名和数据库名称没有特殊要求;

注意:ENGINE=federated

use test_1;  (ip:192.168.1.1)

CREATE TABLE `tab1` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `a` varchar(32) DEFAULT NULL,

  `b` varchar(32) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=federated DEFAULT CHARSET=gbk connection="mysql://用户名:密码@192.168.1.2:3306/test/tab";

 //用户名:密码@远程地址:端口/数据库/表名

配置完成后,可以在本地测试,比如查询(select)或者insert

 

一些注意事项:

1. 对本地虚拟表的结构修改,并不会修改远程表的结构

2.  truncate 命令,会清除远程表数据

3.  drop命令只会删除虚拟表,并不会删除远程表

4.  不支持 alter table 命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息