Postgresql不支持跨數(shù)據(jù)庫(kù)操作。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為習(xí)水企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,習(xí)水網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
可以通過(guò)pg_dump加上pg_restore或psql來(lái)完成遷移,或者直接使用sql語(yǔ)句中的copy語(yǔ)句來(lái)完成數(shù)據(jù)的遷移。
ServicesManagement”即“服務(wù)”中停止相應(yīng)的PostgreSQL服務(wù)方式二:通過(guò)命令行“NETSTOPpostgresql-x64-9.1”停止相應(yīng)的PostgreSQL服務(wù)Step2:修改注冊(cè)表對(duì)應(yīng)鍵值位置在"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-9.1\ImagePath",將“-D”后的目錄名修改為新的數(shù)據(jù)目錄位置即可,如果目錄路徑中含有空格,需要用引號(hào)引起。Step3:數(shù)據(jù)遷移拷貝數(shù)據(jù)至新數(shù)據(jù)目錄,需要注意必須檢查用戶權(quán)限是否可于訪問(wèn)新的數(shù)據(jù)目錄。Step4:開(kāi)啟PostgreSQL服務(wù)或者使用命令行命令“NETSTARTpostgresql-x64-9.1”[Linux]修改postgresql.conf文件,data_directory='新數(shù)據(jù)目錄名',然后重啟postgresql服務(wù)即可。修改完畢后,可以用psql命令“showdata_directory”查看當(dāng)前數(shù)據(jù)目錄
CloudCanal 2.1.0.x 版本開(kāi)始支持 StarRocks 作為對(duì)端的數(shù)據(jù)遷移同步能力
本文通過(guò) MySQL-StarRocks 的數(shù)據(jù)遷移同步案例簡(jiǎn)要介紹這個(gè)源端的能力。鏈路特點(diǎn):
StarRocks 提供了多種導(dǎo)入方式。CloudCanal 采用了 StreamLoad 的方式進(jìn)行導(dǎo)入,源端的消息會(huì)轉(zhuǎn)成字節(jié)流,通過(guò) HTTP 協(xié)議發(fā)往 StarRocks。
相比直接通過(guò) SQL 寫(xiě)入的方式,StreamLoad 方式會(huì)有更好的性能,寫(xiě)入的數(shù)據(jù)直接經(jīng) FE 轉(zhuǎn)發(fā)給 BE 處理。如果直接采用 SQL 寫(xiě)入,在 FE 側(cè),會(huì)有額外的 SQL 解析開(kāi)銷(xiāo)。
CloudCanal 提供了 StreamLoad 可配置的豐富參數(shù),包括:
過(guò)快的寫(xiě)入會(huì)導(dǎo)致 StarRocks 來(lái)不及 compaction,從而產(chǎn)生異常。CloudCanal 提供了兩個(gè)任務(wù)參數(shù),支持在一批數(shù)據(jù)寫(xiě)入后自動(dòng)停頓一段時(shí)間,避免這種問(wèn)題。參數(shù)為:
CloudCanal 任務(wù)詳情頁(yè),點(diǎn)擊 參數(shù)修改 ,即可調(diào)整
StarRocks 作為實(shí)時(shí)數(shù)倉(cāng),采用 主鍵模型 或者 聚合模型 較多。CloudCanal默認(rèn)采用 主鍵模型 ,能夠?qū)崟r(shí)同步源端的 INSERT / UPDATE / DELETE 。
基于 StreamLoad 的寫(xiě)入方式,實(shí)際寫(xiě)入對(duì)端的操作均為 INSERT。CloudCanal 同步時(shí)會(huì)自動(dòng)將 UPDATE/DELETE 轉(zhuǎn)成INSERT語(yǔ)句,并修改 __ops 值,StarRocks 會(huì)自動(dòng)進(jìn)行compaction。
StarRocks 不支持 \n 等特殊符號(hào)寫(xiě)入,CloudCanal 任務(wù)通過(guò)參數(shù)設(shè)置( enableEscape 參數(shù)) 開(kāi)啟自動(dòng)轉(zhuǎn)義。
對(duì)于高流量的場(chǎng)景,建議使用 4G 及以上的任務(wù)規(guī)格配置,并且對(duì)相關(guān)參數(shù)進(jìn)行調(diào)優(yōu),調(diào)優(yōu)建立在任務(wù)無(wú) GC 問(wèn)題、對(duì)端 StarRocks 沒(méi)有 compaction 瓶頸的情況下。
本文簡(jiǎn)單介紹了如何使用 CloudCanal 進(jìn)行MySQL到StarRocks 的數(shù)據(jù)遷移同步。各位讀者朋友,如果你覺(jué)得還不錯(cuò),請(qǐng)點(diǎn)贊、評(píng)論加轉(zhuǎn)發(fā)吧。
默認(rèn)任務(wù)參數(shù)配置下,如果導(dǎo)入數(shù)據(jù)過(guò)于頻繁可能會(huì)任務(wù)異常,這時(shí)候可以調(diào)節(jié)上文提到的fullBatchWaitTimeMs和increBatchWaitTimeMs參數(shù)或者調(diào)整StarRocks的Server側(cè)的合并策略。下圖為StarRocks官方提供的常見(jiàn)問(wèn)題FAQ
CloudCanal-免費(fèi)好用的企業(yè)級(jí)數(shù)據(jù)同步工具,歡迎品鑒。
了解更多產(chǎn)品可以查看 官方網(wǎng)站 :
CloudCanal社區(qū) :
查找本地文件,你可以通過(guò)sql 里的命令執(zhí)行本地的dos 命令。就可以操作本地文件啦,
這個(gè)我沒(méi)操作過(guò),建議性的。
遷移PostgreSQL到Oracle涉及到兩方面工作:表結(jié)構(gòu)的遷移和表數(shù)據(jù)的遷移。
表結(jié)構(gòu)的遷移
表結(jié)構(gòu)的遷移相對(duì)簡(jiǎn)單可以借助ESF DatabaseMigration Toolkit進(jìn)行.。ESF Database MigrationTookit工具是試用版,所以不能通過(guò)其遷移數(shù)據(jù)(它會(huì)將所有varchar字段的開(kāi)頭替換為T(mén))。通過(guò)ESF DatabaseMigration Toolkit遷移完成后,通過(guò)PL/SQL developer的export userobjects得到創(chuàng)建表結(jié)構(gòu)的語(yǔ)句。
表數(shù)據(jù)的遷移
數(shù)據(jù)遷移有2種方式:postgreSQL導(dǎo)出insert語(yǔ)句然后執(zhí)行語(yǔ)句導(dǎo)入或者postgreSQL導(dǎo)出文件然后用oracle的sqlldr方式導(dǎo)入。前者存在clob難以插入以及sql長(zhǎng)度限制等問(wèn)題,推薦后者方式進(jìn)行數(shù)據(jù)遷移。
1.Copy命令導(dǎo)出數(shù)據(jù)文件
copy table1 to'd:/table1.data' delimiter as '|' nullas '';
注意:postgreSQL存在boolean類(lèi)型導(dǎo)出為t或者f(oracle用int類(lèi)型1或者2來(lái)代替),使用cast函數(shù)
Copy (select cast(column asint) from table1 )to 'd:/table1.data' delimiter as '|' null as '';
批量執(zhí)行使用sql函數(shù)進(jìn)行
create functionexportLiferay(path text) returns void
as
$$
begin
execute 'copy table1 to ''' || path || 'table1_.data''delimiter as ''|'' null as '''' ';
return;
end;
$$
languageplpgsql;
2. 制作sqlldr控制文件
注意:字符集、clob以及時(shí)間,日期類(lèi)型
load data
CHARACTERSET UTF8
into table table1
fields terminated by "|"
optionally enclosed by '"'
trailing nullcols
(
folderid,
groupid,
companyid,
userid,
createdatetimestamp"yyyy-mm-dd hh24:mi:ss.ff",
modifieddatetimestamp"yyyy-mm-dd hh24:mi:ss.ff",
parentfolderid,
name,
descriptionchar(10000)
)
3.執(zhí)行導(dǎo)入
sqlldr import/import data=table1.data control=table1.ctllog=table1.log readsize=100000000