# Postgresql備份與覆蓋(Docker安裝) 紀錄關於postgresql從docker安裝,至Database的backup、restore過程中的一些步驟與問題。 ## :memo: 安裝 建議可以上docker hub找自己想要的image版本 ### Step 1: 下載images ``` docker pull postgres ``` ### Step 2: 建立Container - 利用剛剛的image建立Container ``` docker create --name <ContainerName> -p <port>:<port> -e POSTGRES_PASSWORD=<password> postgres ``` > -name設定Container名稱、-p設定本機port對應Container的port、-e設定postgres最高權限user的密碼 ### Step 3: 啟動 ``` docker start <ContainerName> ``` ## :memo: 備份(pg_dump) ``` pg_dump -h <ip> -U <username> <DatabaseName> -f <FileName.sql> ``` > -h為要備份的DB的ip位址、-U為該DB的User、-f將DB備份輸出檔案 > 使用pg_dumpall可以連user資料一起備份 ## :memo: 覆蓋 (以下在container的bash下執行) ``` docker exec -it postgres bash ``` > 進入container的bash ### Step 1:建立資料庫 ``` su - postgres ``` > 須先切換使用者,無法以root執行 ### Step 2:建立user(以postgres執行可以跳過此步驟) ``` createuser -U postgres -P <username> ``` :::info 輸入後需設定user password,務必記住PW ::: ### Step 3:建立Database ``` createdb -U postgres -O <DB的OwnerName> <DatabaseName> ``` ### Step 4:建立Database ``` psql -l ``` > 確認DB是否已成功建立 ### Step 5:將備份檔覆蓋 ``` psql -h localhost -U <OwnerName> -d <DatabaseName> < <備份檔> ``` --- ## :memo: Bonus #### 若有需要在Container環境下進行備份,則可以將備份檔傳入Container環境中 ``` docker inspect -f '{{.Id}}' <ContainerName> ``` > 查詢Container的完整Id ``` docker cp <本機端備份檔> <Container完整Id>:容器路徑 ``` > 例如:docker cp ./desktop/backup.sql 123456789:/var/backup.sql --- ## 資料來源 | Features | link | | ----------------- |:----------------------- | | Postgresql備份&覆蓋| [:link:][備份&覆蓋] | | Docker_Postgresql | [:link:][Docker_Postgresql]| | Docker_CopyFile | [:link:][CopyFile] | [備份&覆蓋]: https://codertw.com/%E8%B3%87%E6%96%99%E5%BA%AB/128286/ [Docker_Postgresql]: https://medium.com/alberthg-docker-notes/docker%E7%AD%86%E8%A8%98-%E9%80%B2%E5%85%A5container-%E5%BB%BA%E7%AB%8B%E4%B8%A6%E6%93%8D%E4%BD%9C-postgresql-container-d221ba39aaec [CopyFile]: https://www.itread01.com/content/1546889429.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up