连接两个数据库服务器可以使用MySQL的Federated存储引擎。Federated存储引擎可以将远程MySQL服务器的数据表视为本地数据表,从而实现对多台数据库服务器的访问。
下面是连接两个数据库服务器的完整攻略:
1.创建Federated引擎表
首先,在本地MySQL服务器上创建一个Federated引擎表,该表将访问远程MySQL服务器上的数据表。
CREATE TABLE federated_table (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=FEDERATED
CONNECTION='mysql://远程服务器IP:远程服务器端口号/远程数据库名/远程表名';
2.给Federated引擎表赋权
接着,为Federated引擎表授权,使其能够访问远程MySQL服务器的数据表。可以使用GRANT语句为该表授权,必须在远程MySQL服务器上执行该语句。
GRANT SELECT, INSERT, UPDATE, DELETE ON 远程数据库名.远程表名 TO '用户名'@'本地MySQL服务器IP' IDENTIFIED BY '密码';
3.使用Federated引擎表
现在,可以像使用本地数据表一样使用Federated引擎表。
-- 查询Federated引擎表的数据
SELECT * FROM federated_table;
-- 插入数据到Federated引擎表
INSERT INTO federated_table (name) VALUES ('peter');
-- 更新Federated引擎表的数据
UPDATE federated_table SET name='jack' WHERE id=1;
-- 删除Federated引擎表的数据
DELETE FROM federated_table WHERE id=1;
示例1:连接两台MySQL服务器中的同名数据表
假设有两台MySQL服务器,它们的IP分别为192.168.1.2和192.168.1.3,在这两台服务器上都有名为students的数据库和表。
在本地MySQL服务器上创建一个Federated引擎表,将其中一台MySQL服务器上的students表作为本地表来访问。
CREATE TABLE federated_students (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL,
age INT(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=FEDERATED
CONNECTION='mysql://192.168.1.2:3306/students/students';
示例2:连接一个MySQL服务器和一个MariaDB服务器
可以使用Federated存储引擎在MySQL服务器上访问MariaDB服务器上的数据表。
CREATE TABLE federated_users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL,
email VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=FEDERATED
CONNECTION='mysql://192.168.1.2:3306/mysqldb/users UNION=mysql://192.168.1.3:3306/mariadb/users';
假设在192.168.1.2上运行的是MySQL服务器,而在192.168.1.3上运行的是MariaDB服务器,它们都有名为users的数据库和表。
在本地MySQL服务器上创建一个Federated引擎表,将通过UNION语句连接这两个服务器上的users表作为本地表来访问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:同一个sql语句 连接两个数据库服务器 - Python技术站