CentOS或Ubuntu轻量云服务器部署MySQL+Redis生产环境推荐配置有哪些?

在CentOS或Ubuntu轻量云服务器上部署MySQL+Redis生产环境,以下是我推荐的配置方案:

一、系统选择建议

推荐Ubuntu LTS版本(20.04/22.04):

  • 软件包更新及时,社区支持好
  • 内存占用相对较少
  • 更适合轻量级服务器

二、MySQL配置推荐

1. 安装选择

# Ubuntu
sudo apt install mysql-server-8.0

# CentOS
sudo yum install mysql-server

2. 关键配置优化(my.cnf)

[mysqld]
# 基础配置
bind-address = 0.0.0.0
port = 3306
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock

# 内存优化(针对1-2GB内存服务器)
innodb_buffer_pool_size = 256M  # 调整为物理内存的50-70%
key_buffer_size = 32M
max_connections = 100  # 根据实际需求调整
thread_cache_size = 8

# 性能优化
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

# 查询缓存(MySQL 8.0已移除,5.7可配置)
# query_cache_type = 0

# 日志配置
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

3. 安全配置

# 运行安全脚本
sudo mysql_secure_installation

# 创建专用用户
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

三、Redis配置推荐

1. 安装

# Ubuntu
sudo apt install redis-server

# CentOS
sudo yum install redis

2. 关键配置优化(redis.conf)

# 基础配置
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis/redis-server.pid
logfile /var/log/redis/redis-server.log
dir /var/lib/redis

# 内存管理(针对1-2GB服务器)
maxmemory 512mb  # 不超过物理内存的60%
maxmemory-policy allkeys-lru  # 内存满时的淘汰策略
maxmemory-samples 5

# 持久化配置(根据需求选择)
# RDB快照
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb

# AOF追加(数据安全要求高时启用)
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 性能优化
tcp-backlog 511
timeout 0
tcp-keepalive 300
loglevel notice
databases 16

# 安全配置
requirepass "YourStrongRedisPassword123!"
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""

3. 系统优化

# 调整内核参数
echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
echo 'net.core.somaxconn = 1024' >> /etc/sysctl.conf
sysctl -p

# 禁用透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled

四、安全加固措施

1. 防火墙配置

# Ubuntu使用ufw
sudo ufw allow 22/tcp
sudo ufw allow 3306/tcp  # MySQL
sudo ufw allow 6379/tcp  # Redis
sudo ufw enable

# CentOS使用firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload

2. SSH安全

# 修改SSH端口
Port 2222
# 禁用root登录
PermitRootLogin no
# 使用密钥认证
PasswordAuthentication no

3. 服务限制

# 创建专用用户组
sudo groupadd dba
sudo useradd -r -g dba -s /bin/false mysqluser
sudo useradd -r -g dba -s /bin/false redisuser

# 修改文件权限
sudo chown -R mysqluser:dba /var/lib/mysql
sudo chown -R redisuser:dba /var/lib/redis

五、监控与维护

1. 基础监控脚本

#!/bin/bash
# check_services.sh
echo "=== MySQL Status ==="
systemctl status mysql --no-pager | grep Active
mysqladmin -u root -p ping

echo -e "n=== Redis Status ==="
systemctl status redis --no-pager | grep Active
redis-cli -a 'password' ping

echo -e "n=== Memory Usage ==="
free -h

echo -e "n=== Disk Usage ==="
df -h

2. 日志轮转

# 配置logrotate
sudo nano /etc/logrotate.d/mysql-redis

# 内容示例
/var/log/mysql/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 mysql adm
    postrotate
        test -x /usr/bin/mysqladmin || exit 0
        mysqladmin flush-logs
    endscript
}

/var/log/redis/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 redis redis
}

六、备份策略

1. MySQL备份

#!/bin/bash
# mysql_backup.sh
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="your_database"

mysqldump -u root -p'password' --single-transaction 
  --routines --triggers $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME_$DATE.sql.gz

# 保留最近7天备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

2. Redis备份

#!/bin/bash
# redis_backup.sh
BACKUP_DIR="/backup/redis"
DATE=$(date +%Y%m%d)

# RDB备份
cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump_$DATE.rdb

# AOF备份(如果启用)
cp /var/lib/redis/appendonly.aof $BACKUP_DIR/appendonly_$DATE.aof

# 保留最近7天备份
find $BACKUP_DIR -name "*.rdb" -mtime +7 -delete
find $BACKUP_DIR -name "*.aof" -mtime +7 -delete

七、性能调优建议

  1. 根据服务器规格调整:

    • 1GB内存:MySQL缓冲池256M,Redis最大内存512M
    • 2GB内存:MySQL缓冲池1G,Redis最大内存1G
  2. 连接数优化:

    -- 监控连接数
    SHOW STATUS LIKE 'Threads_connected';
    SHOW VARIABLES LIKE 'max_connections';
  3. 定期维护:

    -- MySQL优化表
    OPTIMIZE TABLE important_table;
    
    -- Redis内存碎片整理
    redis-cli -a 'password' MEMORY PURGE

注意事项

  1. 测试环境验证:所有配置先在测试环境验证
  2. 逐步调整:监控系统资源使用情况,逐步优化参数
  3. 文档记录:记录所有配置变更
  4. 定期更新:保持系统和软件的安全更新
  5. 监控告警:设置关键指标监控和告警

这些配置针对轻量级云服务器进行了优化,平衡了性能、稳定性和资源使用。根据实际业务负载情况,可能需要进一步调整特定参数。

云服务器