案例b伺服器資料庫進行查詢時需要用到a伺服器資料庫表資料,需要對資料進行誇伺服器查詢,辦法有很多,這裡簡單介紹下通過儲存引擎層實現跨伺服器查詢
a伺服器(192.168.1.76)
b伺服器(192.168.1.77)
1) mysql例項a建立測試表
mysql> create database lianxi;
mysql> use lianxi
mysql> create table tab_test (
id int(20) not null auto_increment,
name varchar(32) not null default '',
primary key (id)
) engine=innodb;
mysql> insert into tab_test values(null,'test1');
2) mysql例項b建立federated引擎表
--確認federated引擎已啟用:
mysql> show engines;
..| federated | yes | federated mysql storage engine
--如果未啟用, 先確保configure mysql時加了--with-federated-storage-engine選項, 另外還確保啟動mysqld時加了--federated引數,
或者在my.cnf裡[mysqld]段後面加了federated引數, 如下, 然後重啟mysqld:
--------------------------------
[mysqld]
federated
--------------------------------
mysql> create database lianxi;
mysql> use lianxi
mysql> create table tab_test_fed (
id int(20) not null auto_increment,
name varchar(32) not null default '',
primary key (id)
) engine=federated connection = 'mysql:';
除了engine選項應該是federated, 並且connection表選項是給federated指明如何連線到遠端伺服器上的連線字串之外,
這個表的結構必須完全與遠端表的結構相同.
遠端主機資訊指明本地伺服器要連線到的遠端伺服器, 資料庫和表資訊指明哪乙個遠端表要被作為資料檔案來用. 在這個例子中.
遠端伺服器被指定來作為遠端主機在3306埠上執行, 所以要啟動伺服器, 讓它監聽3306埠.
在connection選項中的連線字串的一般形式如下(密碼和埠號是可選的):
mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name
--測試是否可以訪問:
mysql> select * from tab_test_fed;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
+----+-------+
mysql實現跨伺服器查詢資料
在日常的開發中經常進行跨資料庫進行查詢資料。同伺服器下跨資料庫進行查詢在表前加上資料庫名就可以查詢到資料。mysql跨伺服器進行查詢提供了federated引擎進行對映表,然後進行查詢。mysql資料庫federated引擎是關閉的,首先需要先啟用該引擎。mysql執行show engines命令檢...
MySql實現跨伺服器查詢資料
同伺服器下跨資料庫進行查詢在表前加上資料庫名就可以查詢到資料。mysql跨伺服器進行查詢提供了federated引擎進行對映表,然後進行查詢。mysql資料庫federated引擎是關閉的,首先需要先啟用該引擎。mysql執行show engines命令檢視引擎狀態。啟用federated引擎 wi...
mysql跨伺服器查詢
2013 8 22 10 34 發布者 天空之城 檢視 16547 摘要 本地mysql資料庫要訪問遠端mysql資料庫的表中的資料,必須通過federated儲存引擎來實現.有點類似oracle中的資料庫鏈結 dblink 要允許這個儲存引擎,當構建mysql時使用 with federated ...