国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)庫(kù)遷移系列】使用pgloader將數(shù)據(jù)從MySQL遷移到openGauss的最佳實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)庫(kù)遷移系列】使用pgloader將數(shù)據(jù)從MySQL遷移到openGauss的最佳實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

數(shù)據(jù)庫(kù)遷移是實(shí)際工作中經(jīng)常遇到的問(wèn)題,比如由于磁盤(pán)空間、業(yè)務(wù)性能、項(xiàng)目改造等等原因,有從甲服務(wù)器遷移到乙服務(wù)器,從A種數(shù)據(jù)庫(kù)遷移到B種數(shù)據(jù)庫(kù),從源路徑遷移到另一個(gè)目標(biāo)路徑、同一個(gè)機(jī)器下從一個(gè)用戶遷移到另一個(gè)用戶等各種場(chǎng)景,有時(shí)需要整個(gè)數(shù)據(jù)庫(kù)所有文件都遷移,有時(shí)只需要遷移部分?jǐn)?shù)據(jù)文件如REDO、表空間文件等。

一、概述

云原生數(shù)據(jù)庫(kù)openGauss也支持若干數(shù)據(jù)庫(kù)遷移工具,其中的pgloader是一個(gè)數(shù)據(jù)導(dǎo)入工具,使用COPY命令將數(shù)據(jù)導(dǎo)入到PostgreSQL。pgloader有兩種工作模式,一種是從文件導(dǎo)入,一種是遷移數(shù)據(jù)庫(kù)。pgloader在兩種情況下都使用PostgreSQL的COPY協(xié)議高效的傳輸數(shù)據(jù)。
openGauss兼容PostgreSQL的通信協(xié)議以及絕大部分語(yǔ)法,本文就介紹如何使用pgloader將MySQL數(shù)據(jù)庫(kù)遷移至openGauss。
pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

整個(gè)過(guò)程可以基本分為四步:
遷移前準(zhǔn)備 > 相關(guān)文件配置 > 執(zhí)行遷移 > 結(jié)果驗(yàn)證

二、遷移前準(zhǔn)備:

下載pgloader

除了 源數(shù)據(jù)庫(kù)MySQL 和目標(biāo)數(shù)據(jù)庫(kù)openGauss,它們之間需要網(wǎng)絡(luò)互通外。還需要關(guān)鍵工具pgloader。因?yàn)槟承┚W(wǎng)絡(luò)原因,我這里使用的是docker 版本的pgloader 下載,安裝在目標(biāo)庫(kù)所在服務(wù)器上。
默認(rèn)pull最新版本。

[root@pekphisprb70593 software]# docker pull dimitri/pgloader
[root@pekphisprb70593 software]# docker run --rm --name pgloader dimitri/pgloader:latest pgloader --version
pgloader version "3.6.7~devel"
compiled with SBCL 2.1.1.debian

需要注意的是,它只是命令行工具,所以一旦執(zhí)行完畢會(huì)自動(dòng)退出。故每次都需要“docker run --rm --name pgloader dimitri/pgloader:latest pgloader + 具體操作”的命令。

修改openGauss加密方式(重要)

用戶密碼存儲(chǔ)在系統(tǒng)表pg_authid中,為防止用戶密碼泄露,openGauss對(duì)用戶密碼進(jìn)行加密存儲(chǔ),所采用的加密算法由配置參數(shù)password_encryption_type決定。

  • 當(dāng)參數(shù)password_encryption_type設(shè)置為0時(shí),表示采用md5方式對(duì)密碼加密。
  • 當(dāng)參數(shù)password_encryption_type設(shè)置為1時(shí),表示采用sha256和md5方式對(duì)密碼加密。
  • 當(dāng)參數(shù)password_encryption_type設(shè)置為2時(shí),表示采用sha256方式對(duì)密碼加密,為默認(rèn)配置。
    pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

由于MD5加密算法安全性低,存在安全風(fēng)險(xiǎn),不建議使用。openGauss 對(duì)原生PostgreSQL的通信協(xié)議進(jìn)行了安全加固,這導(dǎo)致與PostgreSQL的默認(rèn)通信協(xié)議互相不兼容了,因此,使用pgloader的PostgreSQL原生版本默認(rèn)是不能連接openGauss的。會(huì)報(bào)類似下述錯(cuò)誤:
pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

通過(guò)修改該GUC參數(shù)修改數(shù)據(jù)庫(kù)加密算法,執(zhí)行如下命令將參數(shù)修改為1 ,同時(shí)支持md5 和sha256

gs_guc reload -N all -I all -c "password_encryption_type=1"

一定要在設(shè)置完上述參數(shù)后,再新建用戶。

openGauss設(shè)置監(jiān)聽(tīng)

若不設(shè)置,可能會(huì)像我一樣遇到“Failed to connect to pgsql at “xxx” (port 15400) as user “opengauss_test”: Database error 28000: no pg_hba.conf entry for host “172.17.0.2”.”
pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker
設(shè)置方法:

cd /opt/huawei/install/data/dn/
vi pg_hba.conf
在IPv4中新增一行
host    all    all     0.0.0.0/0                      md5
然后重啟數(shù)據(jù)庫(kù)
[omm@pekphisprb70593 dn]$ gs_om -t stop
[omm@pekphisprb70593 dn]$ gs_om -t start

pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

測(cè)試用戶和數(shù)據(jù)

這一步是可選的,包括源庫(kù)的數(shù)據(jù)庫(kù)、用戶和原始數(shù)據(jù),目標(biāo)庫(kù)的數(shù)據(jù)庫(kù)和用戶。如果都已經(jīng)有了則直接跳過(guò)看下一步,缺啥補(bǔ)啥。
創(chuàng)建目標(biāo)庫(kù)openGauss的用戶及database.

[omm@pekphisprb70593 ~]$ gsql -d postgres -p 15400 
openGauss=# CREATE USER opengauss_test identified by 'Gauss_234'; 
openGauss=# GRANT ALL PRIVILEGES TO opengauss_test; 
openGauss=# CREATE DATABASE opengauss_db with owner opengauss_test ENCODING 'utf8' template = template0;  

新建了一個(gè)空表test2。

[omm@pekphisprb70593 dn]$ gsql -d opengauss_db -p 15400
opengauss_db=# create table if not exists test2(id integer);
CREATE TABLE

創(chuàng)建源數(shù)據(jù)庫(kù)和用戶,刷新系統(tǒng)授權(quán)表。

CREATE DATABASE IF NOT EXISTS mysql_db1 default charset utf8;
CREATE USER mysql_t1 identified by 'Mysql_234' ;
GRANT ALL PRIVILEGES ON *.* TO 'mysql_t1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

構(gòu)造數(shù)據(jù)

mysql@siaphisprk01345:~> mysql -u mysql_t1 -p
mysql> use mysql_db1;
create table if not exists test1 (id int(10),name char(20),salary float,time datetime(6),addr varchar(200),primary key(id)) ;
insert into test1 values (1,'zhangsan',2000.00,'2018-06-01 00:00:00','beijing');
insert into test1 values (2,'李四',2000.89,'2018-06-01 00:00:00','西安');
insert into test1 values (3,'Bob',2000,'2018-06-02 00:00:00','南京');

#創(chuàng)建了一個(gè)和目標(biāo)數(shù)據(jù)庫(kù)表結(jié)構(gòu)不同的test2。
create table if not exists test2(id int(10),name varchar(20));
insert into test2 values (1234567,'Kevin');
#創(chuàng)建空表test3。
create table if not exists test3(id int(10));

三、配置文件

pgloader提供豐富的配置項(xiàng),我們可以自由定義遷移時(shí)的各類動(dòng)作,如通過(guò)include drop,刪除目標(biāo)數(shù)據(jù)庫(kù)中名稱出現(xiàn)在MySQL數(shù)據(jù)庫(kù)中的所有表,以允許連續(xù)多次使用同一命令,從干凈的環(huán)境自動(dòng)啟動(dòng)。
在pgloader所在服務(wù)器任意路徑下創(chuàng)建一個(gè)配置文件,文件可以命名為opengauss.loader。下面是一個(gè)配置文件示例,里面的值需要修改為自己環(huán)境的實(shí)際值。

LOAD DATABASE 
  
FROM mysql://mysql_t1:Mysql_234@1.1.1.1:3306/mysql_db1 
  
INTO postgresql://opengauss_test:Gauss_234@2.2.2.2:15400/opengauss_db 
  
WITH include drop, create tables, create indexes, reset no sequences, 
  
workers = 8, concurrency = 1, 
  
multiple readers per thread, rows per range = 50000 
  
CAST 
  
type varchar when(= 1 precision) to "boolean" drop typemod keep default keep not null;

幾個(gè)配置項(xiàng)簡(jiǎn)單介紹下:

  • FROM:源庫(kù),格式:
    mysql://用戶名:密碼@IP:端口/數(shù)據(jù)庫(kù)名稱
  • INTO:目標(biāo)庫(kù),格式:
    postgresql://用戶名:密碼@IP:端口/數(shù)據(jù)庫(kù)名稱
  • WITH:從MySQL數(shù)據(jù)庫(kù)加載時(shí)的選項(xiàng)。有include drop、create tables、create indexes等選項(xiàng)。
  • CAST:因?yàn)閮煞N數(shù)據(jù)庫(kù)的數(shù)據(jù)類型并不完全一致,工具允許用戶覆蓋已有的默認(rèn)轉(zhuǎn)換規(guī)則或者使用特殊情況修改它們,自定義類型轉(zhuǎn)換規(guī)則。
    還有個(gè)比較重要的功能是部分遷移:用戶可以通過(guò) including only table names matching 和 excluding table names matching 實(shí)現(xiàn)只遷移特定的表或者在遷移過(guò)程中排除特定的表。

更詳細(xì)的配置項(xiàng)解讀,可查看官網(wǎng)的說(shuō)明:https://pgloader.readthedocs.io/en/latest/ref/mysql.html
Migratinga MySQL Database to PostgreSQL — pgloader 3.4.1 documentation

四、執(zhí)行遷移

啟動(dòng)docker:

docker run -tid --name pgloader_test dimitri/pgloader 

復(fù)制配置文件到docker:

docker cp ./openGauss.loader pgloader_test:/ 

進(jìn)入docker環(huán)境:

docker exec -it pgloader_test /bin/bash

啟動(dòng)遷移

root@548498fb64a6:/# pgloader opengauss.loader

pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

如果遇到問(wèn)題可以先按照上面的配置步驟去檢查下。

五、結(jié)果驗(yàn)證

現(xiàn)在來(lái)看下遷移結(jié)果與預(yù)期是否一致:
在目標(biāo)庫(kù)進(jìn)行查詢:

[omm@pekphisprb70593 dn]$ gsql -d opengauss_db -p 15400

可以看出表 test1和test3包括數(shù)據(jù)都已經(jīng)遷移過(guò)來(lái)。test2由于遷移前后的數(shù)據(jù)庫(kù)結(jié)構(gòu)不一致并沒(méi)有遷移成功。與預(yù)期一致。
但是之前mysql定義的float類型,被強(qiáng)制轉(zhuǎn)成double precision。其他的一些不同和限制有興趣或者必須要遷移的同學(xué)自行探索下。
pgloader根據(jù)條件導(dǎo)入數(shù)據(jù),openGauss經(jīng)驗(yàn)總結(jié),mysql,數(shù)據(jù)庫(kù),云原生,docker

總結(jié):使用pgloader進(jìn)行數(shù)據(jù)庫(kù)的遷移過(guò)程還是比較簡(jiǎn)單的,有興趣的同學(xué)可以嘗試下。

openGauss: 一款高性能、高安全、高可靠的企業(yè)級(jí)開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)。

??如果您覺(jué)得博主的文章還不錯(cuò)或者有幫助的話,請(qǐng)關(guān)注一下博主,如果三連點(diǎn)贊評(píng)論收藏就更好啦!謝謝各位大佬給予的支持!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-783343.html

到了這里,關(guān)于【數(shù)據(jù)庫(kù)遷移系列】使用pgloader將數(shù)據(jù)從MySQL遷移到openGauss的最佳實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)庫(kù)遷移之mysql到達(dá)夢(mèng)數(shù)據(jù)庫(kù)

    數(shù)據(jù)庫(kù)遷移之mysql到達(dá)夢(mèng)數(shù)據(jù)庫(kù)

    由于業(yè)務(wù)需求要求數(shù)據(jù)庫(kù)國(guó)產(chǎn)化,因此將數(shù)據(jù)從mysql數(shù)據(jù)庫(kù)中遷移到國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)中。將mysql中的每個(gè)庫(kù)遷移到達(dá)夢(mèng)不同模式下,下面為詳細(xì)過(guò)程。 (1)安裝達(dá)夢(mèng)客戶端工具 (2)點(diǎn)擊選擇DM管理工具 (3)創(chuàng)建模式和用戶 在用戶菜單中,新建一個(gè)TEST模式以及相應(yīng)的用戶。

    2024年02月08日
    瀏覽(34)
  • mysql數(shù)據(jù)庫(kù)遷移

    mysql數(shù)據(jù)庫(kù)遷移

    公司有個(gè)項(xiàng)目,剛開(kāi)始數(shù)據(jù)量不是大的時(shí)候,數(shù)據(jù)庫(kù)和服務(wù)上的所有應(yīng)用數(shù)據(jù)都放在一個(gè)舊小盤(pán)中,隨著項(xiàng)目數(shù)據(jù)的增長(zhǎng),舊的磁盤(pán)被占滿了,導(dǎo)致系統(tǒng)無(wú)法寫(xiě)入數(shù)據(jù),我和同事排查了很長(zhǎng)時(shí)間,最終確定是磁盤(pán)被占滿導(dǎo)致的一系列連鎖問(wèn)題。問(wèn)題找到了,接下來(lái)就是想辦法

    2024年02月14日
    瀏覽(26)
  • mysql數(shù)據(jù)庫(kù)數(shù)據(jù)如何遷移目錄

    mysql數(shù)據(jù)庫(kù)數(shù)據(jù)如何遷移目錄

    默認(rèn)位置 C:ProgramDataMySQLMySQL Server 8.0 步驟2中Data文件夾就是mysql存放數(shù)據(jù)的位置 這里舉例移動(dòng)到E盤(pán)下 原來(lái)my.ini文件不要修改文件位置,如果修改需要另行學(xué)習(xí)

    2024年02月07日
    瀏覽(101)
  • 如何遷移MySQL數(shù)據(jù)庫(kù)?

    遷移MySQL數(shù)據(jù)庫(kù)可以采取多種方法,以下是其中幾種常用的方法: 備份和還原:將原有的MySQL數(shù)據(jù)庫(kù)備份到一個(gè)文件中,然后將備份文件還原到新的MySQL服務(wù)器中。具體來(lái)說(shuō),可以使用mysqldump命令進(jìn)行備份,使用mysql命令進(jìn)行還原。例如,備份一個(gè)名為mydb的數(shù)據(jù)庫(kù)可以使用以下

    2024年02月09日
    瀏覽(27)
  • 【MySQL系列】使用C語(yǔ)言來(lái)連接數(shù)據(jù)庫(kù)

    【MySQL系列】使用C語(yǔ)言來(lái)連接數(shù)據(jù)庫(kù)

    ?導(dǎo)航小助手? ? ? ??? 寫(xiě)在前面 ? ? ? ? ? ?? 一、準(zhǔn)備工作 ? ? ? ? ? ? ? ????? 1.1 把 libmysql.dll 和 libmysql.lib 文件復(fù)制到工程目錄下 ? ? ? ? ? ? ? ????? 1.2 添加 libmysql.lib? ? ? ? ? ? ? ? ????? 1.3 添加 include目錄 ? ? ? ? ? ? ? ????? 1.4 包含頭文件 ? ?

    2024年02月04日
    瀏覽(44)
  • MySQL數(shù)據(jù)庫(kù)遷移(直接復(fù)制文件)

    MySQL數(shù)據(jù)庫(kù)遷移(直接復(fù)制文件) - 簡(jiǎn)書(shū) (jianshu.com) 看了幾種方法: 1、修改注冊(cè)表的 windows下遷移mysql數(shù)據(jù) - 程序員丁先生 - 博客園 (cnblogs.com) 2、mysqldump指令將數(shù)據(jù)庫(kù)表/數(shù)據(jù)保存成xx.sql文件存到本地的 (157條消息) 如何簡(jiǎn)單實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)遷移_歲月呀的博客-CSDN博客 看著都復(fù)

    2024年02月15日
    瀏覽(38)
  • Mysql數(shù)據(jù)庫(kù)遷移|如何把一臺(tái)服務(wù)器的mysql數(shù)據(jù)庫(kù)遷移到另一臺(tái)服務(wù)器上的myql中

    Mysql數(shù)據(jù)庫(kù)遷移|如何把一臺(tái)服務(wù)器的mysql數(shù)據(jù)庫(kù)遷移到另一臺(tái)服務(wù)器上的myql中

    ? 那么這里博主先安利一下一些干貨滿滿的專欄啦! Linux專欄 https://blog.csdn.net/yu_cblog/category_11786077.html?spm=1001.2014.3001.5482 操作系統(tǒng)專欄 https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482 手撕數(shù)據(jù)結(jié)構(gòu) https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482 一、在

    2024年02月06日
    瀏覽(41)
  • Mysql實(shí)現(xiàn)Linux下數(shù)據(jù)庫(kù)目錄遷移

    Centos中遷移Mysql的數(shù)據(jù)目錄,一般是硬盤(pán)滿了不夠用,然后掛載了新的數(shù)據(jù)盤(pán),那么就可以將Mysql數(shù)據(jù)遷移到新的數(shù)據(jù)盤(pán)。 可以查看pid后kill停止,可以進(jìn)入目錄stop,可以變量停止 復(fù)制當(dāng)前目錄到新目錄 更改mysql數(shù)據(jù)存儲(chǔ)路徑

    2024年02月12日
    瀏覽(31)
  • mysql數(shù)據(jù)庫(kù) windows遷移至linux

    mysql數(shù)據(jù)庫(kù) windows遷移至linux

    1.打開(kāi)navicat,選擇一個(gè)數(shù)據(jù)庫(kù)進(jìn)行操作: 之后文件會(huì)保存為一個(gè)xxx.sql文件,之后打開(kāi)xftp,把生成的sql放進(jìn)一個(gè)文件夾中( /home/dell/linuxmysql ): 之后登錄mysql數(shù)據(jù)庫(kù),并創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),然后把剛剛的數(shù)據(jù)導(dǎo)入到新的數(shù)據(jù)庫(kù)中: 如果出現(xiàn)下面情況說(shuō)明數(shù)據(jù)庫(kù)已經(jīng)成功導(dǎo)入

    2024年02月07日
    瀏覽(101)
  • 用于將Grafana默認(rèn)數(shù)據(jù)庫(kù)sqlite3遷移到MySQL數(shù)據(jù)庫(kù)

    用于將Grafana默認(rèn)數(shù)據(jù)庫(kù)sqlite3遷移到MySQL數(shù)據(jù)庫(kù)

    以下是一個(gè)方案,用于將Grafana數(shù)據(jù)遷移到MySQL數(shù)據(jù)庫(kù)。 背景: grafana 默認(rèn)采用的是sqlite3,當(dāng)我們要以集群形式部署的時(shí)使用mysql較為方便,試了很多sqlite轉(zhuǎn)mysql的方法要么收費(fèi),最后放棄。選擇自己動(dòng)手風(fēng)衣足食。 目標(biāo): 遷移sqlite3切換數(shù)據(jù)庫(kù)到mysql 前提條件: 確保你已經(jīng)安裝了

    2024年02月20日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包