Docker部署MySQL镜像的完整指南
作者:慕木兮人可
这篇文章主要为大家详细介绍了使用Docker部署MySQL镜像的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下
1.拉取镜像
# 拉取指定版本的MySQL镜像 docker pull mysql:8.0
2.创建挂载目录
# 自己创建好如下三个文件夹 路径任意 [root@iZuf6aigs7rxe6f6oifq7vZ mysql]# ll 总用量 12 drwxr-xr-x 2 root root 4096 7月 7 10:25 config drwxr-xr-x 2 root root 4096 6月 26 16:43 data drwxr-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 = 1 port = 3306 default-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=utf8mb4 collation-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 = 4 innodb_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/Shanghai mysql:8.0 \ --lower_case_table_names=1
运行即可!!!
到此这篇关于Docker部署MySQL镜像的完整指南的文章就介绍到这了,更多相关Docker部署MySQL镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!