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. 退出容器

      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
    
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐