1. 程式人生 > >利用 docker 還原數據庫

利用 docker 還原數據庫

使用 text mar 文件格式 images 數據庫還原 當前目錄 log titan

Docker 安裝 MySQL
docker pull mysql
查找Docker Hub上的mysql鏡像
[root@iZbp15ynf8pjgvcr486szaZ ~]#docker search mysql
技術分享圖片

拉取官方的鏡像,標簽為5.7.23
[root@iZbp15ynf8pjgvcr486szaZ ~]# docker pull mysql:5.7.23
技術分享圖片

等待下載完成後,我們就可以在本地鏡像列表裏查到REPOSITORY為mysql
[root@localhost ~]# docker images

技術分享圖片

首先,創建目錄mysql,用於存放後面的相關東西。

runoob@runoob:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf ~/mysql/sql

技術分享圖片

查看老數據庫版本號
[root@iZbp15ynf8pjgvcr486szaZ ~]# mysql --version
技術分享圖片

將數據庫導出sql文件格式
[root@iZbp15ynf8pjgvcr486szaZ ~]#mysql -e "show databases;" -uroot -p123456 | grep -Ev "Database|titan|information_schema|well_order" | xargs mysqldump -uroot -p123456 --databases > mysql_dump2.sql
技術分享圖片

因為數據庫裏有個庫特別大,所以將庫過慮掉,grep -Ev "Database|titan|information_schema|well_order,就是將以上三個庫過慮掉

將備份好的數據拷貝到剛才創建好的目錄下/mysql/sql
[root@iZbp15ynf8pjgvcr486szaZ ~]# scp mysql_dump2.sql [email protected]:/root/mysql/sql
技術分享圖片

使用mysql鏡像運行容器

[root@localhost ~]# docker run --name mysql -p 3306:3306 --privileged=true -v /root/mysql/sql:/docker-entrypoint-initdb.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7.23

技術分享圖片
說明docker運行成功
命令說明:

    -p     3306:3306:將容器的 3306 端口映射到主機的 3306 端口。

    -v     /root/mysql/sql:/docker-entrypoint-initdb.d 將備份好的數據庫文件存放在此,docker啟動進會讀取些文件的內容,並將數據庫還原到docker

    -v    /root/mysql/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。

    -e     MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。

    --privileged=true  在docker run時給該容器加權限

註意:如果沒加權限的話會報錯:Permission denied

因為把宿主機的一個目錄掛載到容器中的一個目錄,當訪問容器中的這個目錄時,無法訪問目錄,權限拒絕。該問題通常在centos7下出現。或者一個容器啟動成功後,裏面的服務無法成功訪問。

利用 docker 還原數據庫