docker|docker部署mysql并挂载数据卷

docker部署mysql并挂载数据卷

  1. 备份mysql源文件
    1. windows下备份数据库
      # 方法一:进入到mysql安装路径下的bin文件,执行备份命令 # pg_dump -h localhost -p 数据库端口 -U 数据库用户名 -d 要备份的数据库名 > 备份后文件的路径\备份文件名 mysqldump -hlocalhost -uroot -p demo_mysql > D:\demo_mysql.sql # 方法二:通过Navicat提取sql备份文件

    2. ubuntu下备份数据库
      # mysqldump -hIP -u用户名 -p 要备份的数据库名 > 备份后文件的路径\备份文件名 mysqldump -hlocalhost -uroot -p demo_mysql > /home/demo_mysql.sql

  2. 创建数据卷
    # 创建总数据卷文件夹 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;

  3. 下载镜像并创建运行容器
    # 下载指定镜像版本或者下载最新版本(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=密码
  4. 查看容器信息
    # 查看容器是否运行 docker ps # 查看容器列表(得到容器名或者容器ID) docker ps -a # 查看容器日志 docker logs 容器名或者容器ID # 获取容器的元数据 docker inspect 容器名或者容器ID

  5. 还原数据库
    1. 通过工具或者命令把最开始备份的文件上传到/home/centos/data-volume/mysql-volume/databasefile目录下
    2. 复制备份文件至容器中
      # docker cp 宿主机文件路径 容器名或者容器ID:容器文件路径 docker cp /home/centos/data-volume/mysql-volume/databasefile/demo_mysql.sql demo-mysql:/home

    3. 进入容器
      # exec命令可以进入容器并且在退出时不会打断容器运行 docker exec -it demo-mysql /bin/bash

    4. 登录mysql命令行控制台
      # mysql -U 用户名 -p mysql -u root -p # 输入创建容器时设置的密码

    5. 创建新的数据库(在执行还原命令前需要创建一个空的数据库)
      # 以下为mysql命令行控制台状态 # 创建新的数据库(需要与原来数据库名相同) mysql> create database demo_mysql; # 查看数据库列表 mysql> show databases; # 退出控制台状态 mysql> \q

    6. 执行数据库还原命令
      # mysql -u用户名 -p 数据库名(需要与原数据库名相同) < 要导入的数据库数据(demo_mysql.sql) mysql -uroot -p demo_mysql < /home/demo_mysql.sql

    7. 【docker|docker部署mysql并挂载数据卷】退出容器
      exit 或者 Ctrl + D

  6. 保存日志
    # 将容器的日志实时下载到指定路径: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

    推荐阅读