MySQL同個服務器下,要進行跨數據庫進行查詢,只需在表前加上數據庫名就可以。
如果要在跨服務器查詢,服務器A查詢服務器B,則需要在服務器A開啓federated引擎(默認關閉)以進行映射表查詢。
MySQL執行show engines命令可以查看federated引擎的是否關閉狀態。
啓用FEDERATED引擎,Linux通過vim /etc/my.cnf修改(Windows修改my.ini),在[mysqld] 下加上federated後保存
並重啓數據庫服務
service mysqld restart
在mysql中創建遠程服務器數據庫中的需要映射的表,數據結構一樣,映射表名稱可以不同。
CREATE TABLE `user_remote` ( `id` bigint(20) NOT NULL COMMENT '主鍵', `name` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名', `create_date` datetime NULL DEFAULT '1000-01-01 00:00:00' COMMENT '創建時間', `created_by` bigint(20) NULL DEFAULT NULL COMMENT '創建人' ) ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3306/db/user';
ENGINE=FEDERATED,使用federated引擎,修改用戶名,密碼,地址,端口號,數據庫,表
這樣就可以將遠程的user表數據實時映射到hn_user表中,實現mysql跨服務器查詢數據。