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