一,Docker一键部署MySQL
my.cnf 配置文件
[mysqld]
# ==============================
# 基础配置
# ==============================
user = mysql
port = 3306
# MySQL Socket 文件
socket = /var/run/mysqld/mysqld.sock
# 允许远程连接(生产环境建议限制内网)
bind-address = 0.0.0.0
# 表名大小写不敏感(Linux 默认区分大小写)
# 必须在数据库初始化前设置
lower_case_table_names = 1
# 默认字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 默认时区
default_time_zone = '+08:00'
# ==============================
# 连接管理
# ==============================
# 最大连接数
# 默认151,生产环境通常不够
max_connections = 500
# 每个连接缓存线程
thread_cache_size = 100
# 连接空闲超时时间(秒)
wait_timeout = 28800
interactive_timeout = 28800
# 最大连接错误次数
max_connect_errors = 1000
# ==============================
# 表缓存
# ==============================
# 表缓存数量
table_open_cache = 4096
# 表定义缓存
table_definition_cache = 4096
# ==============================
# 临时表配置
# ==============================
# 内存临时表最大大小
tmp_table_size = 256M
# 内存临时表最大限制
max_heap_table_size = 256M
# ==============================
# 查询缓存(MySQL8已移除)
# ==============================
# query_cache_type = 0
# query_cache_size = 0
# ==============================
# 日志系统
# ==============================
# 错误日志
log_error = /var/log/mysql/error/mysql_error.log
# 慢查询日志
slow_query_log = 1
# 慢查询日志文件
slow_query_log_file = /var/log/mysql/slow/slow_query.log
# 慢查询时间阈值
long_query_time = 1
# 记录未使用索引的查询
log_queries_not_using_indexes = 1
# ==============================
# InnoDB存储引擎配置
# ==============================
# InnoDB buffer pool大小
# 建议设置为服务器内存的60%-70%
innodb_buffer_pool_size = 2G
# buffer pool实例数量
innodb_buffer_pool_instances = 4
# redo log大小
innodb_log_file_size = 1G
# redo log组数
innodb_log_files_in_group = 2
# redo log刷新策略
# 1 = 每次事务提交刷盘(最安全)
# 2 = 每秒刷盘(性能更高)
innodb_flush_log_at_trx_commit = 1
# IO线程
innodb_read_io_threads = 4
innodb_write_io_threads = 4
# IO能力(SSD建议2000以上)
innodb_io_capacity = 2000
# 自适应hash索引
innodb_adaptive_hash_index = ON
# 行锁等待时间
innodb_lock_wait_timeout = 50
# 文件独立表空间
innodb_file_per_table = 1
# ==============================
# MyISAM配置(兼容旧表)
# ==============================
# MyISAM索引缓存
key_buffer_size = 32M
# ==============================
# 排序与连接缓冲
# ==============================
sort_buffer_size = 4M
join_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
# ==============================
# SQL模式
# ==============================
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# ==============================
# 安全设置
# ==============================
# 禁止DNS解析,提高连接速度
skip-name-resolve
# 禁止符号链接
symbolic-links=0
# ==============================
#二进制日志
# ==============================
log_bin=/var/log/mysql/binlog/mysql-bin
server_id=1
# binlog 格式(推荐 ROW,最安全)
binlog_format=ROW
# binlog 过期时间(7天)
binlog_expire_logs_seconds=604800
# 单个 binlog 文件大小
max_binlog_size=100M
# 每次事务提交都同步到磁盘(最安全)
sync_binlog=1
# 要记录的数据库(默认所有)
# binlog_do_db=db1,db2
# 要忽略的数据库
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
binlog_ignore_db=sys
# binlog 格式检查
binlog_rows_query_log_events=ON
命令内容
# 强制重建所有目录和权限
sudo mkdir -p /opt/mysql/logs/{error,binlog,slow_select,select}
sudo mkdir -p /opt/mysql/conf
sudo mkdir -p /opt/mysql/data
sudo chown -R 999:999 /opt/mysql
sudo chmod -R 755 /opt/mysql/logs
sudo chmod 755 /opt/mysql/data
sudo chmod 644 /opt/mysql/conf/my.cnf
# 启动docker
docker run -d \
--name mysql \
--restart unless-stopped \
-p 3306:3306 \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-v /opt/mysql/logs:/var/log/mysql \
-v /opt/mysql/logs/binlog:/var/log/mysql/binlog \
-e MYSQL_ROOT_PASSWORD=yz2763000 \
-e TZ=Asia/Shanghai \
mysql:8.0.36
# 建立远程访问账户
docker exec -it mysql mysql -uroot -pyz2763000 -e "
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yz2763000';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SELECT host, user FROM mysql.user WHERE user='root';
"
二,Docker一键部署Redis配置
redis.conf 配置
################################## 基础配置 ###################################
# 绑定IP地址(0.0.0.0表示允许所有网络接口访问)
bind 0.0.0.0
# 关闭保护模式(允许远程连接)
protected-mode no
# 监听端口
port 6379
# 访问密码(建议修改为复杂密码)
requirepass yz2763000
# 非守护进程模式运行(Docker容器中必须设为no)
daemonize no
# PID文件位置
pidfile /var/run/redis.pid
################################# 日志配置 ####################################
# 日志级别(debug/verbose/notice/warning)
loglevel notice
# 日志文件路径(Docker中请确保目录已挂载)
logfile "/var/log/redis/redis.log"
################################# 数据库配置 ##################################
# 数据库数量
databases 16
# 数据存储目录(Docker中请确保目录已挂载)
dir /data
############################### 持久化配置(RDB) ###############################
# RDB快照文件名
dbfilename dump.rdb
# 自动保存条件(格式:save <秒> <键变更数>)
# 15分钟内有1个键变更
save 900 1
# 5分钟内有10个键变更
save 300 10
# 1分钟内有10000个键变更
save 60 10000
# RDB相关设置
# 保存出错时不停止写入
stop-writes-on-bgsave-error no
# 启用压缩
rdbcompression yes
# 启用校验
rdbchecksum yes
############################### 持久化配置(AOF) ###############################
# 启用AOF持久化
appendonly yes
# AOF文件名
appendfilename "appendonly.aof"
# AOF同步策略(everysec平衡性能与安全)
appendfsync everysec
# AOF重写期间是否同步新数据
no-appendfsync-on-rewrite no
# AOF自动重写配置
# 增长100%时触发重写
auto-aof-rewrite-percentage 100
# 最小文件大小限制
auto-aof-rewrite-min-size 64mb
############################### 内存管理 #####################################
# 最大内存限制(0表示不限制)
maxmemory 0
# 内存淘汰策略
maxmemory-policy volatile-lru
# LRU算法采样数
maxmemory-samples 5
############################### 其他配置 #####################################
# 慢查询日志设置(单位微秒)
slowlog-log-slower-than 10000
slowlog-max-len 128
# 数据结构优化参数
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# 启用主动rehash
activerehashing yes
# 客户端输出缓冲限制
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
命令内容
# 创建日志目录并设置正确权限
sudo mkdir -p /opt/redis/logs
sudo mkdir -p /opt/redis/data
sudo mkdir -p /opt/redis/conf
# 设置权限 - Redis容器内部使用uid 999(redis用户)
sudo chown -R 999:999 /opt/redis/logs
sudo chown -R 999:999 /opt/redis/data
sudo chown -R 999:999 /opt/redis/conf
# 运行新的容器
docker run -d \
--name redis-server \
--restart unless-stopped \
-p 6379:6379 \
-v /opt/redis/data:/data \
-v /opt/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro \
-v /opt/redis/logs:/var/log/redis \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf