ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【MySQL】DB-Link 跨库访问

2022-06-15 10:04:37  阅读:170  来源: 互联网

标签:NO grade 跨库 DB job score Link YES id


 

相关说明:

https://blog.csdn.net/qq_48721706/article/details/124088963

  

DB-LINK以一个远程访问方式访问其他MYSQL实例

连接实例和被连接实例都需要开启FEDERATED引擎

 

 

Federated引擎配置

检查库是否支持FEDERATED

SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

  

检查是否安装了FEDERATED插件

INSTALL PLUGIN federated SONAME 'ha_federated.so';
1125 - Function 'federated' already exists

 

如果没有,打开MYSQL配置文件【my.ini】或者【my.cnf】配置FEDERATED参数

然后重启MYSQL服务

[mysqld]
# mysql所在的目录
basedir=D:\mysql-8.0.28-winx64\

# mysql 数据库存储的目录
datadir=D:\mysql-8.0.28-winx64\data\

# mysql服务端默认使用的字符集
character-set-server=utf8

# 默认使用的存储引擎
default-storage-engine=INNODB

# mysql服务端的端口号
port=3308

# 支持其它MYSQL以DBLINK方式访问本实例
federated

# 关闭SSL认证
skip_ssl

[mysql]
# mysql客户端默认使用的字符集
default-character-set=utf8

 

再次检查是否开启

SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+-----+------------+
| Engine             | Support | Comment                                                        | Transactions | XA  | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+-----+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO  | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO  | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO  | NO         |
| FEDERATED          | YES     | Federated MySQL storage engine                                 | NO           | NO  | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO  | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO  | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES | YES        |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO  | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO  | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+-----+------------+

  

DBLINK访问测试:

在A库创建一张测试表以及数据:

CREATE TABLE `grade` (
  `id` int NOT NULL,
  `job` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
  `score` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (1, 'C++', 11001);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (2, 'C++', 10000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (3, 'C++', 9000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (4, 'Java', 12000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (5, 'Java', 13000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (6, 'B', 12000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (7, 'B', 11000);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (8, 'B', 9999);
INSERT INTO `test`.`db-link-grade`(`id`, `job`, `score`) VALUES (9, 'C', 22344);

  

创建完成之后,在B库创建LINK表:

CREATE TABLE `db-link-grade` (
  `id` int(11) NOT NULL,
  `job` varchar(32) NOT NULL,
  `score` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb4 CONNECTION='mysql://root:123456@localhost:3308/nowcoder-sql/grade';

-- 指定表引擎为Federated
ENGINE=FEDERATED

-- 连接的目标表
CONNECTION='mysql://用户名:密码@目标Host:端口/库名/表名';

  

查询LINK表检查是否能成功访问:

SELECT * FROM `db-link-grade`;
+----+------+-------+
| id | job  | score |
+----+------+-------+
|  1 | C++  | 11001 |
|  2 | C++  | 10000 |
|  3 | C++  |  9000 |
|  4 | Java | 12000 |
|  5 | Java | 13000 |
|  6 | B    | 12000 |
|  7 | B    | 11000 |
|  8 | B    |  9999 |
|  9 | C    | 22344 |
+----+------+-------+

  

 

标签:NO,grade,跨库,DB,job,score,Link,YES,id
来源: https://www.cnblogs.com/mindzone/p/16377308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有