作者:MK

日期:2026年3月5日

环境:AWS EC2 t3.micro, Amazon Linux 2023, MariaDB 10.5

前言

Amazon Linux 2023 (AL2023) 是 AWS 推出的新一代 Linux 发行版,专为云环境优化。与 CentOS/RHEL 不同,AL2023 默认使用 MariaDB 作为 MySQL 的替代品,并通过 DNF 包管理器 提供模块化安装。本文将详细介绍在 EC2 实例上从零开始部署 MariaDB 的完整流程,包括安全加固和性能优化。


一、环境准备

1.1 启动 EC2 实例

  1. 登录 AWS 控制台,启动新实例

  2. AMI 选择:Amazon Linux 2023 AMI

  3. 实例类型:t3.micro(测试环境)或 t3.medium(生产环境)

  4. 安全组配置:开放 SSH (22) 和 MySQL (3306) 端口

  5. 密钥对:创建或选择现有 PEM 密钥

2026-03-06T14:58:35-udadzhwd.png

1.2 连接实例

# 修改密钥权限
chmod 400 your-key.pem
​
# SSH 连接(替换为你的公网 IP)
ssh -i your-key.pem ec2-user@<EC2-PUBLIC-IP>

1.3 系统更新

# 更新系统包(AL2023 使用 dnf 而非 yum)
sudo dnf update -y
​
# 查看系统版本
cat /etc/os-release
# 输出:Amazon Linux 2023


二、安装 MariaDB

2.1 查看可用版本

AL2023 通过 AppStream 模块提供多版本 MariaDB:

# 方法1:搜索可用包
sudo dnf search mariadb | grep server

# 输出示例:
# mariadb105-server.x86_64 : MariaDB server
# mariadb1011-server.x86_64 : MariaDB server

# 方法2:查看可安装版本
sudo dnf list available mariadb*server*

# 方法3:查看已启用仓库中的包
sudo dnf repoquery -l mariadb*server*

2.2 安装 MariaDB 10.5

# 更新系统(可选但推荐)
sudo dnf update -y

# 直接安装指定版本(推荐)-----可以使用yum或者dnf来进行安装
sudo yum install -y mariadb105-server mariadb105

# 或者安装更新的 10.11 版本
# sudo yum install -y mariadb1011-server mariadb1011

提示:AL2023 的软件包名与 CentOS 不同,直接使用 mariadb-server 而非 mariadb105-server

2.3 验证安装

# 查看版本
mysql --version
# 输出:mysql  Ver 15.1 Distrib 10.5.25-MariaDB, for Linux (x86_64)
​
# 查看安装路径
which mariadb
# 输出:/usr/bin/mariadb


三、启动与基础配置

3.1 启动服务

# 启动 MariaDB
sudo systemctl start mariadb
​
# 设置开机自启
sudo systemctl enable mariadb
​
# 查看状态
sudo systemctl status mariadb

3.2 运行安全脚本

sudo mysql_secure_installation

按提示操作:

Enter current password for root: [直接回车,首次安装无密码]
​
Switch to unix_socket authentication [Y/n] Y    # 使用系统认证
Set root password? [Y/n] Y                       # 设置 root 密码
New password: [输入强密码]
Re-enter new password: [确认密码]
​
Remove anonymous users? [Y/n] Y                  # 删除匿名用户
Disallow root login remotely? [Y/n] Y            # 禁止 root 远程登录--(推荐禁止,根据业务需求)
Remove test database? [Y/n] Y                    # 删除测试库
Reload privilege tables? [Y/n] Y                 # 刷新权限



四、远程访问配置(可选)

4.1 修改绑定地址

# 编辑配置文件
sudo vim /etc/my.cnf.d/mariadb-server.cnf

找到 [mysqld] 部分,修改:

[mysqld]
# 允许所有接口连接(默认是 127.0.0.1)
bind-address = 0.0.0.0
​
# 或指定私有 IP
# bind-address = 172.31.XX.XX

4.2 创建远程访问用户

# 登录 MariaDB
sudo mysql -u root -p
​
# 创建新用户(推荐替代 root 远程登录)
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

4.3 配置 AWS 安全组

  1. 进入 EC2 控制台 → 安全组

  2. 编辑入站规则,添加:

    • 类型:MySQL/Aurora

    • 端口:3306

    • :你的本地 IP 或特定安全组(不推荐开放 0.0.0.0/0)

4.4 重启服务

sudo systemctl restart mariadb

五、性能优化(生产环境)

5.1 编辑配置文件

sudo vim /etc/my.cnf.d/mariadb-server.cnf

根据实例规格调整(以 t3.medium 2核4G 为例):

[mysqld]
# 基础设置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
​
# InnoDB 优化
innodb_buffer_pool_size = 2G          # 物理内存的 50-70%
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
​
# 连接优化
max_connections = 200
wait_timeout = 600
interactive_timeout = 600
​
# 查询缓存(MariaDB 10.5 仍支持)
query_cache_type = 1
query_cache_size = 64M
​
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
​
# 日志(用于慢查询分析)
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

5.2 重启并验证

sudo systemctl restart mariadb
​
# 查看当前配置
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"

六、备份与恢复

6.1 自动备份脚本

创建备份脚本:

sudo vim /opt/backup-mariadb.sh
#!/bin/bash
# 配置
BACKUP_DIR="/backup/mariadb"
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER="root"
DB_PASS="your_root_password"
​
# 创建目录
mkdir -p $BACKUP_DIR
​
# 备份所有数据库
mysqldump -u$DB_USER -p$DB_PASS --all-databases --single-transaction | gzip > $BACKUP_DIR/full_backup_$DATE.sql.gz
​
# 保留最近 7 天备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
​
echo "Backup completed: full_backup_$DATE.sql.gz"

添加执行权限和定时任务:

sudo chmod +x /opt/backup-mariadb.sh
​
# 添加 crontab(每天凌晨 2 点备份)
sudo crontab -e
0 2 * * * /opt/backup-mariadb.sh >> /var/log/mariadb-backup.log 2>&1

七、常见问题排查

7.1 无法启动服务

# 查看详细错误
sudo journalctl -u mariadb -xe
​
# 检查数据目录权限
sudo ls -la /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql/

7.2 远程连接失败

# 检查监听端口
sudo ss -tlnp | grep 3306
​
# 检查 SELinux(AL2023 默认启用)
sudo getenforce
sudo setsebool -P mysql_connect_any on
​
# 检查防火墙
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

7.3 内存不足

对于 t3.micro 等低内存实例:

# /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
innodb_buffer_pool_size = 256M
max_connections = 50
performance_schema = off    # 关闭性能监控节省内存

八、总结

步骤

命令

说明

安装

sudo dnf install mariadb-server

AL2023 默认提供 10.5

启动

sudo systemctl start mariadb

使用 systemd 管理

安全

mysql_secure_installation

必做,删除测试数据

远程

修改 bind-address + 安全组

注意最小权限原则

优化

调整 innodb_buffer_pool_size

根据实例规格配置

Amazon Linux 2023 的 MariaDB 安装相比 CentOS 更加简洁,通过 DNF 模块可以轻松管理版本。对于 AWS 环境,建议结合 RDS 评估是否需要自建数据库——生产环境推荐使用 Amazon RDS for MariaDB,省去运维负担。


参考链接


本文首发于个人技术博客,转载请注明出处。