# basic-service **Repository Path**: sxc654/basic-service ## Basic Information - **Project Name**: basic-service - **Description**: 基于docker环境 构建基础服务.包含mysql,redis数据持久化. - **Primary Language**: Docker - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-08-14 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基础服务镜像 ## 介绍 常用基础服务镜像(Docker Compose 一键部署) - MySQL 8.4 LTS(`mysql:8.4-oraclelinux9`),官方支持至 **2032-04** - Redis 7.4(`redis:7.4-alpine`,开源版 Extended),安全支持至 **2029-12-01** > 原有的 mongo / mysql8 双实例 / rabbitMQ 配置已移除,如需请参考历史版本。 ## 目录结构 ```text . ├── docker-compose.yml # 服务编排入口 ├── conf/ │ ├── mysql-8.4/config/ │ │ └── customer.cnf # MySQL 配置(挂载为 /etc/mysql/conf.d) │ └── redis/ │ └── redis.conf # Redis 配置(挂载为 /usr/local/etc/redis/redis.conf) ├── logs/ │ └── mysql-8.4/ # MySQL 日志(binlog / 慢查询日志) └── storage/ ├── mysql-8.4/ # MySQL 数据目录(首次启动自动初始化) └── redis/ # Redis 持久化数据(AOF/RDB) ``` ## 快速开始 ```bash docker compose up -d # 首次启动自动初始化 MySQL 数据目录与账号 docker compose ps ``` 默认账号(定义于 docker-compose.yml 环境变量): | 服务 | 账号 | 密码 | 端口 | |------|------|------|------| | MySQL | root | root | 3306 | | MySQL | web(仅 web 库) | web | 3306 | | Redis | 无密码(`requirepass` 已注释) | - | 6379 | ## 配置说明 ### MySQL(conf/mysql-8.4/config/customer.cnf) - **认证**:`mysql_native_password = ON` —— 8.4 起该插件默认关闭,保留开启以兼容现有/老客户端(MySQL 9.x 将彻底移除,届时需迁移到 caching_sha2_password) - **表名大小写**:`lower_case_table_names = 1`,须在首次初始化前确定,之后不可更改 - **binlog**:ROW 格式,保留 3 天(`binlog_expire_logs_seconds = 259200`),单文件 500M,写入 `logs/mysql-8.4/` - **慢查询日志**:超过 1s 记录,见 `logs/mysql-8.4/slow.log` - **内存**:buffer pool 1G(按宿主机 2G 内存取 50%~60%) - **刷盘策略**:`innodb_flush_log_at_trx_commit = 2` + `sync_binlog = 0`,性能优先,宕机最多丢 1 秒数据 - **资源限制**:最多 2 CPU / 2048M 内存(docker compose deploy.resources) - **密码**:默认 root/root、web/web 弱密码,端口 3306 对外开放,公网部署前必须修改 ### Redis(conf/redis/redis.conf) - `bind 0.0.0.0`:**本项目对外网开放**,当前未设置密码(`requirepass` 处于注释状态),公网环境必须在启用前设置密码或做防火墙限制 - `appendonly yes`:开启 AOF 持久化 - **资源限制**:1024M 内存 ## 常用命令 ```bash # 进入 MySQL docker exec -it mysql mysql -uroot -proot # 全量备份(升级/变更前必做) docker exec mysql mysqldump -uroot -proot --all-databases --routines --events > backup_all.sql # 手动清理 binlog(默认 3 天自动过期) docker exec mysql mysql -uroot -proot -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 DAY;" # 进入 Redis docker exec -it redis redis-cli # 查看 MySQL 慢查询 tail -f logs/mysql-8.4/slow.log ``` ## 注意事项 1. `lower_case_table_names`、认证插件等初始化相关配置须在**首次启动前**确定,数据目录初始化后不可变更; 2. MySQL 升级仅支持向前(不可降级),操作前先全量备份; 3. storage/logs 目录按 MySQL 大版本命名(`*-8.4`),跨大版本升级时启用新目录,避免新旧数据目录混用。