Initial commit with project setup and basic structure established.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# MySQL 8.4 日志管理指南
|
||||
|
||||
> **AI 响应规范 (MySQL 执行策略)**:
|
||||
> 1. **强制参数**: 所有 `docker exec` 命令必须包含 `-h127.0.0.1` 参数。
|
||||
> 2. **双重输出**: 涉及 SQL 操作时,必须同时输出 `Docker 执行命令` 和 `纯 SQL 脚本`。
|
||||
|
||||
## 1. 日志轮转配置
|
||||
防止日志文件过大,两台主机配置一致。创建 `/etc/logrotate.d/mysql_error_log`:
|
||||
|
||||
```plain
|
||||
/data/mysql/logs/mysql_error.log /data/mysql/logs/mysql_slow.log {
|
||||
daily # 每天轮转
|
||||
missingok # 文件不存在不报错
|
||||
rotate 30 # 保留30天日志
|
||||
compress # 压缩旧日志
|
||||
delaycompress # 延迟压缩(避免写入异常)
|
||||
notifempty # 空文件不轮转
|
||||
create 644 # 新日志权限
|
||||
postrotate
|
||||
# 刷新MySQL日志文件
|
||||
docker exec mysql mysql -uroot -pafe123456 -h127.0.0.1 -e "FLUSH ERROR LOGS; FLUSH SLOW LOGS;" || true
|
||||
endscript
|
||||
}
|
||||
```
|
||||
|
||||
### 1.1 手动测试日志轮转
|
||||
```bash
|
||||
logrotate -f /etc/logrotate.d/mysql_error_log
|
||||
```
|
||||
|
||||
## 2. 加密登录配置(.mylogin.cnf)
|
||||
|
||||
### 2.1 配置目的
|
||||
为避免执行日志刷新操作时明文暴露数据库账号密码,通过 `mysql_config_editor` 生成加密的 `.mylogin.cnf` 文件,实现安全、免密的日志操作。
|
||||
|
||||
### 2.2 操作步骤
|
||||
|
||||
#### 步骤 1:在宿主机器生成加密登录配置
|
||||
直接在宿主机器执行以下命令(两台双主节点均需执行):
|
||||
|
||||
```bash
|
||||
mysql_config_editor set \
|
||||
--login-path=mysql_log_flush \ # 自定义标识
|
||||
--user=log_flush \ # 提前创建的日志操作专用低权限账号
|
||||
--password \ # 交互式输入密码
|
||||
--host=127.0.0.1 \ # 本地连接地址
|
||||
--port=3306 # MySQL 服务端口
|
||||
```
|
||||
|
||||
#### 步骤 2:将配置文件同步至 MySQL 容器
|
||||
有两种实现方式:
|
||||
|
||||
**方式 1:复制配置文件到容器内**
|
||||
```bash
|
||||
sudo docker cp ~/.mylogin.cnf mysql:/root/.mylogin.cnf
|
||||
```
|
||||
|
||||
**方式 2:执行命令时临时挂载配置文件**
|
||||
```bash
|
||||
docker exec -v ~/.mylogin.cnf:/root/.mylogin.cnf mysql \
|
||||
mysql --login-path=mysql_log_flush -e "FLUSH ERROR LOGS; FLUSH SLOW LOGS;"
|
||||
```
|
||||
|
||||
#### 步骤 3:使用加密配置执行日志操作
|
||||
```bash
|
||||
docker exec mysql mysql --login-path=mysql_log_flush -e "FLUSH ERROR LOGS; FLUSH SLOW LOGS;"
|
||||
```
|
||||
|
||||
### 2.3 安全与权限注意事项
|
||||
1. **专用账号权限最小化**:仅授予 `RELOAD` 权限。
|
||||
|
||||
**A. Docker 执行模式:**
|
||||
```bash
|
||||
docker exec -it mysql mysql -uroot -pafe123456 -h127.0.0.1 -e "
|
||||
CREATE USER 'log_flush'@'127.0.0.1' IDENTIFIED BY 'afe123456';
|
||||
GRANT RELOAD ON *.* TO 'log_flush'@'127.0.0.1';
|
||||
FLUSH PRIVILEGES;
|
||||
"
|
||||
```
|
||||
|
||||
**B. 纯 SQL 模式:**
|
||||
```sql
|
||||
CREATE USER 'log_flush'@'127.0.0.1' IDENTIFIED BY 'afe123456';
|
||||
GRANT RELOAD ON *.* TO 'log_flush'@'127.0.0.1';
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
2. **配置文件权限管控**:`.mylogin.cnf` 权限应为 600。
|
||||
3. **密码更新处理**:若密码修改,需重新生成配置。
|
||||
Reference in New Issue
Block a user