利用 docker 還原數據庫

Docker 安裝 MySQL
docker pull mysql
查找Docker Hub上的mysql鏡像
[root@iZbp15ynf8pjgvcr486szaZ ~]#docker search mysql
利用 docker 還原數據庫mysql

拉取官方的鏡像,標籤爲5.7.23
[root@iZbp15ynf8pjgvcr486szaZ ~]# docker pull mysql:5.7.23
利用 docker 還原數據庫sql

等待下載完成後,咱們就能夠在本地鏡像列表裏查到REPOSITORY爲mysql
[root@localhost ~]# docker imagesdocker

利用 docker 還原數據庫

首先,建立目錄mysql,用於存放後面的相關東西。數據庫

runoob@runoob:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf ~/mysql/sql
利用 docker 還原數據庫centos

查看老數據庫版本號
[root@iZbp15ynf8pjgvcr486szaZ ~]# mysql --version
利用 docker 還原數據庫socket

將數據庫導出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
利用 docker 還原數據庫ide

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

將備份好的數據拷貝到剛纔建立好的目錄下/mysql/sql
[root@iZbp15ynf8pjgvcr486szaZ ~]# scp mysql_dump2.sql root@192.168.22.7:/root/mysql/sql
利用 docker 還原數據庫3d

使用mysql鏡像運行容器code

[root@localhost ~]# docker run --name mysql -p 3306:3306 --privileged=true -v /root/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -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 還原數據庫
說明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 。

    -v   /root/mysql/conf/mysqld.cnf :將mysql配置文件掛載到docker容器裏 。

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

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

注意:若是沒加權限的話會報錯:Permission denied

掛載配置文件的路徑要與容器裏的路徑一致。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
#bind-address = 127.0.0.1
security risks
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

利用 docker 還原數據庫由於把宿主機的一個目錄掛載到容器中的一個目錄,當訪問容器中的這個目錄時,沒法訪問目錄,權限拒絕。該問題一般在centos7下出現。或者一個容器啓動成功後,裏面的服務沒法成功訪問。

相關文章
相關標籤/搜索