MySql数据同步FEDERATED引擎
概要:FEDERATED存儲(chǔ)引擎訪問(wèn)在遠(yuǎn)程數(shù)據(jù)庫(kù)的表中的數(shù)據(jù),而不是本地的表。這個(gè)特性給某些開(kāi)發(fā)應(yīng)用帶來(lái)了便利,你可以直接在本地構(gòu)建一個(gè)federated表來(lái)連接遠(yuǎn)程數(shù)據(jù)表,配置好了之后本地表的數(shù)據(jù)可以直接跟遠(yuǎn)程數(shù)據(jù)表同步。實(shí)際上這個(gè)引擎里面是不真實(shí)存放數(shù)據(jù)的,所需要的數(shù)據(jù)都是連接到其他MySQL服務(wù)器上。
一、步驟:
1、首先修正mysql的my.ini文件,開(kāi)啟FEDERATED引擎(my.ini文件存放在mysql安裝路勁下)。
2、步驟1之后基本上是完成了,之后就是操作數(shù)據(jù)了。第二步創(chuàng)建一張表,一張和你要同步的表一模一張,你可以直接復(fù)制創(chuàng)建語(yǔ)句。但是要在創(chuàng)建語(yǔ)句后面加上 ENGINE=Federated 和 CONNECTION='mysql://[username]:[password]@192.168.84.73:3306/kmsong/km_tbl_companycffsong';
操作其上步驟,新建出來(lái)的表就是鏈接到了192.168.84.73:3306/kmsong/b_owner這個(gè)表,本身只是一個(gè)空殼,只能進(jìn)行數(shù)據(jù)的增刪改查操作,不能改變鏈接到的表的表結(jié)構(gòu),如果改變自身的表結(jié)構(gòu)會(huì)出現(xiàn)意想不到的錯(cuò)誤。
二、注意事項(xiàng)
1. 對(duì)本地虛擬表的結(jié)構(gòu)修改,并不會(huì)修改遠(yuǎn)程表的結(jié)構(gòu)?
2.truncate?命令,會(huì)清除遠(yuǎn)程表數(shù)據(jù)?
3.??drop命令只會(huì)刪除虛擬表,并不會(huì)刪除遠(yuǎn)程表
4.??不支持?alter?table?命令?
目前使用federated?最大的缺點(diǎn):?
1.?select?count(*),?select?*?from?limit?M,?N?等語(yǔ)句執(zhí)行效率非常低,數(shù)據(jù)量較大時(shí)存在很嚴(yán)重的問(wèn)題,但是按主鍵或索引列查詢,則很快,如以下查詢就非常慢(假設(shè)?id?為主索引)?
select?id?from?db.tablea?where?id?>100?limit?10?;
而以下查詢就很快:?
select?id?from?db.tablea?where?id?>100?and?id<150
2.??如果虛擬虛擬表中字段未建立索引,而實(shí)體表中為此字段建立了索引,此種情況下,性能也相當(dāng)差。但是當(dāng)給虛擬表建立索引后,性能恢復(fù)正常。
3.?類似?where?name?like?"str%"?limit?1?的查詢,即使在?name?列上創(chuàng)建了索引,也會(huì)導(dǎo)致查詢過(guò)慢,是因?yàn)?/p>
federated引擎會(huì)將所有滿足條件的記錄讀取到本,再進(jìn)行?limit?處理。
這幾個(gè)問(wèn)題已經(jīng)嚴(yán)重影響了federated?在實(shí)際環(huán)境中的應(yīng)用,所以這個(gè)引擎很冷門(mén),不過(guò)在一些特定環(huán)境還是能用用的。
三、MySql密碼有@符號(hào)如何同步
解決:使用create server創(chuàng)建FEDERATED表
CREATE SERVER ExhibitionServer
FOREIGN DATA WRAPPER mysql
OPTIONS (USER '用戶名', HOST 'IP地址', DATABASE '數(shù)據(jù)庫(kù)名稱',?
PORT 端口號(hào),PASSWORD '密碼');
PS:只有端口號(hào)沒(méi)有單引號(hào),其余的都有單引號(hào)。你也可以自己嘗試加上單引號(hào)看能否成功。
CREATE TABLE b_owner?(
.............................................
.............................................
) ENGINE=INNODB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
?ENGINE =FEDERATED CONNECTION='ExhibitionServer/b_owner'
?
總結(jié)
以上是生活随笔為你收集整理的MySql数据同步FEDERATED引擎的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mybatis学习(30):修改功能
- 下一篇: Rhino Grasshopper 参数