一、概述
本文主要介紹通過federated儲存引擎建立遠端連線表
測試環境:mysql 5.6.21
二、步驟
開啟federated儲存引擎
先查看federated儲存引擎儲存引擎是否啟用
預設mysql是沒有開啟federated儲存引擎,我這裡因為已經配置了。
開啟federated儲存引擎只需要在my.cnf檔案中增加‘federated'就可以。
建立遠端連線表
mysql配置遠端連線必須在本地建立federated儲存引擎的表,配置遠端連線參數,本地建立的表必須和遠端資料表的定義保持一致,這裡我就拿本地另一個案例資料庫來做測試,效果和遠程是一樣。
複製代碼 代碼如下:
show create table sakila.actor;
建立遠程儲存引擎表
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_actorset 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;
刪除本地表對遠端資料表無影響
三、總結
federated儲存引擎就是mysql用來解決類型於其它資料庫系統的dblink功能,但是配置federated相對來說麻煩一點,還需要在本地建立表,同時也存在安全方面的因素,總體來說該功能避還是很多,希望mysql在後續版本能有所改善。
以上就是本文的全部內容,希望對大家的學習有所協助。