Skip to content

数据库配置

EasyFly-Ads 使用 MySQL 作为主数据库,Redis 作为缓存和会话存储。本章指导安装、配置及初始化。

MySQL 安装

使用 Docker(推荐)

bash
docker run -d \
  --name easyfly-mysql \
  --restart always \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_root_password \
  -v /data/mysql:/var/lib/mysql \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci \
  --default-authentication-plugin=mysql_native_password

使用包管理器

CentOS:

bash
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install -y mysql-community-server
sudo systemctl start mysqld
sudo systemctl enable mysqld

# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.log

Ubuntu:

bash
sudo apt install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

MySQL 初始化

安全配置

bash
mysql_secure_installation

按提示进行:

  • 设置 root 密码
  • 移除匿名用户
  • 禁止 root 远程登录
  • 删除 test 数据库
  • 重新加载权限表

创建数据库与用户

sql
-- 登录 MySQL
mysql -u root -p

-- 创建数据库
CREATE DATABASE easyfly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户并授权
CREATE USER 'easyfly'@'%' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON easyfly.* TO 'easyfly'@'%';
FLUSH PRIVILEGES;

导入初始化脚本

bash
mysql -u easyfly -p easyfly < /path/to/init.sql

数据库结构概览

表名说明
ef_users用户基础信息
ef_user_relations用户邀请关系链
ef_agents代理商信息
ef_ad_slots广告位配置
ef_ad_reports广告数据上报
ef_wallets用户金币/余额
ef_withdrawals提现记录
ef_transactions资金流水
ef_risk_logs风控日志
ef_system_config系统配置项

Redis 安装

使用 Docker

bash
docker run -d \
  --name easyfly-redis \
  --restart always \
  -p 6379:6379 \
  -v /data/redis:/data \
  redis:7 \
  redis-server --requirepass your_redis_password --appendonly yes

使用包管理器

bash
# CentOS
sudo yum install -y redis
sudo systemctl start redis
sudo systemctl enable redis

# Ubuntu
sudo apt install -y redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server

Redis 安全配置

编辑 /etc/redis/redis.conf

ini
# 设置密码
requirepass your_redis_password

# 绑定内网IP(禁止公网访问)
bind 127.0.0.1 10.0.0.1

# 关闭危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
bash
sudo systemctl restart redis

连接配置

在 EasyFly-Ads 配置文件中设置数据库连接:

yaml
# MySQL
database:
  host: 127.0.0.1
  port: 3306
  name: easyfly
  username: easyfly
  password: your_secure_password
  charset: utf8mb4
  max_connections: 100

# Redis
redis:
  host: 127.0.0.1
  port: 6379
  password: your_redis_password
  db: 0
  pool_size: 20

备份策略

MySQL 定时备份

创建备份脚本 /opt/scripts/mysql_backup.sh

bash
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/data/backup/mysql
mkdir -p $BACKUP_DIR
mysqldump -u easyfly -p'password' easyfly | gzip > $BACKUP_DIR/easyfly_$DATE.sql.gz
# 保留最近 7 天的备份
find $BACKUP_DIR -name "easyfly_*.sql.gz" -mtime +7 -delete

添加 crontab 定时任务:

bash
0 2 * * * /bin/bash /opt/scripts/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

Redis 备份

Redis 使用 AOF + RDB 双重持久化,数据文件位于 /data/redis/。建议定期将该目录备份至对象存储。


下一步