欢迎光临散文网 会员登陆 & 注册

mysql基于federated存储引擎访问远程数据库表

2021-09-17 17:44 作者:夜灬长梦多  | 我要投稿

这个是有一个前置条件:两个数据库都必须是mysql数据库,且被访问的表必须是可以通过网络访问到的
(同一台机器也好,同一个局域网也好,走外网映射也好,总之要能被访问就是了)
假设有test和test1两个数据库。
test1库想访问test库的表student
1、先开启test1库的federated存储引擎查看数据库的federated存储引擎是否开启;
打开mysql的命令行客户端,输入show engines;
mysql> show engines;
+--------------------+---------+
----------------------------------------------------------------+--------------+-----+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+
----------------------------------------------------------------+--------------+-----+------------+
| FEDERATED | YES | Federated MySQL storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+
----------------------------------------------------------------+--------------+-----+------------+
9 rows in set (0.05 sec)
FEDERATED官方简介:
FEDERATED存储引擎访问在远程数据库的表中的数据,而不是本地的表。这个特性给某些开发应用带来了遍历,你可以直接在本地构建一个federated表来连接远程数据表,配置好了之后本地表的数据可以直接跟远程数据表同步。
实际上这个引擎里面是不真实存放数据的,所需要的数据都是连接到其他MySQL服务器上。
测试步骤和环境说明
验证test库下student表
mysql>use test;

mysql> select * from student;

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

| id | name | age |

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

| 1| wang | 18 |

| 2| li | 19 |

| 3| wu | 19 |

| 4| xie | 20 |

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

4 rows in set (0.09 sec)


创建远程存储引擎表student1

mysql> CREATE TABLE `student1` (

`id` int(11) NOT NULL,

`name` varchar(25) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

PRIMARY KEY (`id`))

-> ENGINE=FEDERATED DEFAULT CHARSET=utf8 connection='mysql://root:mysql@192.168.0.145/test/student';

Query OK, 0 rows affected (0.09 sec)


注意:本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择:ENGINE =FEDERATED,
CONNECTION选项中的连接字符串的一般形式如下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name


mysql基于federated存储引擎访问远程数据库表的评论 (共 条)

分享到微博请遵守国家法律