標籤:federated存儲引擎mysql
本文主要介紹經過federated存儲引擎創建遠程鏈接表sql
測試環境:mysql 5.6.21數據庫
開啓federated存儲引擎安全
先查看federated存儲引擎存儲引擎是否啓用服務器
SHOW ENGINES ;
默認mysql是沒有開啓federated存儲引擎,我這裏由於已經配置了。app
開啓federated存儲引擎只須要在my.cnf文件中增長‘federated’就能夠。測試
建立遠程鏈接表this
mysql配置遠程鏈接必須在本地建立federated存儲引擎的表,配置遠程鏈接參數,本地建立的表必須和遠程表的定義保持一致,這裏我就拿本地另外一個案例數據庫來作測試,效果和遠程是同樣。spa
show create table sakila.actor;
建立遠程存儲引擎表code
CREATE TABLE FEDERATED_actor ( `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`actor_id`), KEY `idx_actor_last_name` (`last_name`) ) ENGINE =FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/sakila/actor';
注意:本地建立的表名必須在遠程服務器存在,建立的字段也必須是遠程表中的字段,能夠比遠程表的字段少,可是不能多,本地存儲引擎選擇:ENGINE =FEDERATED,
CONNECTION選項中的鏈接字符串的通常形式以下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
還有一些鏈接字符串的例子:
CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'
注意:配置密碼做爲純文本的話會存在安全問題,運行show create table,show table status是能夠見的
SELECT * FROM test.federated_actor;
更新本地表
USE test; update federated_actor set last_name='GUINESS1' where actor_id=1;
SELECT * FROM test.federated_actor; SELECT * FROM sakila.actor;
對本地進行更新操做,本地和遠程的數據都被更改了。
增長字段
alter table federated_actor add column idtest INT DEFAULT 0;
Error Code: 1031. Table storage engine for 'federated_actor' doesn't have this option
federated存儲引擎不支持alter table 操做
刪除表
drop table test.federated_actor;
刪除本地表對遠程表無影響
2、create server方法
還能夠經過create server方法建立基於遠程服務器的連接,可是這種連接也是用於federated存儲引擎,不能經過該連接來查詢遠程服務器的表。
語法:
CREATE SERVER server_name FOREIGN DATA WRAPPER wrapper_name OPTIONS (option [, option] ...) option: { HOST character-literal | DATABASE character-literal | USER character-literal | PASSWORD character-literal | SOCKET character-literal | OWNER character-literal | PORT numeric-literal }
注意:wrapper_name只能是mysql,使用其它名稱沒法支持
1.建立server
CREATE SERVER server_10 FOREIGN DATA WRAPPER mysql OPTIONS (HOST '192.168.137.10',USER 'root',PASSWORD 'root' ,PORT 3306,DATABASE 'study');
注意:這些基本參數應該存在,至少須要保證經過這些參數能鏈接到遠程服務器,DATABASE不能少
2.建立表
CREATE TABLE y (name varchar(10)) ENGINE=FEDERATED CONNECTION='server_10';
一樣建立的表名必須和遠程服務器的表名同樣,字段也必須是遠程表中的字段,能夠比遠程表的字段要少可是不能多。
如今查詢本地建立的表也就是查詢遠程表,同時對本地表的操做也會應用到遠程服務器表中。
mysql的dblink的功能目前是具備federated存儲引擎,沒有想其它的數據庫產品那樣的能夠經過dblink服務來對遠程服務器表進行查詢的功能,但願之後能有這方面的功能。
備註: 做者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點全部隨筆都是原創,歡迎你們轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連接,不然保留追究責任的權利。 《歡迎交流討論》 |
---恢復內容結束---