本文已参与「新人创作礼」活动,一起开启掘金创作之路。
话说不会运维的开发不是一个好开发,给你一台测试服务器总不能连个数据库都不会装吧! 鉴于容器化技术的发展,本文主要记录mysql基于docker的安装及使用事项。
1.本文技术支持点
- 容器化docker,不知道是什么以及怎么安装的,请先了解部署神器 -- docker,一文带你从开发变运维
- 部署配置docker-compose,不懂的请先了解docker-compose –- 单机多容器神器
2.容器中安装mysql
2.1 同一网段
如果当前mysql和其他服务在同一台机(用容器名连接),需要先创建一个网段,如果单独部署可以忽略
#创建网络my-net
docker network create my-net
2.2 配置my.cnf
不配置可能会出现表名区分大小写。批量插入sql大小受限制,也可以忽略
[mysqld]
#一次执行大小
max_allowed_packet=150M
# 表名不区分大小写
lower_case_table_names=1
#支持不规范的group by
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysqld_safe]
#日志目录
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2.3 docker run命令启动
因为mysql在docker镜像仓库有官方镜像,可以直接用,想使用最新版本号直接用mysql,我这里用的5.7
docker run -d --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/local/mysql/data:/var/lib/mysql --net my-net mysql:5.7
[root@m mysql]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8f2833d34dc mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql01
不懂的不要急,继续往下看yaml文件,每一项都有说明
2.4 docker-compose启动
- 准备yaml文件,名称必须是docker-compose.yaml
version: '3.7'
services:
mysql01:
#镜像名称 不带版本取最新
image: mysql:5.7
#容器名称
container_name: mysql01
#异常停掉是否重启 按需
restart: always
#当前主机的3306映射容器内的3306
ports:
- "3306:3306"
#初始的环节变量 MYSQL_ROOT_PASSWORD/root账户密码 必须
environment:
- MYSQL_ROOT_PASSWORD=123456
- TZ=Asia/Shanghai
#宿目录挂载到容器内
volumes:
- /root/local/mysql/data:/var/lib/mysql
- /root/local/mysql/my.cnf:/etc/mysql/my.cnf
#网段 同一网段可使用容器名进行连接
networks:
- my-net
networks:
my-net:
external: true
- 启动并查看容器
[root@m mysql]# docker-compose up -d
Starting mysql01 ... done
[root@m mysql]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------
mysql01 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
2.5 连接
账号:root,密码:123456,可以使用工具连接,也可以使用docker exec -it mysql01 /bin/sh进入容器内部执行mysql -u root然后输入密码进行连接,这里就不演示了
3.注意事项
- 端口映射时,保证宿主机端口不被占用
- 需要挂载的文件一定要保证存在才挂载
- 如果进行降版本的,data数据目录可能会存在解析不到,挂载过去启动会报错
以上就是本章的全部内容了。
上一篇:mybatis第十一话 - mybaits getConnection连接数据库的源码分析 下一篇:mysql第二话 - mysql架构和执行流程
盛年不重来,一日难再晨;及时当勉励,岁月不待人