init
This commit is contained in:
commit
1ab9f9c458
1319 files changed
+137505
No files matched your search
@@ -0,0 +1,220 @@
|
||||
# 中间件配置文档
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目使用的各种中间件配置文档和最佳实践。
|
||||
|
||||
## 1. 数据库配置
|
||||
|
||||
### MySQL配置
|
||||
- **mysql-config.md**:MySQL数据库配置和优化
|
||||
- **mysql-cluster.md**:MySQL集群部署方案
|
||||
- **mysql-backup.md**:MySQL备份和恢复策略
|
||||
- **mysql-monitor.md**:MySQL监控和性能调优
|
||||
|
||||
### 多数据库支持
|
||||
- **oracle-config.md**:Oracle数据库配置
|
||||
- **postgresql-config.md**:PostgreSQL数据库配置
|
||||
- **sqlserver-config.md**:SQL Server数据库配置
|
||||
|
||||
### 配置示例:
|
||||
```yaml
|
||||
# MySQL开发环境配置示例
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
datasource:
|
||||
master:
|
||||
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8
|
||||
username: root
|
||||
password: password
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
```
|
||||
|
||||
## 2. Redis配置
|
||||
|
||||
### Redis部署
|
||||
- **redis-standalone.md**:Redis单机部署配置
|
||||
- **redis-cluster.md**:Redis集群部署配置
|
||||
- **redis-sentinel.md**:Redis哨兵模式配置
|
||||
- **redis-optimize.md**:Redis性能优化
|
||||
|
||||
### Redisson配置
|
||||
- **redisson-config.md**:Redisson客户端配置
|
||||
- **redisson-lock.md**:分布式锁配置
|
||||
- **redisson-cache.md**:缓存配置
|
||||
|
||||
### 配置示例:
|
||||
```yaml
|
||||
# Redis配置示例
|
||||
spring:
|
||||
data:
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
database: 0
|
||||
password: password
|
||||
timeout: 10s
|
||||
```
|
||||
|
||||
## 3. 消息中间件配置
|
||||
|
||||
### RabbitMQ配置
|
||||
- **rabbitmq-install.md**:RabbitMQ安装和配置
|
||||
- **rabbitmq-cluster.md**:RabbitMQ集群配置
|
||||
- **rabbitmq-monitor.md**:RabbitMQ监控配置
|
||||
|
||||
### RocketMQ配置
|
||||
- **rocketmq-install.md**:RocketMQ安装和配置
|
||||
- **rocketmq-cluster.md**:RocketMQ集群配置
|
||||
|
||||
### Kafka配置
|
||||
- **kafka-install.md**:Kafka安装和配置
|
||||
- **kafka-cluster.md**:Kafka集群配置
|
||||
|
||||
## 4. 监控组件配置
|
||||
|
||||
### Spring Boot Admin
|
||||
- **spring-boot-admin.md**:服务监控配置
|
||||
- **admin-security.md**:监控安全配置
|
||||
|
||||
### Prometheus + Grafana
|
||||
- **prometheus-config.md**:Prometheus监控配置
|
||||
- **grafana-dashboard.md**:Grafana仪表板配置
|
||||
|
||||
### ELK Stack
|
||||
- **elasticsearch-config.md**:Elasticsearch配置
|
||||
- **logstash-config.md**:Logstash日志收集配置
|
||||
- **kibana-config.md**:Kibana日志分析配置
|
||||
|
||||
## 5. 反向代理和负载均衡
|
||||
|
||||
### Nginx配置
|
||||
- **nginx-install.md**:Nginx安装和基础配置
|
||||
- **nginx-load-balance.md**:负载均衡配置
|
||||
- **nginx-ssl.md**:SSL证书配置
|
||||
- **nginx-cache.md**:静态资源缓存配置
|
||||
|
||||
### 配置示例:
|
||||
```nginx
|
||||
# Nginx负载均衡配置示例
|
||||
upstream backend {
|
||||
server 127.0.0.1:8080 weight=1;
|
||||
server 127.0.0.1:8081 weight=1;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://backend;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 6. 存储服务配置
|
||||
|
||||
### MinIO配置
|
||||
- **minio-install.md**:MinIO安装和配置
|
||||
- **minio-cluster.md**:MinIO集群配置
|
||||
- **minio-backup.md**:MinIO备份策略
|
||||
|
||||
### 其他存储
|
||||
- **aliyun-oss.md**:阿里云OSS配置
|
||||
- **qiniu-cloud.md**:七牛云存储配置
|
||||
- **tencent-cos.md**:腾讯云COS配置
|
||||
|
||||
## 7. 短信和邮件服务
|
||||
|
||||
### 短信服务配置
|
||||
- **aliyun-sms.md**:阿里云短信服务配置
|
||||
- **tencent-sms.md**:腾讯云短信服务配置
|
||||
- **sms4j-config.md**:短信融合包配置
|
||||
|
||||
### 邮件服务配置
|
||||
- **email-config.md**:邮件服务配置
|
||||
- **email-template.md**:邮件模板配置
|
||||
|
||||
## 8. 安全组件配置
|
||||
|
||||
### Sa-Token配置
|
||||
- **satoken-config.md**:Sa-Token权限配置
|
||||
- **satoken-jwt.md**:JWT配置
|
||||
- **satoken-sso.md**:单点登录配置
|
||||
|
||||
### 第三方认证
|
||||
- **oauth2-config.md**:OAuth2认证配置
|
||||
- **ldap-config.md**:LDAP认证配置
|
||||
|
||||
## 环境配置
|
||||
|
||||
### 开发环境
|
||||
- **dev-environment.md**:开发环境搭建指南
|
||||
- **docker-compose-dev.yml**:开发环境Docker配置
|
||||
|
||||
### 测试环境
|
||||
- **test-environment.md**:测试环境配置
|
||||
- **docker-compose-test.yml**:测试环境Docker配置
|
||||
|
||||
### 生产环境
|
||||
- **prod-environment.md**:生产环境配置
|
||||
- **docker-compose-prod.yml**:生产环境Docker配置
|
||||
- **k8s-deployment.md**:Kubernetes部署配置
|
||||
|
||||
## 配置管理规范
|
||||
|
||||
### 配置原则
|
||||
1. **环境隔离**:不同环境使用不同配置
|
||||
2. **安全优先**:敏感信息加密存储
|
||||
3. **版本控制**:配置变更进行版本管理
|
||||
4. **监控告警**:关键配置项设置监控
|
||||
|
||||
### 配置规范
|
||||
- 使用配置中心统一管理
|
||||
- 敏感信息不直接写在配置文件中
|
||||
- 配置变更需要审核流程
|
||||
- 定期备份配置文件
|
||||
|
||||
### 密码管理
|
||||
- 数据库密码定期更换
|
||||
- Redis密码必须设置
|
||||
- 中间件默认密码必须修改
|
||||
- 生产环境密码复杂度要求
|
||||
|
||||
## 性能调优
|
||||
|
||||
### JVM调优
|
||||
- **jvm-config.md**:JVM参数配置和调优
|
||||
- **gc-config.md**:垃圾回收器配置
|
||||
|
||||
### 数据库调优
|
||||
- 连接池参数优化
|
||||
- SQL语句性能优化
|
||||
- 索引设计优化
|
||||
|
||||
### 缓存调优
|
||||
- Redis内存使用优化
|
||||
- 缓存过期策略优化
|
||||
- 缓存穿透防护
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 常见问题
|
||||
- **common-issues.md**:常见问题和解决方案
|
||||
- **troubleshooting.md**:故障排查手册
|
||||
- **performance-issues.md**:性能问题排查
|
||||
|
||||
### 日志分析
|
||||
- **log-analysis.md**:日志分析方法
|
||||
- **error-handling.md**:错误处理规范
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有中间件密码必须设置且定期更换
|
||||
2. 生产环境配置需要经过安全审核
|
||||
3. 配置变更需要备份和回滚方案
|
||||
4. 关键中间件需要设置监控和告警
|
||||
@@ -0,0 +1,557 @@
|
||||
# MySQL 数据库配置指南
|
||||
|
||||
## 概述
|
||||
|
||||
本文档详细说明了 RuoYi-Vue-Plus 项目中 MySQL 数据库的安装、配置和优化方案。
|
||||
|
||||
## 1. MySQL 安装
|
||||
|
||||
### 1.1 Docker 安装(推荐)
|
||||
|
||||
```bash
|
||||
# 拉取MySQL 8.0镜像
|
||||
docker pull mysql:8.0
|
||||
|
||||
# 创建MySQL容器
|
||||
docker run -d \
|
||||
--name mysql-ruoyi \
|
||||
-p 3306:3306 \
|
||||
-e MYSQL_ROOT_PASSWORD=your_password \
|
||||
-e MYSQL_DATABASE=ruoyi \
|
||||
-e MYSQL_USER=ruoyi \
|
||||
-e MYSQL_PASSWORD=ruoyi_password \
|
||||
-v mysql_data:/var/lib/mysql \
|
||||
mysql:8.0 \
|
||||
--character-set-server=utf8mb4 \
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
```
|
||||
|
||||
### 1.2 传统安装
|
||||
|
||||
#### CentOS/RHEL 安装
|
||||
|
||||
```bash
|
||||
# 下载MySQL官方Yum Repository
|
||||
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
|
||||
|
||||
# 安装MySQL Yum Repository
|
||||
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
|
||||
|
||||
# 安装MySQL
|
||||
sudo yum install mysql-community-server
|
||||
|
||||
# 启动MySQL服务
|
||||
sudo systemctl start mysqld
|
||||
sudo systemctl enable mysqld
|
||||
```
|
||||
|
||||
#### Ubuntu/Debian 安装
|
||||
|
||||
```bash
|
||||
# 更新包索引
|
||||
sudo apt update
|
||||
|
||||
# 安装MySQL服务器
|
||||
sudo apt install mysql-server
|
||||
|
||||
# 启动MySQL服务
|
||||
sudo systemctl start mysql
|
||||
sudo systemctl enable mysql
|
||||
```
|
||||
|
||||
## 2. 数据库配置
|
||||
|
||||
### 2.1 基础配置
|
||||
|
||||
#### 修改 root 密码
|
||||
|
||||
```sql
|
||||
-- 登录MySQL
|
||||
mysql -u root -p
|
||||
|
||||
-- 修改root密码
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
|
||||
|
||||
-- 刷新权限
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
#### 创建业务数据库和用户
|
||||
|
||||
```sql
|
||||
-- 创建数据库
|
||||
CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 创建用户
|
||||
CREATE USER 'ruoyi'@'%' IDENTIFIED BY 'ruoyi_password';
|
||||
|
||||
-- 授权
|
||||
GRANT ALL PRIVILEGES ON ruoyi.* TO 'ruoyi'@'%';
|
||||
|
||||
-- 刷新权限
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
### 2.2 配置文件 (my.cnf)
|
||||
|
||||
#### 基础配置
|
||||
|
||||
```ini
|
||||
[mysqld]
|
||||
# 基本设置
|
||||
port = 3306
|
||||
socket = /tmp/mysql.sock
|
||||
basedir = /usr/local/mysql
|
||||
datadir = /usr/local/mysql/data
|
||||
pid-file = /usr/local/mysql/data/mysql.pid
|
||||
user = mysql
|
||||
bind-address = 0.0.0.0
|
||||
|
||||
# 字符集设置
|
||||
character-set-server = utf8mb4
|
||||
collation-server = utf8mb4_unicode_ci
|
||||
init_connect = 'SET NAMES utf8mb4'
|
||||
|
||||
# SQL模式设置
|
||||
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
|
||||
# 时区设置
|
||||
default-time-zone = '+8:00'
|
||||
|
||||
# 表名大小写敏感
|
||||
lower_case_table_names = 1
|
||||
|
||||
# 日志设置
|
||||
log-error = /var/log/mysql/error.log
|
||||
slow_query_log = 1
|
||||
slow_query_log_file = /var/log/mysql/slow.log
|
||||
long_query_time = 2
|
||||
log_queries_not_using_indexes = 1
|
||||
|
||||
# 连接设置
|
||||
max_connections = 1000
|
||||
max_connect_errors = 100000
|
||||
max_allowed_packet = 64M
|
||||
interactive_timeout = 600
|
||||
wait_timeout = 600
|
||||
|
||||
# 缓冲区设置
|
||||
innodb_buffer_pool_size = 2G
|
||||
innodb_buffer_pool_instances = 8
|
||||
innodb_log_file_size = 256M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_flush_log_at_trx_commit = 1
|
||||
innodb_flush_method = O_DIRECT
|
||||
|
||||
# 其他优化
|
||||
innodb_file_per_table = 1
|
||||
innodb_open_files = 500
|
||||
innodb_io_capacity = 1000
|
||||
innodb_read_io_threads = 8
|
||||
innodb_write_io_threads = 8
|
||||
|
||||
[mysql]
|
||||
default-character-set = utf8mb4
|
||||
|
||||
[client]
|
||||
default-character-set = utf8mb4
|
||||
```
|
||||
|
||||
## 3. 应用配置
|
||||
|
||||
### 3.1 开发环境配置
|
||||
|
||||
```yaml
|
||||
# application-dev.yml
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
strict: true
|
||||
datasource:
|
||||
master:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ruoyi
|
||||
password: ruoyi_password
|
||||
hikari:
|
||||
maximum-pool-size: 20
|
||||
minimum-idle: 10
|
||||
connection-timeout: 30000
|
||||
validation-timeout: 5000
|
||||
idle-timeout: 600000
|
||||
max-lifetime: 1800000
|
||||
keepalive-time: 30000
|
||||
```
|
||||
|
||||
### 3.2 生产环境配置
|
||||
|
||||
```yaml
|
||||
# application-prod.yml
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
strict: true
|
||||
datasource:
|
||||
master:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://mysql-server:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USERNAME:ruoyi}
|
||||
password: ${DB_PASSWORD:encrypted_password}
|
||||
hikari:
|
||||
maximum-pool-size: 50
|
||||
minimum-idle: 20
|
||||
connection-timeout: 30000
|
||||
validation-timeout: 5000
|
||||
idle-timeout: 600000
|
||||
max-lifetime: 1800000
|
||||
keepalive-time: 30000
|
||||
connection-test-query: SELECT 1
|
||||
```
|
||||
|
||||
## 4. 性能优化
|
||||
|
||||
### 4.1 参数优化
|
||||
|
||||
#### 内存相关参数
|
||||
|
||||
```ini
|
||||
# InnoDB缓冲池大小(建议设置为可用内存的70-80%)
|
||||
innodb_buffer_pool_size = 4G
|
||||
|
||||
# 缓冲池实例数(建议设置为CPU核心数)
|
||||
innodb_buffer_pool_instances = 8
|
||||
|
||||
# 查询缓存(MySQL 8.0已移除)
|
||||
# query_cache_size = 0
|
||||
# query_cache_type = 0
|
||||
|
||||
# 排序缓冲区
|
||||
sort_buffer_size = 2M
|
||||
|
||||
# 连接缓冲区
|
||||
read_buffer_size = 2M
|
||||
read_rnd_buffer_size = 8M
|
||||
|
||||
# 临时表缓冲区
|
||||
tmp_table_size = 128M
|
||||
max_heap_table_size = 128M
|
||||
```
|
||||
|
||||
#### I/O 相关参数
|
||||
|
||||
```ini
|
||||
# InnoDB I/O容量
|
||||
innodb_io_capacity = 2000
|
||||
innodb_io_capacity_max = 4000
|
||||
|
||||
# InnoDB读写线程数
|
||||
innodb_read_io_threads = 16
|
||||
innodb_write_io_threads = 16
|
||||
|
||||
# InnoDB刷盘策略
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_flush_log_at_trx_commit = 1
|
||||
|
||||
# 并发插入
|
||||
concurrent_insert = 2
|
||||
```
|
||||
|
||||
### 4.2 索引优化
|
||||
|
||||
#### 索引设计原则
|
||||
|
||||
1. **主键索引**: 使用雪花 ID,保证唯一性和有序性
|
||||
2. **外键索引**: 所有外键字段必须建立索引
|
||||
3. **复合索引**: 根据查询条件建立复合索引
|
||||
4. **覆盖索引**: 优先使用覆盖索引减少回表
|
||||
|
||||
#### 常用索引示例
|
||||
|
||||
```sql
|
||||
-- 租户索引(必须)
|
||||
CREATE INDEX idx_tenant_id ON sys_user(tenant_id);
|
||||
|
||||
-- 复合索引
|
||||
CREATE INDEX idx_user_status_dept ON sys_user(status, dept_id, create_time);
|
||||
|
||||
-- 唯一索引
|
||||
CREATE UNIQUE INDEX uk_user_name_tenant ON sys_user(user_name, tenant_id);
|
||||
```
|
||||
|
||||
### 4.3 查询优化
|
||||
|
||||
#### SQL 优化建议
|
||||
|
||||
1. **避免 SELECT \***: 只查询需要的字段
|
||||
2. **使用 LIMIT**: 大数据量查询使用 LIMIT 分页
|
||||
3. **避免子查询**: 使用 JOIN 替代子查询
|
||||
4. **使用 EXPLAIN**: 分析查询执行计划
|
||||
|
||||
#### 分页查询优化
|
||||
|
||||
```sql
|
||||
-- 传统分页(性能差)
|
||||
SELECT * FROM sys_user ORDER BY id LIMIT 10000, 10;
|
||||
|
||||
-- 优化分页(使用覆盖索引)
|
||||
SELECT u.* FROM sys_user u
|
||||
INNER JOIN (
|
||||
SELECT id FROM sys_user ORDER BY id LIMIT 10000, 10
|
||||
) tmp ON u.id = tmp.id;
|
||||
|
||||
-- 游标分页(推荐)
|
||||
SELECT * FROM sys_user WHERE id > 10000 ORDER BY id LIMIT 10;
|
||||
```
|
||||
|
||||
## 5. 监控和维护
|
||||
|
||||
### 5.1 性能监控
|
||||
|
||||
#### 关键监控指标
|
||||
|
||||
```sql
|
||||
-- 连接数监控
|
||||
SHOW STATUS LIKE 'Threads_connected';
|
||||
SHOW STATUS LIKE 'Max_used_connections';
|
||||
|
||||
-- 查询性能监控
|
||||
SHOW STATUS LIKE 'Slow_queries';
|
||||
SHOW STATUS LIKE 'Questions';
|
||||
|
||||
-- InnoDB监控
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_read_requests';
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';
|
||||
|
||||
-- 锁监控
|
||||
SHOW STATUS LIKE 'Table_locks_waited';
|
||||
SHOW STATUS LIKE 'Innodb_deadlocks';
|
||||
```
|
||||
|
||||
#### 慢查询分析
|
||||
|
||||
```bash
|
||||
# 分析慢查询日志
|
||||
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
|
||||
|
||||
# 实时监控慢查询
|
||||
mysql -e "SHOW FULL PROCESSLIST" | grep -v "Sleep"
|
||||
```
|
||||
|
||||
### 5.2 备份策略
|
||||
|
||||
#### 物理备份(推荐)
|
||||
|
||||
```bash
|
||||
# 使用xtrabackup进行热备份
|
||||
xtrabackup --backup --target-dir=/backup/mysql/$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
# 备份脚本示例
|
||||
#!/bin/bash
|
||||
BACKUP_DIR="/backup/mysql"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_PATH="$BACKUP_DIR/$DATE"
|
||||
|
||||
# 创建备份目录
|
||||
mkdir -p $BACKUP_PATH
|
||||
|
||||
# 执行备份
|
||||
xtrabackup --backup --target-dir=$BACKUP_PATH
|
||||
|
||||
# 压缩备份
|
||||
tar -czf $BACKUP_PATH.tar.gz -C $BACKUP_DIR $DATE
|
||||
|
||||
# 删除原备份目录
|
||||
rm -rf $BACKUP_PATH
|
||||
|
||||
# 删除7天前的备份
|
||||
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
|
||||
```
|
||||
|
||||
#### 逻辑备份
|
||||
|
||||
```bash
|
||||
# 使用mysqldump备份
|
||||
mysqldump -u root -p --single-transaction --routines --triggers \
|
||||
--events --databases ruoyi > ruoyi_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# 恢复数据
|
||||
mysql -u root -p ruoyi < ruoyi_20250101_120000.sql
|
||||
```
|
||||
|
||||
## 6. 安全配置
|
||||
|
||||
### 6.1 用户权限管理
|
||||
|
||||
#### 最小权限原则
|
||||
|
||||
```sql
|
||||
-- 应用用户只授予必要权限
|
||||
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON ruoyi.* TO 'app_user'@'%';
|
||||
|
||||
-- 只读用户
|
||||
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'readonly_password';
|
||||
GRANT SELECT ON ruoyi.* TO 'readonly_user'@'%';
|
||||
|
||||
-- 备份用户
|
||||
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'backup_password';
|
||||
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost';
|
||||
```
|
||||
|
||||
### 6.2 网络安全
|
||||
|
||||
#### 防火墙配置
|
||||
|
||||
```bash
|
||||
# 只允许特定IP访问MySQL
|
||||
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
|
||||
iptables -A INPUT -p tcp --dport 3306 -j DROP
|
||||
```
|
||||
|
||||
#### SSL 配置
|
||||
|
||||
```ini
|
||||
# my.cnf SSL配置
|
||||
[mysqld]
|
||||
ssl-ca=/etc/mysql/ssl/ca-cert.pem
|
||||
ssl-cert=/etc/mysql/ssl/server-cert.pem
|
||||
ssl-key=/etc/mysql/ssl/server-key.pem
|
||||
require_secure_transport=ON
|
||||
```
|
||||
|
||||
## 7. 故障排查
|
||||
|
||||
### 7.1 常见问题
|
||||
|
||||
#### 连接问题
|
||||
|
||||
```bash
|
||||
# 检查MySQL服务状态
|
||||
systemctl status mysql
|
||||
|
||||
# 检查端口监听
|
||||
netstat -tlnp | grep 3306
|
||||
|
||||
# 检查连接数
|
||||
mysql -e "SHOW STATUS LIKE 'Threads_connected'"
|
||||
```
|
||||
|
||||
#### 性能问题
|
||||
|
||||
```sql
|
||||
-- 查看当前运行的查询
|
||||
SHOW FULL PROCESSLIST;
|
||||
|
||||
-- 查看锁等待
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
|
||||
-- 查看表锁
|
||||
SHOW OPEN TABLES WHERE In_use > 0;
|
||||
```
|
||||
|
||||
### 7.2 日志分析
|
||||
|
||||
#### 错误日志分析
|
||||
|
||||
```bash
|
||||
# 查看错误日志
|
||||
tail -f /var/log/mysql/error.log
|
||||
|
||||
# 检查常见错误
|
||||
grep -i "error\|warning" /var/log/mysql/error.log
|
||||
```
|
||||
|
||||
#### 慢查询日志分析
|
||||
|
||||
```bash
|
||||
# 启用慢查询日志
|
||||
SET GLOBAL slow_query_log = 'ON';
|
||||
SET GLOBAL long_query_time = 1;
|
||||
|
||||
# 分析慢查询
|
||||
pt-query-digest /var/log/mysql/slow.log
|
||||
```
|
||||
|
||||
## 8. 高可用配置
|
||||
|
||||
### 8.1 主从复制
|
||||
|
||||
#### 主库配置
|
||||
|
||||
```ini
|
||||
# my.cnf 主库配置
|
||||
[mysqld]
|
||||
server-id = 1
|
||||
log-bin = mysql-bin
|
||||
binlog-format = ROW
|
||||
expire_logs_days = 7
|
||||
```
|
||||
|
||||
#### 从库配置
|
||||
|
||||
```ini
|
||||
# my.cnf 从库配置
|
||||
[mysqld]
|
||||
server-id = 2
|
||||
relay-log = mysql-relay-bin
|
||||
read-only = 1
|
||||
```
|
||||
|
||||
### 8.2 集群方案
|
||||
|
||||
#### MySQL Group Replication
|
||||
|
||||
```sql
|
||||
-- 安装Group Replication插件
|
||||
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
|
||||
|
||||
-- 配置Group Replication
|
||||
SET GLOBAL group_replication_group_name="550fa9ee-a1f8-4b6d-9bfe-c03c12cd1c72";
|
||||
SET GLOBAL group_replication_start_on_boot=off;
|
||||
SET GLOBAL group_replication_local_address="node1:33061";
|
||||
SET GLOBAL group_replication_group_seeds="node1:33061,node2:33061,node3:33061";
|
||||
```
|
||||
|
||||
## 9. 版本升级
|
||||
|
||||
### 9.1 升级准备
|
||||
|
||||
1. **备份数据**: 升级前完整备份
|
||||
2. **测试环境验证**: 在测试环境先进行升级测试
|
||||
3. **应用兼容性**: 检查应用与新版本的兼容性
|
||||
4. **回滚计划**: 准备回滚方案
|
||||
|
||||
### 9.2 升级步骤
|
||||
|
||||
```bash
|
||||
# 1. 停止应用服务
|
||||
systemctl stop app-service
|
||||
|
||||
# 2. 备份数据
|
||||
mysqldump --all-databases > backup_before_upgrade.sql
|
||||
|
||||
# 3. 升级MySQL
|
||||
yum update mysql-community-server
|
||||
|
||||
# 4. 启动MySQL
|
||||
systemctl start mysqld
|
||||
|
||||
# 5. 运行升级脚本
|
||||
mysql_upgrade -u root -p
|
||||
|
||||
# 6. 启动应用服务
|
||||
systemctl start app-service
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **密码安全**: 生产环境使用强密码,定期更换
|
||||
2. **权限控制**: 遵循最小权限原则,不要使用 root 用户连接应用
|
||||
3. **定期备份**: 建立完善的备份策略,定期测试恢复
|
||||
4. **监控告警**: 设置关键指标监控和告警
|
||||
5. **性能调优**: 根据实际业务负载调整参数
|
||||
6. **安全更新**: 及时安装安全补丁和更新
|
||||
Reference in new issue
Block a user