docker部署mysql并挂载数据卷
备份mysql源文件
- windows下备份数据库
# 方法一:进入到mysql安装路径下的bin文件,执行备份命令
# pg_dump -h localhost -p 数据库端口 -U 数据库用户名 -d 要备份的数据库名 > 备份后文件的路径\备份文件名
mysqldump -hlocalhost -uroot -p demo_mysql > D:\demo_mysql.sql
# 方法二:通过Navicat提取sql备份文件
- ubuntu下备份数据库
# mysqldump -hIP -u用户名 -p 要备份的数据库名 > 备份后文件的路径\备份文件名
mysqldump -hlocalhost -uroot -p demo_mysql > /home/demo_mysql.sql
创建数据卷
# 创建总数据卷文件夹
mkdir /home/centos/data-volume
# 创建mysql数据卷文件夹
mkdir /home/centos/data-volume/mysql-volume
# 创建mysql-data、databasefile、log文件夹
cd /home/centos/data-volume/mysql-volume; mkdir mysql-data; mkdir databasefile; mkdir log;
下载镜像并创建运行容器
# 下载指定镜像版本或者下载最新版本(mysql:latest)
docker pull mysql:5.7.30
# 创建并运行容器
docker run -it -d --name demo-mysql \
-v /home/centos/data-volume/mysql-volume/mysql-data:/var/lib/mysql \
-p 23307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30
参数 | 说明 |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
-d | 后台运行容器,并返回容器ID |
–name | 为容器指定一个名称 |
-v | 绑定一个数据卷,数据卷不会随着容器的删除而消失,格式为:主机(宿主)数据卷文件或目录:容器文件或目录 |
-p | 指定端口映射,格式为:主机(宿主)端口:容器端口 |
-e | 设置默认用户root的密码,格式为MYSQL_ROOT_PASSWORD=密码 |
查看容器信息
# 查看容器是否运行
docker ps
# 查看容器列表(得到容器名或者容器ID)
docker ps -a
# 查看容器日志
docker logs 容器名或者容器ID
# 获取容器的元数据
docker inspect 容器名或者容器ID
还原数据库
- 通过工具或者命令把最开始备份的文件上传到/home/centos/data-volume/mysql-volume/databasefile目录下
- 复制备份文件至容器中
# docker cp 宿主机文件路径 容器名或者容器ID:容器文件路径
docker cp /home/centos/data-volume/mysql-volume/databasefile/demo_mysql.sql demo-mysql:/home
- 进入容器
# exec命令可以进入容器并且在退出时不会打断容器运行
docker exec -it demo-mysql /bin/bash
- 登录mysql命令行控制台
# mysql -U 用户名 -p
mysql -u root -p
# 输入创建容器时设置的密码
- 创建新的数据库(在执行还原命令前需要创建一个空的数据库)
# 以下为mysql命令行控制台状态
# 创建新的数据库(需要与原来数据库名相同)
mysql> create database demo_mysql;
# 查看数据库列表
mysql> show databases;
# 退出控制台状态
mysql> \q
- 执行数据库还原命令
# mysql -u用户名 -p 数据库名(需要与原数据库名相同) < 要导入的数据库数据(demo_mysql.sql)
mysql -uroot -p demo_mysql < /home/demo_mysql.sql
- 退出容器
exit 或者 Ctrl + D
保存日志
# 将容器的日志实时下载到指定路径: docker logs -f 容器名或者Id >> 路径/文件 &
docker logs -f demo-mysql >> /home/centos/data-volume/mysql-volume/log/demo-mysql.log &
#查看日志
docker logs -f demo-mysql
cat /home/centos/data-volume/mysql-volume/log/demo-mysql.log