每日一听
开启 FEDERATED 引擎
SHOW ENGINES;
SHOW ENGINES
是查看 MySQL 引擎的命令,我们通过此命令可以查看 FEDERATED 引擎是否开启:
可以看到,FEDERATED 引擎默认是关闭的,我们需要将其打开。
修改配置文件
修改 MySQL 的配置文件,新增一行,内容为:federated
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
......
# 开启 Federated 引擎
federated
修改完成后重启 MySQL,再次执行 SHOW ENGINES
命令,可以看到 FEDERATED 引擎已被打开:
新建测试库/表
在第一个实例中创建 test_db.sys_user
插入一些测试数据
在第二个实例中创建 test_db.wx_user
同样,也插入一些测试数据
建立远程表
在第一个实例中的数据库建立远程表连接第二个实例中的数据库 wx_user
:
CREATE TABLE `wx_user` (
`id` bigint NOT NULL COMMENT '主键',
`user_id` bigint NULL DEFAULT NULL COMMENT '用户ID',
`openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'openid',
`area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地区',
PRIMARY KEY (`id`) USING BTREE
)
ENGINE = FEDERATED # 引擎
CHARACTER SET = utf8mb4 # 字符集
COLLATE = utf8mb4_general_ci # 排序规则
CONNECTION = 'mysql://root:root@localhost:3306/test_db/wx_user'; # 连接
执行命令后,第一个实例中的数据库新增了 wx_user
表:
可以看到,新创建的 wx_user
表中的数据和第二个实例中的 wx_user
表中的数据是同步的:
连接地址中 mysql://root:root@localhost:3306/test_db/wx_user
的各含义分别是:
- mysql:// 远程数据库的类型
- root:root 远程数据库的用户名和密码
- test_db 远程数据库的名称
- wx_user 远程数据库的表名称
以下有几点需要注意:
- 连接表的字段必须和真实表一致,允许是子集
- 真实表数据更新连接表自动会更新,反之亦然
- 真实表结构改动,连接表不会跟着改动
- 删除连接表,是真实表不会被跟着删除
- 连接表无法用 ALTER 语句改结构,所以如果想同步需求可以删除重新建
执行 Join 查询
运行下面的 join 查询语句:
select su.id, `name`, age, wu.id as wx_id, openid, area
from sys_user su left join wx_user wu on su.id = wu.user_id
可以看到,成功查询到第二个实例中的数据
本笔记参考于博主 白菜说技术 整理
如有侵权,请联系作者 马铃薯头 删除