Docker部署MySQL镜像的完整指南
文章主要为大家详细介绍了使用Docker部署MySQL镜像的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下。
1.拉取镜像
# 拉取指定版本的MySQL镜像docker pull mysql:8.0
2.创建挂载目录
# 自己创建好如下三个文件夹 路径任意[root@iZuf6aigs7rxe6f6oifq7vZ mysql]# ll总用量 12drwxr-xr-x 2 root root 4096 7月 7 10:25 configdrwxr-xr-x 2 root root 4096 6月 26 16:43 datadrwxr-xr-x 2 root root 4096 6月 26 17:15 log
3.创建配置文件my.cnf
[client]# 客户端默认字符集default-character-set=utf8mb4[mysql]# 设置服务器默认字符集default-character-set=utf8mb4# 设置校验规则collation-server=utf8mb4_general_ci# 连接字符集init_connect ='SET NAMES utf8mb4'[mysqld]server-id= 1port = 3306default-storage-engine = InnoDB# 允许最大的连接数max_connections=1000# 解决8.0版本 GROUP BY问题sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'# 设置东八区时区default-time_zone ='+8:00'# 最大错误连接数(达到后阻止主机连接)max_connect_errors = 100# 连接超时时间(秒)connect_timeout = 60
更多可选配置
[client]# 客户端默认字符集default-character-set= utf8mb4[mysql]# MySQL命令行客户端默认字符集default-character-set= utf8mb4[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_general_ci# 服务器唯一ID(主从复制时需要)server-id= 1# 服务端口port = 3306# 数据目录datadir =/var/lib/mysql# socket文件位置socket =/var/run/mysqld/mysqld.sock# 错误日志位置log-error =/var/log/mysql/error.log# 进程ID文件位置pid-file=/var/run/mysqld/mysqld.pid# 默认存储引擎default-storage-engine = InnoDB# 默认认证插件(兼容旧版客户端)default_authentication_plugin = mysql_native_password# 跳过名称解析(提高连接速度)skip-name-resolve### 字符集设置 #### 服务器默认字符集character-set-server = utf8mb4# 服务器默认排序规则collation-server = utf8mb4_0900_ai_ci# 连接字符集init_connect ='SET NAMES utf8mb4'### 连接设置 #### 最大连接数(根据业务需求调整)max_connections = 1000# 最大错误连接数(达到后阻止主机连接)max_connect_errors = 100# 连接超时时间(秒)connect_timeout = 10# 交互式连接超时(秒)interactive_timeout = 28800# 非交互式连接超时(秒)wait_timeout = 28800### 内存设置 #### 每个连接的缓冲区大小sort_buffer_size = 4M# 每个连接的读缓冲区大小read_buffer_size = 2M# 每个连接的随机读缓冲区大小read_rnd_buffer_size = 8M# 连接线程缓冲区大小join_buffer_size = 8M# 线程堆栈大小thread_stack = 256K# 临时表内存大小tmp_table_size = 64M# 内存临时表最大值max_heap_table_size = 64M### InnoDB设置 #### InnoDB缓冲池大小(建议为物理内存的50-70%)innodb_buffer_pool_size = 2G# InnoDB缓冲池实例数(每个1GB左右)innodb_buffer_pool_instances = 2# InnoDB日志文件大小(建议256M-2G)innodb_log_file_size = 512M# InnoDB日志缓冲区大小innodb_log_buffer_size = 16M# InnoDB刷新日志方式(O_DIRECT避免双缓冲)innodb_flush_method = O_DIRECT# InnoDB事务提交方式(1最安全但最慢,2折中,0最快但不安全)innodb_flush_log_at_trx_commit = 1# InnoDB IO线程数innodb_read_io_threads = 4innodb_write_io_threads = 4# InnoDB死锁检测innodb_deadlock_detect = ON# InnoDB锁等待超时(秒)innodb_lock_wait_timeout = 50# InnoDB严格模式innodb_strict_mode = ON### 日志设置 #### 慢查询日志slow_query_log = 1# 慢查询日志文件位置slow_query_log_file =/var/log/mysql/mysql-slow.log# 慢查询阈值(秒)long_query_time = 2# 记录未使用索引的查询log_queries_not_using_indexes = 1# 二进制日志格式(ROW格式最安全)binlog_format = ROW# 二进制日志过期天数expire_logs_days = 7# 二进制日志大小max_binlog_size = 100M### 安全设置 #### 禁止LOAD DATA LOCAL INFILE(防止安全风险)local_infile = 0# 禁止符号链接symbolic-links = 0# 密码验证策略validate_password.policy = MEDIUM# 密码最小长度validate_password.length = 8# 密码混合大小写要求validate_password.mixed_case_count = 1# 密码数字要求validate_password.number_count = 1# 密码特殊字符要求validate_password.special_char_count = 1# 禁止旧密码认证secure_auth = ON### 其他优化 #### 表定义缓存table_open_cache = 2000# 表定义缓存实例数table_definition_cache = 1400# 打开文件限制open_files_limit = 65535# 最大允许数据包大小max_allowed_packet = 64M# 批量插入缓冲区大小bulk_insert_buffer_size = 16M# 线程缓存大小thread_cache_size = 100# 主机名缓存大小host_cache_size = 300
4.docker运行命令
# mysql 配置文件位置# /kiki/mysql/config# /kiki/mysql/data# /kiki/mysql/log# -d 后台运行# --name 容器名称# --privileged=true 赋予容器特权模式(访问主机所有设备)# --restart=always 容器退出时自动重启(除非明确停止)# -p 3306:3306 将主机的 3310 端口映射到容器的 3306 端口(MySQL 默认端口)# -v /innomind/mysql/data:/var/lib/mysql 挂载数据目录# -v /innomind/mysql/config:/etc/mysql/conf.d 挂载配置文件目录# -v /innomind/mysql/log:/logs 挂载日志目录# -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL root 用户密码为 "123456"# -e TZ=Asia/Shanghai:设置时区为亚洲/上海# --lower_case_table_names=1:设置表名存储为小写(1 表示不区分大小写)# mysql:8.0 指定要运行的镜像和版本docker run -d \--name mysql8 \--privileged=true\--restart=always \-p 3306:3306 \-v/kiki/mysql/data:/var/lib/mysql\-v/kiki/mysql/config:/etc/mysql/conf.d \-v/kiki/mysql/log:/logs\-e MYSQL_ROOT_PASSWORD=123456\-e TZ=Asia/Shanghaimysql:8.0 \--lower_case_table_names=1
运行即可!!!
到此这篇关于Docker部署MySQL镜像的完整指南的文章就介绍到这了,更多相关Docker部署MySQL镜像内容请继续浏览下面的相关文章!
您可能感兴趣的文章
声明:本文来自互联网或用户投稿,该文观点仅代表作者本人,不代表本站立场。文章及其配图仅供学习和交流之用,版权归原作者所有,如有内容侵权或者其他违规问题,请联系本站处理。




