本页面介绍了实现高可用性的 MySQL 实例的旧版配置。
在旧版高可用性配置中,Cloud SQL for MySQL 实例使用故障切换副本为实例添加高可用性。Google Cloud 控制台不提供此功能。新配置不使用故障切换副本。相反,它使用 Google 的区域永久性磁盘,该磁盘会在一个区域的两个可用区之间的块级层同步复制数据。
如需详细了解当前高可用性配置,请参阅高可用性配置概览。
将实例从旧版高可用性更新为当前高可用性
要将实例从旧版高可用性更新为新的高可用性配置,请执行以下操作:
- 删除想要更新的 MySQL 实例上的故障切换副本。 请参阅为实例停用高可用性。
- 配置实例以使用当前版本的高可用性。请参阅对现有实例进行高可用性配置。
旧版配置:创建采用高可用性配置的新实例
创建实例时,您可以为该实例配置高可用性;Cloud SQL 会在创建主实例的同时创建故障切换副本。Google Cloud 控制台不提供旧版功能。请改用 gcloud CLI 或 cURL 命令。
要创建配置为高可用性的实例,请按以下步骤操作:
gcloud
- 创建主实例及其故障切换副本:
gcloud sql instances create PRIMARY_INSTANCE_NAME \ --backup-start-time=BACKUP_WINDOW_START_TIME \ --failover-replica-name=FAILOVER_REPLICA_NAME \ --cpu=CPU \ --database-version=DATABASE_VERSION \ --memory=MEMORY \ --enable-bin-log
备份时段的开始时间采用
HH:MM
格式。请务必将 DATABASE_VERSION 占位符替换为 MySQL 5.6 或 MySQL 5.7(
--database-version=MYSQL_5_6
或--database-version=MYSQL_5_7
)。如果未指定
database-version
参数的版本,则系统会默认选择 MySQL 8.0。MySQL 的旧版高可用性配置不支持 8.0 版。如需查看可用参数的完整列表,请参阅 gcloud sql instances create 参考页面。
- 在主实例上配置根用户:
gcloud sql users set-password root --host=% \ --instance PRIMARY_INSTANCE_NAME \ --password PASSWORD
故障切换副本是使用与主实例相同的 CPU 和内存创建的。您可稍后更改故障切换副本的 CPU 和内存,但它必须至少与主实例一样大。
curl
- 创建主实例及其故障切换副本:
如需查看该请求的完整参数列表,请参阅 instances:insert 页面。gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{"name":"PRIMARY_INSTANCE_NAME", "region":"REGION", "settings": { "tier":"MACHINE_TYPE", "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}}, "failoverReplica": {"name": "FAILOVER_REPLICA_NAME"}}' \ -X POST \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
-
主实例完成初始化后,请更新主实例上的 root 密码:
这项更改将自动传播到相应副本。gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{"name": "root", "host": "%", "password": "ROOT_PASSWORD"}' \ 'https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/users?host=%25&name=root'
旧版配置:对现有实例进行高可用性配置
在重新配置实例时,为现有实例配置高可用性会导致几分钟的停机时间。
如需为现有实例配置高可用性,请按如下所述操作:
gcloud
- 检查主实例的状态:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
如果
databaseReplicationEnabled
属性为true
,则说明该实例为副本;您不能为副本创建故障切换副本。 - 如果
backupConfiguration
下的enabled
属性为false
,请立即为主实例启用备份:gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --backup-start-time HH:MM
backup-start-time
参数采用 UTC±00 时区的 24 小时制,用于指定一个 4 小时的备份时段开始时间,备份可在该时段内随时启动。 - 如果
binaryLogEnabled
属性为false
,请启用二进制日志:gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --enable-bin-log
启用二进制日志会导致实例重启。
- 创建副本:
gcloud sql instances create FAILOVER_REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --replica-type=FAILOVER
curl
- 检查主实例的状态:
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ -X GET \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME?fields=settings
输出将包含
backupConfiguration
,例如:"backupConfiguration": { "kind": "sql#backupConfiguration", "startTime": "12:00", "enabled": true, "binaryLogEnabled": true }
- 如果
enabled
或binaryLogEnabled
为false
,请使用实例资源的patch
方法同时启用这两项。指定要保留原样和要更改的备份配置属性。如需启用备份,请将
enabled
设置为true
,并将startTime
设置为备份时段的开始时间。如需启用二进制日志记录功能,请将binaryLogEnabled
设置为true
。gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{"settings" : {"backupConfiguration" : {"startTime": "HH:MM", "enabled": true, "binaryLogEnabled": true}}}' \ -X PATCH \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/
-
使用实例资源的
insert
方法来创建故障切换副本。gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{"name": "REPLICA_NAME", "masterInstanceName": "PRIMARY_INSTANCE_NAME", "region": "PRIMARY_IMSTANCE_REGION", "databaseVersion": "PRIMARY_DATABASE_VERSION", "replicaConfiguration": {"failoverTarget": true}, "settings": {"tier":"MACHINE_TYPE"}}' \ -X POST \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
MACHINE_TYPE
必须至少与主实例的机器类型一样大。
启动故障切换
测试故障切换是一项可选操作,但建议您执行此项测试,这样便于了解应用在发生故障切换时的响应情况。
如需详细了解故障切换,请参阅故障切换概览。
gcloud
启动故障切换:
gcloud sql instances failover PRIMARY_INSTANCE_NAME
curl
- 描述相应主实例以获取
settingsVersion
字段的值。gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ -X GET \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME
- 启动故障切换:
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data '{"failoverContext":{"settingsVersion":"SETTINGS_VERSION"}}' \ -X POST \ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/failover
实例即会执行故障切换,且暂时无法提供数据。
旧版配置:创建复制延迟提醒
故障切换操作所需的时间取决于故障切换启动时复制延迟的时长。借助 Google Cloud 控制台中的 Cloud Monitoring,您可以在复制延迟时间超过阈值时收到提醒。
如需详细了解复制延迟,请在 MySQL 文档的 SHOW SLAVE STATUS 语法页面中搜索“seconds_behind_master”。
如需详细了解 Cloud Monitoring,请参阅 Cloud Monitoring 文档。
旧版配置:为特定故障切换副本设置提醒
- 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择提醒。
- 点击创建提醒政策。
- 为提醒输入一个描述性名称。
- 选择 Metric Threshold,然后点击 Next 以打开“Target”标签。
- 在 Resource Type 中,选择 Cloud SQL。
- 在 Applies To 中选择 Single,然后选择您的故障切换副本。
- 点击 Next 以打开“Configuration”标签。
输入以下值:
字段 值 If Metric 落后于主实例的秒数 Condition above Thresholds 120(或任何适合您环境的值) For 3 分钟 选择通知方法,然后点击保存条件。
旧版配置:为故障切换副本组设置提醒
如果您打算在同一项目中创建多个故障切换副本,那么为整个组设置提醒更为方便,而无需分别为每个故障切换副本设置提醒。如需创建一个受监控的组,请在故障切换副本的名称中添加一个后缀(如“-failover”)。切勿对任何其他类型的 Cloud SQL 实例使用此后缀。
创建故障切换副本组:
-
在 Google Cloud 控制台中,转到 Monitoring 页面。
- 在上方菜单栏中,选择组 > 创建...。
- 为您的组输入一个描述性名称。
- 保留 Name 和 Contains 的选中状态,并输入您的名称子字符串。
- 点击 Save Group。此时会打开新组对应的摘要页面。
- 确认预期的实例包含在此组中。
为故障切换副本组创建提醒:
- 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择提醒。
- 点击创建提醒政策。
- 为您的组提醒输入一个描述性名称。
- 选择 Metric Threshold,然后点击 Next 以打开“Target”标签。
- 在 Resource Type 中,选择 Cloud SQL。
- 在 Applies To 中选择 Group,然后选择您的故障切换组。
- 保留 Any Member Violates 的选中状态,然后点击 Next 以打开“Configuration”标签。
输入以下值:
字段 值 If Metric 落后于主实例的秒数 Condition above Thresholds 120(或任何适合您环境的值) For 3 minutes 选择所需的 Notification 方法,然后点击 Save Condition。
旧版配置:为实例停用高可用性
您需要删除故障切换副本实例才能对主实例移除高可用性。
执行此过程之前,请确保主实例当前没有运行操作。
如需停用高可用性,请执行以下操作:
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 选择与要停用高可用性的实例关联的故障切换实例。
- 在实例详情页面上,点击删除。
- 在删除副本窗口中,重新输入故障切换实例的名称。
- 点击删除。原始实例的配置将会更改为可用区。
gcloud
如需了解参考信息,请参阅gcloud sql instances delete
。
gcloud sql instances delete FAILOVER_REPLICA_NAME
curl
以下请求使用instances:delete
方法删除实例。
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json'\ -X DELETE\ https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME
后续步骤
- 详细了解高可用性配置的工作原理。
- 通过重启实例测试应用在连接断开时的响应情况。
- 详细了解如何管理数据库连接。
- 详细了解 Cloud Monitoring。
- 为实例创建读取副本。