AWS-CLI: создание инстанса БД RDS Aurora в существующем кластере, созданном из моментального снимка

Основываясь на своем исследовании, я обнаружил, что единственный способ создать с помощью CLI кластер Aurora с экземплярами внутри него из существующего снимка состояния - это выполнить следующие шаги:

1) Создать снимок из существующего кластера

2) Запустить кластер из снапшота

3) Добавить экземпляр в кластер

Таким образом, команды, которые я выполнил с использованием самой последней версии AWS CLI, следующие (вместе с выходными данными):

aws rds create-db-cluster-snapshot \
  --db-cluster-snapshot-identifier analytics-replica-db \
  --db-cluster-identifier prodcluster

который выводит

{
    "DBClusterSnapshot": {
        "Engine": "aurora",
        "SnapshotCreateTime": "2017-07-24T15:08:12.836Z",
        "VpcId": "vpc-ID",
        "DBClusterIdentifier": "cluster_name",
        "DBClusterSnapshotArn": "arn:aws:rds:eu-west-1:aws_account:cluster-snapshot:analytics-replica-db",
        "MasterUsername": "db_username",
        "LicenseModel": "aurora",
        "Status": "creating",
        "PercentProgress": 0,
        "DBClusterSnapshotIdentifier": "analytics-replica-db",
        "IAMDatabaseAuthenticationEnabled": false,
        "ClusterCreateTime": "2016-04-14T11:10:02.413Z",
        "StorageEncrypted": false,
        "AllocatedStorage": 1,
        "EngineVersion": "5.6.10a",
        "SnapshotType": "manual",
        "AvailabilityZones": [
            "eu-west-1a",
            "eu-west-1b",
            "eu-west-1c"
        ],
        "Port": 0
    }
}

После этого я создаю кластер, используя это:

aws rds restore-db-cluster-from-snapshot \
  --db-cluster-identifier analytics-replica-cluster \
  --snapshot-identifier analytics-replica-db \
  --engine aurora \
  --port 3306 \
  --db-subnet-group-name this_is_a_subnet_group \
  --database-name this_is_the_database_name_equal_to_original_cluster_db \
  --vpc-security-group-ids this_is_a_random_security_group \
  --no-enable-iam-database-authentication

который выводит

{
    "DBCluster": {
        "MasterUsername": "this_is_the_same_username_as_the_one_on_original_db",
        "ReaderEndpoint": "this_is_the_new_RDS_endpoint_of_cluster",
        "ReadReplicaIdentifiers": [],
        "VpcSecurityGroups": [
            {
                "Status": "active",
                "VpcSecurityGroupId": "this_is_that_security_group"
            }
        ],
        "HostedZoneId": "Z29XKXDKYMONMX",
        "Status": "creating",
        "MultiAZ": false,
        "PreferredBackupWindow": "23:50-00:20",
        "DBSubnetGroup": "this_is_a_subnet_group",
        "AllocatedStorage": 1,
        "BackupRetentionPeriod": 10,
        "PreferredMaintenanceWindow": "fri:03:34-fri:04:04",
        "Engine": "aurora",
        "Endpoint": "this_is_the_new_RDS_endpoint_of_reader",
        "AssociatedRoles": [],
        "IAMDatabaseAuthenticationEnabled": false,
        "ClusterCreateTime": "2017-07-24T15:11:07.003Z",
        "EngineVersion": "5.6.10a",
        "DBClusterIdentifier": "analytics-replica-cluster",
        "DbClusterResourceId": "cluster-resource_id",
        "DBClusterMembers": [],
        "DBClusterArn": "arn:aws:rds:eu-west-1:aws_account:cluster:analytics-replica-cluster",
        "StorageEncrypted": false,
        "DatabaseName": "this_is_the_database_name_equal_to_original_cluster_db",
        "DBClusterParameterGroup": "default.aurora5.6",
        "AvailabilityZones": [
            "eu-west-1a",
            "eu-west-1b",
            "eu-west-1c"
        ],
        "Port": 3306
    }
}

И теперь все, что я хочу сделать, это просто запустить это

aws rds create-db-instance \
  --db-name this_is_the_database_name_equal_to_original_cluster_db \
  --db-instance-identifier analytics-replica-instance \
  --db-instance-class "db.r3.large" \
  --publicly-accessible \
  --no-enable-iam-database-authentication \
  --db-cluster-identifier analytics-replica-cluster \
  --engine aurora

который выводит

Произошла ошибка (InvalidParameterCombination) при вызове операции CreateDBInstance: запрошенный инстанс БД будет членом кластера БД. Задайте имя базы данных для кластера БД.

Может ли кто-нибудь, ПОЖАЛУЙСТА, сказать мне, почему он меня ненавидит?


person Marius Mitrofan    schedule 24.07.2017    source источник
comment
Не передавайте --db-name, потому что он установлен в кластере, а не в экземпляре. Запрошенный инстанс БД будет членом кластера БД. [Вы можете только] Установить [имя] базы данных для кластера БД [не экземпляра].   -  person Michael - sqlbot    schedule 25.07.2017
comment
Спасибо! Даст ему еще одну попытку через несколько секунд без --db-name в кластере   -  person Marius Mitrofan    schedule 25.07.2017
comment
Ты прав! Я плохо понимал сообщение об ошибке. Спасибо большое за вашу помощь!!!   -  person Marius Mitrofan    schedule 25.07.2017


Ответы (1)


Для тех, кто сталкивается с той же проблемой, некоторые параметры недоступны при добавлении нового экземпляра в кластер aurora.

Ошибка вначале непростая, но ее легко понять. Последняя часть, Set database name for the DB Cluster., указывает на реальную проблему, и в большинстве случаев вам необходимо удалить свойство.

Другой пример An error occurred (InvalidParameterCombination) when calling the CreateDBInstance operation: The requested DB Instance will be a member of a DB Cluster. Set backup retention period for the DB Cluster. нужно удалить --backup-retention-period

person Christian Daniel Avila Sanchez    schedule 15.05.2020