是的,Amazon RDS的Multi-AZ具有自动故障转移能力。在Multi-AZ部署中,Amazon RDS会自动将主数据库实例的写入流量和读取副本重定向到备份数据库实例,以实现高可用性和可靠性。
以下是一个使用AWS SDK for Java创建Multi-AZ Amazon RDS实例并在发生主实例故障时执行自动故障转移的示例代码:
AmazonRDS client = AmazonRDSClientBuilder.standard().withRegion(Regions.US_WEST_2).build();
CreateDBInstanceRequest request = new CreateDBInstanceRequest()
.withDBInstanceIdentifier("my-multi-az-db-instance")
.withAllocatedStorage(20)
.withDBInstanceClass("db.t2.micro")
.withEngine("mysql")
.withMasterUsername("myuser")
.withMasterUserPassword("mypassword")
.withDBName("mydbname")
.withMultiAZ(true);
CreateDBInstanceResult result = client.createDBInstance(request);
// Wait for the instance to become available
boolean instanceAvailable = false;
while (!instanceAvailable) {
DescribeDBInstancesRequest describeRequest = new DescribeDBInstancesRequest()
.withDBInstanceIdentifier("my-multi-az-db-instance");
DescribeDBInstancesResult describeResult = client.describeDBInstances(describeRequest);
DBInstance dbInstance = describeResult.getDBInstances().get(0);
String instanceStatus = dbInstance.getDBInstanceStatus();
if (instanceStatus.equals("available")) {
instanceAvailable = true;
} else {
Thread.sleep(30000); // Wait 30 seconds and check again
}
}
// Simulate primary instance failure
RebootDBInstanceRequest rebootRequest = new RebootDBInstanceRequest()
.withDBInstanceIdentifier("my-multi-az-db-instance")
.withForceFailover(true);
client.rebootDBInstance(rebootRequest);
在此示例中,我们首先使用AWS SDK for Java创建一个Multi-AZ Amazon RDS实例。然后,我们等待该实例变为可用状态。最后,我们通过模拟主实例故障来演示自动故障转移。在此情况下,Amazon RDS会自动将写入流量和读取副本重定向到备份实例。