极简步骤如下
bash
1.拉取镜像
docker pull mysql:8.0.36
2.查看镜像
docker images
3.创建宿主机所需文件夹
mkdir -p /opt/spider-hub/data/mysql/{conf,data,logs,mysql-files}
4.文件夹赋权
chmod -R 755 /opt/spider-hub/data/mysql
5.新增修改宿主机mysql配置,这样部署mysql后就可以直接使用
vim /opt/spider-hub/data/mysql/conf/my.cnf
6.修改完vim后
7.运行下方的docker命令就完成了mysql8部署
8.运行docker ps -a查看
9.恭喜完成
my.cnf如下
bash
[client]
# 客户端通用字符集(适配所有客户端工具,8.0 兼容)
default-character-set=utf8mb4
[mysql]
# 客户端提示符(显示当前数据库,非常实用)
prompt = \\\u@\\\h [\\\d] >\
[mysqld]
# ========== 基础配置 ==========
server-id = 1
port = 3306
bind-address = 0.0.0.0
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
# ========== 字符集 & 时区 ==========
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci # 8.0 统一排序规则(5.7 改为 utf8mb4_unicode_ci)
skip-character-set-client-handshake
skip-name-resolve
init_connect='SET NAMES utf8mb4; SET collation_connection = utf8mb4_0900_ai_ci' # 与 server 统一
default-time_zone = '+8:00'
# ========== 连接配置 ==========
max_connections = 300 # 适配 2G 容器内存
max_user_connections = 200 # 新增:单用户连接限制
max_connect_errors = 1000
wait_timeout = 600
interactive_timeout = 600
back_log = 128
# ========== 性能优化(核心) ==========
innodb_buffer_pool_size = 1G # 2G 容器内存设 1G,按实际内存调整
innodb_buffer_pool_instances = 1
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2 # 非核心业务 2;核心业务改为 1
innodb_flush_method = O_DIRECT # 新增:跳过 OS 缓存,提升 IO
transaction_isolation = REPEATABLE-READ
lower_case_table_names = 1 # 仅首次启动生效!修改前需清空数据目录
innodb_strict_mode = 0
# ========== 日志配置 ==========
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 0
log_error = /var/log/mysql/error.log
general_log = 0
general_log_file = /var/log/mysql/general.log
# 新增 binlog 配置(生产必配)
log_bin = /var/lib/mysql/mysql-bin
binlog_format = ROW
binlog_expire_logs_seconds = 604800
max_binlog_size = 1G
# ========== 其他优化 ==========
tmp_table_size = 32M # 降低临时表大小,避免 OOM
max_heap_table_size = 32M # 与 tmp_table_size 一致
sort_buffer_size = 2M
join_buffer_size = 2M
open_files_limit = 65535
innodb_open_files = 65535
[mysqld_safe]
log-error = /var/log/mysql/error.log
pid-file = /var/run/mysqld/mysqld.pid
docker命令如下
bash
docker run -d \
--name mysql8 --restart=always --privileged=true \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123123@Asd \
-e TZ=Asia/Shanghai \
-e MYSQL_DEFAULT_AUTH=mysql_native_password \
-e LANG=C.UTF-8 \
-v /opt/spider-hub/data/mysql/conf:/etc/mysql/conf.d \
-v /opt/spider-hub/data/mysql/data:/var/lib/mysql \
-v /opt/spider-hub/data/mysql/logs:/var/log/mysql \
-v /opt/spider-hub/data/mysql/mysql-files:/var/lib/mysql-files \
mysql:8.0.36