阿里云ECS部署高性能MariaDB+Redis:轻松应对5个WordPress站点日均2.5万访问

阿里云ECS部署高性能MariaDB+Redis:轻松应对5个WordPress站点日均2.5万访问

面对日均5000+IP的5个WordPress站点,你的数据库准备好了吗?

本文将手把手教你在阿里云ECS(2核1.5G内存,Debian 11.8系统)上安装、配置和优化MariaDB 10.6及Redis 7.x,作为内网远程数据库服务器,为另一台内网地址为192.168.1.101的服务器上的WordPress站点提供数据库支持。

一、准备工作与系统优化

在开始之前,我们需要做好一些准备工作并对系统进行基础优化。

关闭防火墙(生产环境慎用):由于我们部署的是内网数据库服务器,且根据要求需要关闭防火墙,但必须注意安全风险

对于Debian系统,通常默认使用iptables。检查状态并关闭:

sudo iptables -L # 查看当前规则 sudo iptables-save > ~/iptables.backup # 备份当前规则 sudo impables -F # 清空规则 

建议:更安全的做法是配置安全组,只允许内网访问。例如在阿里云安全组中,设置仅允许192.168.1.0/24网段访问3306和6379端口。

更新系统并安装必要工具

sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget vim software-properties-common 

优化内核参数:编辑/etc/sysctl.conf,添加以下内容:

net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 vm.overcommit_memory = 1 

执行sudo sysctl -p使配置生效。

二、MariaDB 10.6安装与优化配置

1. 安装MariaDB 10.6

Debian 11默认源中的MariaDB版本可能较低,我们需要从官方仓库安装:

# 导入MariaDB密钥 sudo apt install apt-transport-https curl sudo curl -o /etc/apt/trusted.gpg.d/mariadb-release-key.asc 'https://mariadb.org/mariadb_release_signing_key.asc' sudo sh -c "echo 'deb https://mirrors.aliyun.com/mariadb/repo/10.6/debian bullseye main' >> /etc/apt/sources.list.d/mariadb.list" sudo apt update sudo apt install -y mariadb-server mariadb-client 

2. 基础安全设置

运行安全安装脚本:

sudo mysql_secure_installation 

按照提示设置root密码、移除匿名用户、禁止root远程登录等安全选项。

3. 配置优化(重点)

编辑MariaDB配置文件/etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld] # 基础设置 user = mysql pid-file = /run/mysqld/mysqld.pid socket = /run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp # 字符集设置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 连接设置 max_connections = 100 # 根据2核1.5G内存调整 connect_timeout = 60 wait_timeout = 600 max_allowed_packet = 256M # 日志设置 log_error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2 log_queries_not_using_indexes = 1 # InnoDB优化(关键部分) innodb_buffer_pool_size = 1G # 约占内存的70% innodb_log_file_size = 256M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_stats_on_metadata = 0 # 其他优化 key_buffer_size = 32M tmp_table_size = 64M max_heap_table_size = 64M query_cache_type = 0 query_cache_size = 0 # 二进制日志(主从复制备用) server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 7 

创建日志文件并设置权限:

sudo touch /var/log/mysql/mysql-slow.log sudo touch /var/log/mysql/error.log sudo chown -R mysql:mysql /var/log/mysql 

4. 设置访问权限

登录MySQL,为root设置本地访问和192.168.1.101访问权限:

mysql -u root -p 

执行以下SQL命令:

-- 创建用于远程连接的root用户(生产环境建议创建独立用户) CREATE USER 'root'@'192.168.1.101' IDENTIFIED BY '你的强密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.101' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES; 

三、Redis 7.x安装与优化配置

1. 安装Redis 7.x

Debian 11默认源中的Redis版本可能不是7.x,我们需要从官方源安装:

# 添加Redis源 curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list sudo apt update sudo apt install -y redis-server 

2. 配置优化

编辑Redis配置文件/etc/redis/redis.conf

# 基础设置 daemonize yes pidfile /var/run/redis/redis-server.pid port 6379 timeout 0 tcp-keepalive 300 # 安全设置(设置访问密码) requirepass 你的强密码 rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command CONFIG "" # 内存设置 maxmemory 512mb # 根据1.5G内存合理分配 maxmemory-policy allkeys-lru # 持久化设置 appendonly yes appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 性能优化 stop-writes-on-bgsave-error no rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /var/lib/redis # 高级配置 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 # 网络设置 bind 0.0.0.0 tcp-backlog 51169 

创建持久化目录:

sudo mkdir -p /var/lib/redis sudo chown -R redis:redis /var/lib/redis 

3. 设置访问权限

配置Redis允许内网访问:

# 在配置文件中已设置bind 0.0.0.0,允许所有网络访问 # 但通过防火墙/安全组控制实际访问范围更安全 # 重启Redis使配置生效 sudo systemctl restart redis 

四、系统与服务优化

1. 配置系统限制

编辑/etc/security/limits.conf,添加以下内容:

* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 mysql soft nofile 65535 mysql hard nofile 65535 redis soft nofile 65535 redis hard nofile 65535 

2. 创建交换文件(可选但建议)

对于1.5G内存的服务器,建议添加交换空间:

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab 

3. 服务管理与监控

启动服务并设置开机自启:

# MariaDB管理 sudo systemctl enable mariadb sudo systemctl start mariadb # Redis管理 sudo systemctl enable redis sudo systemctl start redis 

安装监控工具:

sudo apt install -y htop mytop 

五、WordPress端配置

在192.168.1.101服务器上,需要配置WordPress连接远程数据库。

1. 修改wp-config.php

在每个WordPress站点的wp-config.php中添加:

// 数据库连接设置 define('DB_HOST', '内网ECS的IP地址:3306'); define('DB_USER', 'root'); define('DB_PASSWORD', '你的强密码'); // Redis缓存设置 define('WP_REDIS_HOST', '内网ECS的IP地址'); define('WP_REDIS_PORT', '6379'); define('WP_REDIS_PASSWORD', '你的Redis密码'); define('WP_REDIS_TIMEOUT', 1); define('WP_REDIS_READ_TIMEOUT', 1); define('WP_REDIS_DATABASE', 0); 

2. 安装Redis对象缓存插件

在每个WordPress站点安装并配置Redis Object Cache插件。

六、性能测试与监控

1. 数据库压力测试

使用sysbench进行基础测试:

# 安装sysbench sudo apt install -y sysbench # 创建测试数据库 mysql -u root -p -e "CREATE DATABASE sbtest;" # 准备测试数据 sysbench oltp_read_write --table-size=10000 --mysql-db=sbtest --mysql-user=root --mysql-password=你的密码 prepare # 运行测试 sysbench oltp_read_write --table-size=10000 --mysql-db=sbtest --mysql-user=root --mysql-password=你的密码 --num-threads=12 --time=300 run 

2. 监控命令

常用监控命令:

# MariaDB监控 mytop -u root -p 你的密码 mysqladmin -u root -p extended-status # Redis监控 redis-cli -a 你的密码 info memory redis-cli -a 你的密码 info stats 

七、常见问题与解决方案

1. 连接数过多:增加max_connections参数,但更建议优化查询和添加缓存。

2. 内存不足:监控MariaDB和Redis的内存使用,适当调整innodb_buffer_pool_sizemaxmemory参数。

3. 持久化导致Redis变慢:根据数据重要性权衡appendfsync策略。

4. 数据库响应慢:启用慢查询日志,定期分析并优化SQL查询。

八、安全注意事项

1. 定期备份数据库:使用mysqldumpxtrabackup进行MariaDB备份,定期导出RDB或AOF文件进行Redis备份。

2. 定期更新软件:定期检查并更新MariaDB和Redis到安全版本。

3. 监控异常连接:使用网络监控工具检查异常连接尝试。

4. 考虑使用VPN或专有网络:确保数据库通信仅在安全网络内进行。

结语

通过以上步骤,你已经在阿里云ECS上成功部署了一个针对WordPress优化的MariaDB 10.6和Redis 7.x数据库服务器。这套配置能够支撑5个日均5000+IP的WordPress站点,但请注意,持续监控和优化才是保证长期稳定运行的关键。

记得根据实际运行情况不断调整参数,特别是内存相关设置,以适应真实的访问模式。良好的数据库设计、优化的查询语句以及适当的缓存策略,往往比硬件配置更能提升性能。

万事屋版权所有,转载请保留出处:https://www.rei3.com

请登录后发表评论

    没有回复内容

万事屋新帖