Skip to content

Mysql

链接

docker下载Mysql官网

什么是 MySQL

MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS)。它以其稳定性、可靠性和高性能而著称,适用于从小型项目到大型企业级应用的各种场景。

主要特点

  • 数据存储与管理

    以表格的形式组织和存储数据,通过行和列的结构清晰地定义数据的属性和值。例如,在一个存储用户信息的表中,可能有 “用户 ID”“姓名”“年龄” 等列,每一行对应一个具体的用户记录。

  • 数据一致性与完整性

    支持多种约束条件,如主键约束(确保每一行数据的唯一性)、外键约束(建立不同表之间的关联关系)和非空约束等。例如,在订单管理系统中,订单表中的 “订单 ID” 可以设置为主键,确保每个订单都有唯一标识;而订单表中的 “用户 ID” 可以与用户表的 “用户 ID” 建立外键关联,保证数据的一致性和完整性。

  • 高效的查询处理

    具备强大的查询语言(SQL - Structured Query Language),用户可以通过编写复杂的 SQL 查询语句来快速检索、过滤、排序和聚合数据。例如,要查询某个时间段内销售额超过一定金额的订单信息,可以使用 SQL 语句从订单表中筛选出符合条件的数据。

  • 可扩展性

    可以方便地进行水平扩展(通过添加更多的服务器节点来分担负载)和垂直扩展(升级服务器的硬件资源,如增加内存、CPU 等)。在面对不断增长的数据量和并发访问量时,能够根据实际需求灵活地调整系统的性能。

下载Mysql镜像

sh
docker pull mysql

检查当前所有Docker下载的镜像

sh
docker images

创建Mysql容器

简单容器

简单的运行 MySQL 容器

sh
docker run -d \
  --name mysql-server \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -p 3306:3306 \
  -v /path/to/mysql/data:/data/mysqldata \
  --restart=unless-stopped \
  mysql:latest
  • -d:以守护进程(后台)模式运行容器。

  • --name mysql-server:给容器命名为 “mysql-server”。

  • -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL 的 root 用户密码为 "12345678a"(实际使用中请设置更复杂的密码)。

  • -p 3306:3306:映射容器的 3306 端口到主机的 3306 端口。

  • --restart=always:确保容器在 Docker 启动时自动启动。

  • mysql:指定使用的 MySQL 镜像(Docker 会从官方仓库拉取最新的 MySQL 镜像,如果本地没有的话)。

补充

    1. --restart=always

    含义:无论容器是正常退出还是异常退出,Docker 都会自动重启该容器。

    行为

      如果容器因为内部应用崩溃、被用户手动停止(如使用 docker stop 命令)或 Docker 守护进程重启等原因退出,Docker 都会自动重启容器。
      容器会一直运行,直到手动将其删除(docker rm)。
    

    适用场景:适用于需要持续运行的服务,例如数据库服务、Web 服务器等,确保服务始终可用。

    1. --restart=unless-stopped

    含义:容器会在以下情况下自动重启:

      容器异常退出(例如应用崩溃)。
    
      Docker 守护进程重启。
    

    行为

      如果容器被手动停止(如使用 docker stop 命令),Docker 不会自动重启它。
    
      如果容器被手动删除(docker rm),则不会重启。
    
      如果 Docker 守护进程重启(例如系统重启),容器会自动启动。
    

    适用场景:适用于需要在系统重启后自动恢复运行,但又允许用户手动停止容器的场景。

    1. 总结区别

    --restart=always:无论容器是正常退出还是异常退出,都会自动重启。

    --restart=unless-stopped:只有在容器异常退出或 Docker 守护进程重启时才会自动重启,手动停止后不会重启。

企业容器

企业环境中运行 MySQL 容器

sh
docker run -d \
--name mysql \
--restart=always \
-p 3306:3306 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=your_secure_password \
mysql:latest

指令解释

  • docker run -d:以守护进程(后台)模式运行容器。

  • --name mysql:为容器指定一个容易识别的名称为 “mysql”。

  • --restart=always:设置容器在 Docker 守护进程启动时自动启动,即使因为某些原因容器停止了,也会自动重新启动,这确保了开机自启动。

  • -p 3306:3306:将容器内的 3306 端口(MySQL 默认端口)映射到宿主机的 3306 端口,使得外部可以访问容器中的 MySQL 服务。

  • -v /data/mysql/data:/var/lib/mysql:将宿主机的/data/mysql/data目录挂载到容器内 MySQL 数据存储目录/var/lib/mysql,确保数据持久化存储,防止容器删除后数据丢失。

  • -v /data/mysql/conf:/etc/mysql/conf.d:挂载配置文件目录,方便在宿主机上进行 MySQL 配置文件的管理与修改。

  • -v /data/mysql/logs:/var/log/mysql:挂载日志目录,便于在宿主机上查看和管理 MySQL 运行过程中产生的日志。

  • -e MYSQL_ROOT_PASSWORD=your_secure_password:设置 MySQL 的 root 用户密码,确保数据库的安全性。这里需要将your_secure_password替换为实际的强密码。

  • mysql:latest:指定要运行的 MySQL 镜像,这里使用最新版本的 MySQL 镜像。