自学内容网 自学内容网

Docker部署MySQL 5.7:持久化数据的实战技巧

在生产环境中使用Docker启动MySQL 5.7时,需要考虑数据持久化、配置文件管理、安全性等多个方面。以下是一个详细的步骤指南。

1. 准备工作

   (1)创建挂载目录 在宿主机上创建用于挂载的目录,以便持久化数据和配置文件。

sudo mkdir -p /usr/local/mysql/{data,conf,log}

    (2)创建配置文件/usr/local/mysql/conf目录下创建my.cnf配置文件,内容如下:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
bind-address = 0.0.0.0
max_connections = 500
max_allowed_packet = 1073741824
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

根据你的实际需求调整配置文件中的参数。

2. 拉取MySQL 5.7镜像

sudo docker pull mysql:5.7

3. 运行MySQL容器

使用以下命令运行MySQL容器,并挂载配置文件、数据目录和日志目录:

sudo docker run -d -p 3306:3306 --name mysql57 \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
mysql:5.7
  • -d:以守护进程模式运行容器。
  • -p 3306:3306:将容器的3306端口映射到宿主机的3306端口。
  • --name mysql57:为容器指定名称。
  • -v /usr/local/mysql/data:/var/lib/mysql:挂载数据目录。
  • -v /usr/local/mysql/conf:/etc/mysql/conf.d:挂载配置文件目录。
  • -v /usr/local/mysql/log:/var/log/mysql:挂载日志目录。
  • -e MYSQL_ROOT_PASSWORD=123456:设置root用户的密码。
  • --restart=always:设置容器在退出时自动重启。
  • mysql:5.7:指定使用的镜像版本。

4. 验证MySQL是否运行成功

        (1)查看容器状态

sudo docker ps

如果看到名为mysql57的容器处于运行状态,说明MySQL容器已成功启动。

        (2)连接MySQL数据库

    使用命令行工具

sudo docker exec -it mysql57 mysql -uroot -p

然后输入密码123456,如果成功进入MySQL命令行界面,说明MySQL服务已正常运行。

     (3)使用数据库管理工具  推荐使用开源的工具DBeaver,当然如果不缺Money可以使用强大的好用的navicat。

5. 数据持久化

通过挂载数据目录和配置文件,即使删除容器,数据和配置也不会丢失。你可以重新运行一个新的容器并挂载相同的数据卷,数据将保持一致。

6. 安全性

(1) 使用环境变量文件
为了避免在命令行历史中直接暴露密码,可以将密码存储在一个环境变量文件中。

创建环境变量文件envvars.env

MYSQL_ROOT_PASSWORD=123456

 运行MySQL容器

sudo docker run -d -p 3306:3306 --name mysql57 \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/log:/var/log/mysql \
--env-file /path/to/envvars.env \
--restart=always \
mysql:5.7

/path/to/envvars.env替换为环境变量文件的实际路径。

7. 配置防火墙(如果需要)

如果你使用的是云服务器,需要在服务器的安全组中开放3306端口,以允许外部访问MySQL服务。例如,如果是阿里云ECS服务器,可以在阿里云控制台的安全组设置中开放3306端口。

8. 常见操作

  • 停止容器
sudo docker stop mysql57
  • 启动容器
sudo docker start mysql57
  • 重启容器
sudo docker restart mysql57
  • 删除容器
sudo docker rm mysql57

如果容器正在运行,需要先停止容器再删除,或者使用sudo docker rm -f mysql57强制删除正在运行的容器。

通过以上步骤,你可以在生产环境中安全地启动并运行MySQL 5.7容器。

 


原文地址:https://blog.csdn.net/forgetmiss/article/details/145209000

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!