docker 下mysql 和postgresql 數據庫的搭建以及數據文件的遷移和備份


service docker start - docker 啟動

service docker stop - docker 關閉

 

1.docker 鏡像創建—使用的默認鏡像有數據卷

docker pull hub.c.163.com/library/mysql:5.7.18 – 獲取鏡像

docker images  - 查看鏡像(鏡像id)

docker tag mysql:latest tmysql:5.7 – 添加鏡像標簽

docker rmi –f images_id – 刪除鏡像 (-f 強制刪除鏡像)

 

2.docker 容器的創建

docker run --name tmysql -v /home/dly:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306  -d images_id – 創建並啟動容器,同時有掛載配置文件,注意/home/dly權限。

docker run --name ttpostgres -p 5433:5432 -e POSTGRES_PASSWORD=123456 -v /home/dly:/var/lib/postgresql -d postgres:9.6 -- postgresql 容器創建與啟動

 

docker start container – 啟動容器

docker stop container – 關閉容器

docker ps –a  - 查看容器

docker exec- it container_id  /bin/bash – 進入容器

docker inspect tmysql – 查看容器的元數據

 

3.通過已有的容器創建鏡像 存出和載入

docker ps – 查看備份容器的container_id

docker commit -p container_id container-backup - 使用 docker commit 命令來創建快照,生成一個作為Docker鏡像的容器快照,

docker images – 查看是否生成鏡像

-- # docker tag a25ddfec4d2a arunpyasi/container-backup:test

docker save -o ~/container-backup.tar container-backup - 作為tar包備份。

ls – 查看tar包是否存在。

scp  –r  ~/ container-backup.tar root@10.2.0.3:/home/dly - 服務器遷移

docker load -i ~/container-backup.tar- 加載該Docker鏡像了。

docker images -查看是否鏡像下載

docker run -d -p 3306:3306 –-name tmysql  container-backup  - 運行Docker容器。

docker exec –it contain_id /bin/bash –進入容器

 

 

4. 通過已有的數據卷容器的存出和載入,以下方法可以實現數據庫文件從一個服務器點遷移到另一個服務器

備份

docker run –it –v /var/lib/mysql –name tmysql image_id  - 創建一個帶有數據卷的容器.

## 導入數據

docker run --volumes-from container_name -v $(pwd):/backup images_id tar cvf /backup/backup.tar /var/lib/mysql

docker run --volumes-from container_name -v $(pwd):/backup images_id tar cvf /backup/backup.tar /var/lib/postgresql/data 

 

--利用數據卷容器備份,使用 –volumes-from 標記來創建一個加載 data 容器卷的容器,並從主機掛載當前目錄到容器的 /backup 目錄。容器啟動后,在當前目錄下生成的backup.tar 文件就是data容器卷的備份文件. 

恢復

docker run --name tmysql -p 3306:3306 -v /home/dly:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  -d image_id  -創建一個帶有空數據卷的容器 這個鏡像自動帶有數據卷,i是打開容器中的stdin,t是為容器分配一個偽終端.這里的d是后台運行,並打印容器ID容器,容器運行 。

docker run --volumes-from contain_name  -v $(pwd):/backup image_id tar xvf /backup/backup.tar

重啟docker

此時打開數據庫,數據庫文件已經存在

二.postgresql

源文件服務器-- 因為docker 沒有安裝必要的ssh 和vim 需要單獨安裝

apt-get update

apt-get install ssh – 安裝ssh

#apt-get install vim-gtk – 安裝vim

su – postgress

pg_dumpall | ssh root@10.0.0.96 'cat > /var/pgbackup/db.out' – 目錄存在 -- 導出數據文件db.out

目標文件服務器-- /var/lib/postgresql/data

docker run --name ttpostgres2 -p 5410:5432 -e POSTGRES_PASSWORD=123456 -v /var:/var/lib/postgresql/data -d postgres:9.6 -  啟動容器掛載

docker exec –it ttpostgres2 /bin/bash –進入容器

su – postgres – 切換超級用戶

cd /var/lib/postgresql - 進入目標路徑

psql -f db.out postgres -- 導入數據文件db.out

 

嘗試過數據卷的方法導入postgresql 數據文件,但是沒有成功,只有使用pg_dumpall插件了。
---------------------
作者:D2012LY
來源:CSDN
原文:https://blog.csdn.net/D2012LY/article/details/77851414
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM