MYSQL跨服务器操作数据库表

因为牵扯到两台服务器之间,相互核对数据。所以找了些研究了下这个技术。技术分享

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

以下为配置过程步骤:

 /******************************
(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 命令

你可能感兴趣的:(MYSQL)