Senate

MySQL / MariaDB

部署带有持久存储的 MySQL 或 MariaDB 数据库

MySQL / MariaDB

部署带有持久存储的 MySQL 或 MariaDB 数据库。

快速部署

创建服务

进入 ServicesNew Service

输入服务名称:mysql 并点击 Create

配置源

  1. 进入 Source 标签页
  2. 选择 Docker Image 作为源类型
  3. 输入镜像:mysql:8mariadb:11
  4. 点击 Save

添加环境变量

MYSQL_ROOT_PASSWORD=your-secure-password
MYSQL_DATABASE=myapp
MYSQL_USER=appuser
MYSQL_PASSWORD=app-secure-password

添加存储

挂载路径
/var/lib/mysqlmysql-data

部署

点击 Create 部署。

配置选项

MySQL 8

Image: mysql:8

环境变量:

变量描述必填
MYSQL_ROOT_PASSWORDRoot 用户密码
MYSQL_DATABASE要创建的数据库
MYSQL_USER附加用户
MYSQL_PASSWORD用户密码

MariaDB

Image: mariadb:11

与 MySQL 相同的环境变量。

连接

从其他服务

使用 Docker 网络:

mysql://appuser:app-secure-password@mysql:3306/myapp

或使用完整容器名:

mysql://appuser:password@senate-mysql-xxx:3306/myapp

外部访问

公开暴露数据库是安全风险。请改用 SSH 隧道或 VPN。

如必须外部暴露:

  1. 添加端口映射:3306:3306
  2. 配置防火墙规则

自定义配置

使用配置文件

  1. 创建 my.cnf
[mysqld]
max_connections = 200
innodb_buffer_pool_size = 1G
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
  1. 挂载为卷:
/path/to/my.cnf:/etc/mysql/conf.d/custom.cnf:ro

备份

手动备份

docker exec senate-mysql-xxx mysqldump -u root -p myapp > backup.sql

恢复

docker exec -i senate-mysql-xxx mysql -u root -p myapp < backup.sql

自动备份

使用 cron 任务或备份服务:

#!/bin/bash
DATE=$(date +%Y%m%d)
docker exec senate-mysql-xxx mysqldump -u root -p$MYSQL_ROOT_PASSWORD myapp | gzip > /backups/myapp-$DATE.sql.gz

性能提示

  1. 调整缓冲池:将 innodb_buffer_pool_size 设置为可用 RAM 的 70-80%
  2. 使用 SSD:用于数据库存储卷
  3. 监控慢查询:启用慢查询日志
  4. 定期维护:定期运行 OPTIMIZE TABLE

相关内容

目录