【5.0】Docker部署MySQL

发布时间 2023-08-29 15:57:41作者: Chimengmeng

【一】引入

  • 根据您提供的内容,我们可以看出在使用Docker运行MySQL容器时,如果没有进行目录映射,配置文件和表数据都将保存在容器内部。
  • 当删除容器后,这些数据也会丢失。
  • 为了确保数据的持久化并避免数据丢失的情况,您可以进行目录映射来将数据保存在宿主机上。

【二】操作步骤

【1】做目录映射:

  • 在宿主机上创建用于存储MySQL数据、配置文件的目录。
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/

【2】配置文件my.cnf:

  • 在创建的目录/home/mysql中创建配置文件my.cnf,指定MySQL的配置参数。
  • 以下是一个示例:
vim /home/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

【3】运行MySQL容器,并进行目录映射:

  • 使用-v参数指定目录映射,将宿主机上的目录映射到MySQL容器内部对应的路径。
  • 以下是一个示例:
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql mysql:5.7 -e MYSQL_ROOT_PASSWORD=123456

【4】创建库、表和插入数据:

  • 运行MySQL容器后,可以连接到MySQL并执行相应的SQL语句来创建数据库、表,并插入数据。

【5】停止和删除容器:

  • 如果需要停止或删除MySQL容器,可以使用以下命令:
docker stop mysql
docker rm mysql
  • 注意,这不会影响已经进行目录映射的数据,数据仍然保存在宿主机的对应目录中。

【6】重新运行容器:

  • 当需要重新运行MySQL容器时,只需再次运行带有目录映射参数的docker run命令:
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql mysql:5.7 -e MYSQL_ROOT_PASSWORD=123456
  • 此时,之前的数据将会重新加载到容器内部。