Azure Database for MySQL/PostgreSQL #

概述 #

Azure 提供完全托管的 MySQL 和 PostgreSQL 数据库服务,让你无需管理基础设施。

text
┌─────────────────────────────────────────────────────────────┐
│                    托管数据库概览                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Azure Database for MySQL                                    │
│  ├── 完全托管 MySQL                                         │
│  ├── 支持 5.7, 8.0 版本                                     │
│  ├── 灵活服务器和单服务器选项                               │
│  └── 内置高可用                                             │
│                                                             │
│  Azure Database for PostgreSQL                               │
│  ├── 完全托管 PostgreSQL                                    │
│  ├── 支持 11-15 版本                                        │
│  ├── 灵活服务器和超大规模选项                               │
│  └── Citus 扩展支持                                         │
│                                                             │
│  共同特点                                                    │
│  ├── 自动备份                                               │
│  ├── 内置安全                                               │
│  ├── 自动扩展                                               │
│  └── 监控和告警                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

部署选项 #

灵活服务器 vs 单服务器 #

text
┌─────────────────────────────────────────────────────────────┐
│                    部署选项对比                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  灵活服务器 (Flexible Server)                                │
│  ├── 更多控制权和灵活性                                     │
│  ├── 可停止/启动服务器                                      │
│  ├── 可配置维护窗口                                         │
│  ├── 区域冗余高可用                                         │
│  ├── 更好的成本控制                                         │
│  └── 推荐                                                    │
│                                                             │
│  单服务器 (Single Server)                                    │
│  ├── 简单易用                                               │
│  ├── 内置高可用                                             │
│  ├── 自动扩展                                               │
│  └── 适合简单场景                                           │
│                                                             │
│  超大规模 (Hyperscale - PostgreSQL)                          │
│  ├── 水平扩展                                               │
│  ├── 大规模数据处理                                         │
│  └── 适合大规模分析                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建 MySQL 灵活服务器 #

使用 Azure CLI #

bash
# 创建资源组
az group create --name myResourceGroup --location eastus

# 创建 MySQL 灵活服务器
az mysql flexible-server create \
  --resource-group myResourceGroup \
  --name mysqlserver \
  --location eastus \
  --admin-user mysqladmin \
  --admin-password "P@ssw0rd123!" \
  --sku-name Standard_B1ms \
  --tier Burstable \
  --storage-size 32 \
  --version 8.0

# 创建数据库
az mysql flexible-server db create \
  --resource-group myResourceGroup \
  --server-name mysqlserver \
  --database-name mydb

使用 Azure 门户 #

text
┌─────────────────────────────────────────────────────────────┐
│                    创建 MySQL 服务器步骤                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1: 基本信息                                            │
│  ├── 订阅选择                                               │
│  ├── 资源组选择/创建                                        │
│  ├── 服务器名称                                             │
│  ├── 区域选择                                               │
│  ├── MySQL 版本                                             │
│  └── 工作负载类型                                           │
│                                                             │
│  步骤 2: 计算+存储                                           │
│  ├── 服务层级:可突发/通用/业务关键                         │
│  ├── 计算规格                                               │
│  ├── 存储大小                                               │
│  └── 备份保留                                               │
│                                                             │
│  步骤 3: 网络                                                │
│  ├── 访问方式:公网/私有                                    │
│  ├── 防火墙规则                                             │
│  └── VNet 集成                                              │
│                                                             │
│  步骤 4: 安全                                                │
│  ├── 管理员账户                                             │
│  └── 数据加密                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

创建 PostgreSQL 灵活服务器 #

使用 Azure CLI #

bash
# 创建 PostgreSQL 灵活服务器
az postgres flexible-server create \
  --resource-group myResourceGroup \
  --name pgserver \
  --location eastus \
  --admin-user pgadmin \
  --admin-password "P@ssw0rd123!" \
  --sku-name Standard_B1ms \
  --tier Burstable \
  --storage-size 32 \
  --version 14

# 创建数据库
az postgres flexible-server db create \
  --resource-group myResourceGroup \
  --server-name pgserver \
  --database-name mydb

连接数据库 #

MySQL 连接 #

bash
# 获取连接字符串
az mysql flexible-server show-connection-string \
  --server-name mysqlserver \
  --database-name mydb

# 使用 mysql 客户端连接
mysql -h mysqlserver.mysql.database.azure.com \
  -u mysqladmin \
  -p \
  mydb

PostgreSQL 连接 #

bash
# 获取连接字符串
az postgres flexible-server show-connection-string \
  --server-name pgserver \
  --database-name mydb

# 使用 psql 客户端连接
psql -h pgserver.postgres.database.azure.com \
  -U pgadmin \
  -d mydb

应用程序连接 #

javascript
// Node.js MySQL 连接
const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: 'mysqlserver.mysql.database.azure.com',
  user: 'mysqladmin',
  password: 'P@ssw0rd123!',
  database: 'mydb',
  ssl: { rejectUnauthorized: true }
});

// Node.js PostgreSQL 连接
const { Pool } = require('pg');

const pool = new Pool({
  host: 'pgserver.postgres.database.azure.com',
  user: 'pgadmin',
  password: 'P@ssw0rd123!',
  database: 'mydb',
  ssl: true
});

防火墙配置 #

bash
# MySQL 防火墙规则
az mysql flexible-server firewall-rule create \
  --resource-group myResourceGroup \
  --name mysqlserver \
  --rule-name AllowMyIP \
  --start-ip-address <your-ip> \
  --end-ip-address <your-ip>

# PostgreSQL 防火墙规则
az postgres flexible-server firewall-rule create \
  --resource-group myResourceGroup \
  --name pgserver \
  --rule-name AllowMyIP \
  --start-ip-address <your-ip> \
  --end-ip-address <your-ip>

高可用配置 #

区域冗余高可用 #

bash
# 创建带高可用的 MySQL 服务器
az mysql flexible-server create \
  --resource-group myResourceGroup \
  --name mysqlserver-ha \
  --location eastus \
  --admin-user mysqladmin \
  --admin-password "P@ssw0rd123!" \
  --sku-name Standard_D2ds_v4 \
  --tier GeneralPurpose \
  --high-availability ZoneRedundant

# 创建带高可用的 PostgreSQL 服务器
az postgres flexible-server create \
  --resource-group myResourceGroup \
  --name pgserver-ha \
  --location eastus \
  --admin-user pgadmin \
  --admin-password "P@ssw0rd123!" \
  --sku-name Standard_D2ds_v4 \
  --tier GeneralPurpose \
  --high-availability ZoneRedundant

备份和恢复 #

备份配置 #

bash
# 配置备份保留
az mysql flexible-server update \
  --resource-group myResourceGroup \
  --name mysqlserver \
  --backup-retention 14

# 启用异地备份
az mysql flexible-server update \
  --resource-group myResourceGroup \
  --name mysqlserver \
  --geo-redundant-backup Enabled

恢复数据库 #

bash
# 从备份恢复 MySQL
az mysql flexible-server restore \
  --resource-group myResourceGroup \
  --name mysqlserver-restored \
  --source-server mysqlserver \
  --restore-time "2026-03-28T12:00:00Z"

# 从备份恢复 PostgreSQL
az postgres flexible-server restore \
  --resource-group myResourceGroup \
  --name pgserver-restored \
  --source-server pgserver \
  --restore-time "2026-03-28T12:00:00Z"

数据迁移 #

使用数据迁移服务 #

text
┌─────────────────────────────────────────────────────────────┐
│                    数据迁移选项                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Azure 数据库迁移服务 (DMS)                                  │
│  ├── 在线迁移                                               │
│  ├── 最小停机时间                                           │
│  └── 适合大规模迁移                                         │
│                                                             │
│  mysqldump / pg_dump                                         │
│  ├── 导出导入                                               │
│  ├── 简单易用                                               │
│  └── 适合小型数据库                                         │
│                                                             │
│  mydumper / pgloader                                         │
│  ├── 并行导出                                               │
│  ├── 更快速度                                               │
│  └── 适合大型数据库                                         │
│                                                             │
│  数据传入复制                                                │
│  ├── 实时同步                                               │
│  ├── 最小停机                                               │
│  └── 适合持续同步                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用 mysqldump 迁移 #

bash
# 导出源数据库
mysqldump -h source-server -u user -p --single-transaction \
  --routines --triggers --databases mydb > backup.sql

# 导入到 Azure MySQL
mysql -h mysqlserver.mysql.database.azure.com \
  -u mysqladmin -p mydb < backup.sql

使用 pg_dump 迁移 #

bash
# 导出源数据库
pg_dump -h source-server -U user -d mydb -F c > backup.dump

# 导入到 Azure PostgreSQL
pg_restore -h pgserver.postgres.database.azure.com \
  -U pgadmin -d mydb backup.dump

最佳实践 #

性能优化 #

text
┌─────────────────────────────────────────────────────────────┐
│                    性能最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 选择正确的层级                                           │
│     ├── 可突发: 开发测试                                    │
│     ├── 通用: 生产环境                                      │
│     └── 业务关键: 高性能                                    │
│                                                             │
│  2. 配置连接池                                               │
│     └── 减少连接开销                                        │
│                                                             │
│  3. 优化查询                                                 │
│     └── 使用索引、优化 SQL                                  │
│                                                             │
│  4. 监控性能                                                 │
│     └── 使用 Azure Monitor                                  │
│                                                             │
│  5. 使用只读副本                                             │
│     └── 分散读负载                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安全建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    安全最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 使用私有端点                                             │
│     └── 限制公网访问                                        │
│                                                             │
│  2. 启用 SSL                                                 │
│     └── 加密传输                                            │
│                                                             │
│  3. 配置防火墙                                               │
│     └── 限制访问 IP                                         │
│                                                             │
│  4. 启用加密                                                 │
│     └── 数据加密                                            │
│                                                             │
│  5. 定期备份                                                 │
│     └── 配置备份策略                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

下一步 #

现在你已经掌握了托管数据库的使用,接下来学习 Redis 缓存 了解缓存服务!

最后更新:2026-03-29