好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Docker環(huán)境下升級PostgreSQL的步驟方法詳解

Docker環(huán)境下升級PostgreSQL的步驟方法詳解

熱門標(biāo)簽:海豐有多少商家沒有地圖標(biāo)注 漯河外呼電話系統(tǒng) 美容工作室地圖標(biāo)注 辦公外呼電話系統(tǒng) 地圖標(biāo)注和圖片名稱的區(qū)別 打電話智能電銷機(jī)器人授權(quán) 外呼調(diào)研系統(tǒng) 合肥公司外呼系統(tǒng)運(yùn)營商 重慶自動(dòng)外呼系統(tǒng)定制

前段時(shí)間接到了要升級數(shù)據(jù)庫的需求,在公司大佬的指導(dǎo)下搞定了升級的方案,在此記錄一下。

查閱PostgreSQL 官方文檔 可以得知,官方提供了兩種方式對數(shù)據(jù)庫進(jìn)行升級——pg_dumpall與pg_upgrade。

pg_dumpall 是將數(shù)據(jù)庫轉(zhuǎn)儲成一個(gè)腳本文件,然后在新版數(shù)據(jù)庫中可以直接導(dǎo)入。這種方式操作簡單,跟著官方文檔就能輕松操作,但是明顯只適用于數(shù)據(jù)量較少的情況,在我的測試環(huán)境里,導(dǎo)入一個(gè)2g的數(shù)據(jù)庫用了將近10分鐘。

所以我這里選用的是 pg_upgrade ,這種方式是直接將數(shù)據(jù)文件升級到高版本,2g數(shù)據(jù)用時(shí)一分多鐘。

目前我手上的項(xiàng)目的PgSql是跑在在Docker上面的,版本是10.x,需求是升級到13.x,簡單講一下步驟:

  • _upgrade需要用到新舊容器的bin跟data,所以首先將舊數(shù)據(jù)庫容器的bin還有data文件復(fù)制到服務(wù)器;
  • 開啟一個(gè)PG13的容器,這個(gè)是后面用于服務(wù)的正式容器(下文稱為正式容器),然后另外開啟一個(gè)臨時(shí)容器(下文稱為臨時(shí)容器)用于升級數(shù)據(jù)文件,將這兩個(gè)容器的數(shù)據(jù)庫目錄映射到同一個(gè)目錄;
  • PG13的容器內(nèi)部會缺少很多PG10的運(yùn)行庫,所以需要從舊容器中復(fù)制到臨時(shí)容器里;
  • 臨時(shí)容器將數(shù)據(jù)升級后,由于跟正式容器的數(shù)據(jù)文件目錄映射到了同一個(gè)目錄,所以數(shù)據(jù)可以正常使用;于跟正式容器的數(shù)據(jù)文件目錄映射到了同一個(gè)目錄,所以數(shù)據(jù)可以正常使用;

首先自然是拉取一個(gè)PG13的鏡像,然后放好別動(dòng):

docker pull postgres:13.1

創(chuàng)建升級目錄:

#創(chuàng)建備份目錄
mkdir /db_update/new_data

cd /db_update

#將舊數(shù)據(jù)庫容器的bin跟data復(fù)制出來
docker cp pgdb:/usr/local old_bin
docker cp pgdb:/usr/local old_share
docker cp pgdb:/var/lib/postgresql/data old_data

#授權(quán)
chmod -R 777 /db_update/old_data

此時(shí)目錄結(jié)構(gòu)應(yīng)該是這樣的:

#新建一個(gè)正式容器,并映射data目錄,初始化完成后ctrl+c 退出
 docker run --name="pg13_new" -v "/db_update/new_data:/var/lib/postgresql/data/pgdata" -e POSTGRES_USER=dbuser -e POSTGRES_PASSWORD=123456 -e PGDATA=/var/lib/postgresql/data/pgdata postgres:13.1

 #新建一個(gè)臨時(shí)容器,用于升級數(shù)據(jù),映射PG10的bin跟data目錄,容器內(nèi)的data跟正式容器映射到同一個(gè)目錄
 docker run -dti --name="tmp" -v $(pwd)/old_bin:/usr/lib/postgresql/10 -v $(pwd)/old_share:/usr/share/postgresql/10 -v $(pwd)/new_data:/data/new_data -v $(pwd)/old_data:/data/old_data -e PGDATA:/data/new_data --privileged=true postgres:13.1 /bin/bash

容器創(chuàng)建完畢先放著,接下來做別的操作。在PG13內(nèi)會缺失不少PG10所需運(yùn)行文件(血淚教訓(xùn)),可以從舊容器將相關(guān)文件復(fù)制過來。

#將舊容器的文件復(fù)制到本機(jī)
docker cp pgdb:/usr/lib /old_lib
docker cp pgdb:/lib /old_lib2

此時(shí)的目錄結(jié)構(gòu):

#將文件復(fù)制到升級容器
docker cp /old_lib tmp:/old_lib
docker cp /old_lib2 tmp:/old_lib2

#將文件復(fù)制到對應(yīng)目錄
docker exec -it tmp /bin/bash
cp /old_lib/* /usr/lib/x86_64-linux-gnu/
cp /old_lib/* /usr/lib
cp /old_lib2/* /lib

將文件復(fù)制完畢后即可以嘗試升級數(shù)據(jù)庫,不過仍有可能出現(xiàn)缺少運(yùn)行庫的問題,同時(shí)也會有權(quán)限的問題,下面會展示如何解決這兩個(gè)問題。

#切換數(shù)據(jù)庫用戶
su -postgres

#檢查是否可以升級,一連串的ok即表示可以執(zhí)行數(shù)據(jù)庫文件的升級
/usr/lib/postgresql/13/bin/pg_upgrade -b /usr/lib/postgresql/10/bin -B /usr/lib/postgresql/13/bin -d /data/old_data -D /data/new_data -U dbuser -p 5433 -P 5434 -c

如果出現(xiàn)下圖的提示,那就是權(quán)限問題,授權(quán)一下即可解決。

解決方法:

#在root用戶下執(zhí)行
chown -R postgres/data/old_data

如果之后包權(quán)限錯(cuò)誤 需權(quán)限 0700 則再執(zhí)行
chmod -R 0700 /data/old_data

再次執(zhí)行檢查升級命令,錯(cuò)誤也再次出現(xiàn):

已經(jīng)很多個(gè)ok了,所以別慌,執(zhí)行more pg_upgrade_server.log可以查看具體錯(cuò)誤

圖中可以看出缺少了libstdc++.so.6這個(gè)文件,我們可以手動(dòng)從舊容器里獲取這個(gè)文件復(fù)制到臨時(shí)容器里面去。

#新打開一個(gè)shell 窗口
cd /var/lib/docker/overlay2
#這條命令會顯示多個(gè)目錄的路徑,選擇其中之一就行了
find -name libstdc++.so.6
#創(chuàng)建一個(gè)文件夾
mkdir /old_lib3
#將庫文件復(fù)制過去
cp ./0928cba045d2d4cabf1f02fc2d4007e302c925393131c743390dc2266e0f1353/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /old_lib3
#復(fù)制到容器
docker cp /old_lib3/ tmp:/old_lib3/
docker exec -it tmp /bin/bash
cp /old_lib3/* /usr/lib/x86_64-linux-gnu/

完成上面的步驟后,再次檢查是否可升級:

看到這一連串ok并且沒有返回錯(cuò)誤即代表可以正常升級,如果仍然有錯(cuò)誤,可以重復(fù)上述步驟。

執(zhí)行升級:

/usr/lib/postgresql/13/bin/pg_upgrade -b /usr/lib/postgresql/11/bin -B /usr/lib/postgresql/13/bin -d /data/old_data -D /data/new_data -U dbuser

至此數(shù)據(jù)庫文件升級完成。

升級完成之后將 new_data目錄按照正常的數(shù)據(jù)庫目錄映射到 docker postgres:13.1 容器 啟動(dòng)即可。

到此這篇關(guān)于Docker環(huán)境下升級PostgreSQL的方法的文章就介紹到這了,更多相關(guān)Docker環(huán)境升級PostgreSQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Docker啟動(dòng)PostgreSQL時(shí)創(chuàng)建多個(gè)數(shù)據(jù)庫的解決方案
  • docker安裝并持久化postgresql數(shù)據(jù)庫的操作步驟
  • 用docker運(yùn)行postgreSQL的方法步驟
  • docker環(huán)境下數(shù)據(jù)庫的備份(postgresql, mysql) 實(shí)例代碼
  • Docker中運(yùn)行PostgreSQL并推薦幾款連接工具

標(biāo)簽:來賓 錦州 珠海 晉城 株洲 衡陽 烏海 蚌埠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker環(huán)境下升級PostgreSQL的步驟方法詳解》,本文關(guān)鍵詞  Docker,環(huán)境,下,升級,PostgreSQL,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Docker環(huán)境下升級PostgreSQL的步驟方法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Docker環(huán)境下升級PostgreSQL的步驟方法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲黄色网页| 韩国爱情动作片介绍| 边摸边吃奶边做视频叫床动图| 日本hd高清xxxxvideos| 男女边摸边吃奶边做爽视频| 黄瓜视频在线播放| 久久天天躁狠狠躁夜夜2020一| 狠狠操狠狠操| 观音好大好爽h| 女人下面真实图片| 又湿又痒下面有一紧| 法国老妇性经典xxxx| 欧美最猛性xxxxx短视频| 脱了她裙子摸进她的内裤亲吻??| 双人摇床剧烈运动| 国产精品扒开腿做爽爽爽视频 | 伊人久久大香线蕉av| 久久久精品影院| 久久精品午夜一区二区福利| 大胆人gogo体艺术高清季玥| 伊人色合天天久久综合网| 日韩国品一二三产品区别2028| 欧美AV色香蕉一区二区蜜桃小说 | 女人下边紧了好还是松点好| 一级黄色武则天| 日本特级黄AA,AA免费看| 91精品国产91久久综合| 欧美成免费| 公用的美人(双性)| 三级黄色短视频| 午夜精品视频在线观看| 国产又黄又粗又猛A片免费看文章 免费?无码?国产免费软件 | 一边亲一边摸一边桶的动态图 | 色999日韩自偷自拍美女| 免费动漫吸乳羞羞动漫| 高中生精品视频在线观看| 久久精品a| 国产成人a人亚洲精v品无码| 将她扔进军中犒赏三军| 久艾草国产成人综合在线视频 | 班主任奶水h系列小说|