Criar uma réplica de leitura em uma Região da AWS diferente
Com o Amazon RDS, é possível criar uma réplica de leitura em uma Região da AWS diferente da instância de banco de dados de origem.
Crie uma réplica de leitura em uma Região da AWS diferente para fazer o seguinte:
-
Melhorar suas capacidades de recuperação de desastres.
-
Dimensionar operações de leitura em uma Região da AWS mais próxima de seus usuários.
-
Facilitar a migração de um datacenter em uma Região da AWS para um datacenter em outra Região da AWS.
Criar uma réplica de leitura em uma Região da AWS diferente da instância de origem é semelhante à criação de uma réplica na mesma Região da AWS. É possível usar o AWS Management Console, executar o comando create-db-instance-read-replica
ou chamar a operação de API CreateDBInstanceReadReplica
.
nota
Para criar uma réplica de leitura criptografada em uma Região da AWS diferente da instância de banco de dados de origem, a instância de banco de dados de origem deve ser criptografada.
Tópicos
Disponibilidade de região e versão
A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões com a replicação entre regiões, consulte Regiões e mecanismos de banco de dados compatíveis com réplicas de leitura entre regiões no Amazon RDS.
Criação de uma réplica de leitura entre regiões
O procedimento a seguir mostra como criar uma réplica de leitura de uma instância de banco de dados de origem do MariaDB, do Microsoft SQL Server, do MySQL, do Oracle ou do PostgreSQL em uma Região da AWS diferente.
É possível criar uma réplica de leitura entre Regiões da AWS usando o AWS Management Console.
Como criar uma réplica de leitura entre Regiões da AWS com o console
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Bancos de dados.
-
Selecione a instância de banco de dados do MariaDB, do Microsoft SQL Server, do MySQL, do Oracle ou do PostgreSQL que você deseja usar como a origem de réplica de leitura.
-
Em Actions (Ações), escolha Create read replica (Criar réplica de leitura).
-
Em DB instance identifier (Identificador da instância de banco de dados), insira um nome para a réplica de leitura.
-
Escolha a Destination Region (Região de destino).
-
Escolha as especificações da instância que você deseja usar. Recomendamos usar a mesma categoria de instância de banco de dados ou maior e o mesmo tipo de armazenamento para a réplica de leitura.
-
Para criar uma réplica de leitura criptografada em outra Região da AWS:
-
Selecione Ativar criptografia.
-
Em AWS KMS key, escolha o identificador do AWS KMS key da chave do KMS na Região da AWS de destino.
nota
Para criar uma réplica de leitura criptografada, a instância do banco de dados de origem deve ser criptografada. Para saber mais sobre a criptografia da instância de banco de dados de origem, consulte Criptografar recursos do Amazon RDS.
-
-
Escolha outras opções, como autoscaling do armazenamento.
-
Escolha Create read replica (Criar réplica de leitura).
Para criar uma réplica de leitura de uma instância de banco de dados de origem do MySQL, do Microsoft SQL Server, do MariaDB, do Oracle ou do PostgreSQL em uma Região da AWS diferente, é possível usar o comando create-db-instance-read-replica
. Nesse caso, use create-db-instance-read-replica
da Região da AWS em que você quer a réplica de leitura (região de destino) e especifique o nome do recurso da Amazon (ARN) da instância do banco de dados de origem. Um ARN identifica de forma exclusiva um recurso criado no Amazon Web Services.
Por exemplo, se a instância de banco de dados de origem estiver na região Leste dos EUA (N. da Virgínia), o ARN será semelhante a este exemplo:
arn:aws:rds:us-east-1:123456789012:db:mydbinstance
Para obter informações sobre ARNs, consulte Nomes de recurso da Amazon (ARNs) no Amazon RDS.
Para criar uma réplica de leitura em uma Região da AWS diferente da região da instância de banco de dados de origem, é possível usar o comando AWS CLIcreate-db-instance-read-replica
da Região da AWS de destino. Os seguintes parâmetros são necessários para criar uma réplica de leitura em outra Região da AWS:
-
--region
: a Região da AWS de destino em que a réplica de leitura é criada. -
--source-db-instance-identifier
– o identificador de instância de banco de dados para a instância de origem. Esse identificador deve estar no formato do ARN da Região da AWS de origem. -
--db-instance-identifier
: o identificador da réplica de leitura na Região da AWS de destino.
exemplo de uma réplica de leitura entre regiões
O código a seguir cria uma réplica de leitura na região Oeste dos EUA (Oregon) de uma instância de banco de dados de origem na região Leste dos EUA (N. da Virgínia).
Para Linux, macOS ou Unix:
aws rds create-db-instance-read-replica \ --db-instance-identifier
myreadreplica
\ --regionus-west-2
\ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
Para Windows:
aws rds create-db-instance-read-replica ^ --db-instance-identifier
myreadreplica
^ --regionus-west-2
^ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
Os seguintes parâmetros também são necessários para criar uma réplica de leitura criptografada em outra Região da AWS:
-
--kms-key-id
: o identificador da AWS KMS key da chave do KMS a ser usada para criptografar a réplica de leitura na Região da AWS de destino.
exemplo de uma réplica de leitura criptografada entre regiões
O código a seguir cria uma réplica de leitura criptografada na região Oeste dos EUA (Oregon) de uma instância de banco de dados de origem na região Leste dos EUA (N. da Virgínia).
Para Linux, macOS ou Unix:
aws rds create-db-instance-read-replica \ --db-instance-identifier
myreadreplica
\ --regionus-west-2
\ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
\ --kms-key-idmy-us-west-2-key
Para Windows:
aws rds create-db-instance-read-replica ^ --db-instance-identifier
myreadreplica
^ --regionus-west-2
^ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
^ --kms-key-idmy-us-west-2-key
A opção --source-region
é necessária quando você está criando uma réplica de leitura criptografada entre as regiões GovCloud (Leste dos EUA) da AWS e GovCloud (Oeste dos EUA) da AWS. Em --source-region
, especifique a Região da AWS da instância de banco de dados de origem.
Se a --source-region
não estiver especificada, especifique um valor de --pre-signed-url
. Uma presigned URL é um URL que contém uma solicitação assinada do Signature Versão 4 para o comando create-db-instance-read-replica
chamado na Região da AWS de origem. Para saber mais sobre a opção pre-signed-url
, consulte create-db-instance-read-replica na Referência de comandos da AWS CLI.
Para criar uma réplica de leitura de uma instância de banco de dados de origem do MySQL, do Microsoft SQL Server, do MariaDB, do Oracle ou do PostgreSQL em uma Região da AWS diferente, você pode chamar a operação da API do Amazon RDS CreateDBInstanceReadReplica. Nesse caso, chame CreateDBInstanceReadReplica na Região da AWS em que você deseja a réplica de leitura (região de destino) e especifique o nome do recurso da Amazon (ARN) da instância de banco de dados de origem. Um ARN identifica de forma exclusiva um recurso criado no Amazon Web Services.
Para criar uma réplica de leitura criptografada em uma Região da AWS diferente da região da instância de banco de dados de origem, é possível usar a operação CreateDBInstanceReadReplica
da API do Amazon RDS na Região da AWS de destino. Para criar uma réplica de leitura criptografada em outra Região da AWS, especifique um valor para PreSignedURL
. A PreSignedURL
deve conter uma solicitação para a operação CreateDBInstanceReadReplica
a ser chamada na Região da AWS de origem em que a réplica de leitura foi criada. Para saber mais sobre PreSignedUrl
, consulte CreateDBInstanceReadReplica
.
Por exemplo, se sua instância de banco de dados de origem estiver na região Leste dos EUA (N. da Virgínia) region, o ARN é semelhante ao seguinte.
arn:aws:rds:us-east-1:123456789012:db:mydbinstance
Para obter informações sobre ARNs, consulte Nomes de recurso da Amazon (ARNs) no Amazon RDS.
exemplo
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=®ion-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>
Como o Amazon RDS faz a replicação entre regiões
O Amazon RDS usa o seguinte processo para criar uma réplica de leitura entre regiões. Dependendo das Regiões da AWS envolvidas e da quantidade de dados nos bancos de dados, esse processo pode levar horas para ser concluído. Use essas informações para determinar até que ponto o processo prosseguiu ao criar uma réplica de leitura entre regiões:
-
O Amazon RDS começa a configurar a instância de banco de dados de origem como uma origem de replicação e define o status como modifying (modificação).
-
O Amazon RDS começa a configurar a réplica de leitura especificada na Região da AWS de destino e define o status como criando.
-
O Amazon RDS cria um snapshot automatizado do banco de dados da instância de banco de dados de origem na Região da AWS. O formato do nome do snapshot de banco de dados é
rds:<InstanceID>-<timestamp>
, onde<InstanceID>
é o identificador da instância de origem e<timestamp>
é a data e a hora em que a cópia começou. Por exemplo,rds:mysourceinstance-2013-11-14-09-24
foi criada a partir da instânciamysourceinstance
em2013-11-14-09-24
. Durante a criação de um snapshot de banco de dados automatizado, o status da instância do banco de dados de origem permanece como modifying (modificação), o status da réplica de leitura permanece como creating (criação) e o status do snapshot de banco de dados é creating (criação). A coluna de andamento da página snapshot de banco de dados (Snapshot de banco de dados) no console informa o andamento da criação do snapshot de banco de dados. Quando o snapshot de banco de dados estiver completo, o status do snapshot de banco de dados da instância do banco de dados de origem serão definidos como available (disponível). -
O Amazon RDS inicia uma cópia do snapshot entre regiões para a transferência de dados inicial. A cópia do snapshot é listada como um snapshot automático na Região da AWS de destino com um status de criando. Ele tem o mesmo nome que o snapshot de banco de dados de origem. A coluna de andamento da exibição do snapshot de banco de dados indica até que ponto a cópia evoluiu. Quando a cópia estiver completa, o status da cópia do snapshot de banco de dados será definido como available (disponível).
-
O Amazon RDS usa o snapshot de banco de dados copiado para a carga de dados inicial na réplica de leitura. Durante essa fase, a réplica de leitura estará na lista de instâncias de banco de dados no destino, com um status de creating (criação). Quando a carga estiver completa, o status da réplica de leitura será definido como available (disponível) e a cópia do snapshot de banco de dados será excluída.
-
Quando a réplica de leitura atingir o status disponível, o Amazon RDS começará a replicar as alterações feitas na instância de origem desde o início da operação de criação da réplica de leitura. Durante essa fase, o tempo de atraso da replicação para a réplica de leitura será maior que 0.
Para obter informações sobre o tempo de atraso de replicação, consulte Monitoramento da replicação de leitura.
Considerações sobre replicação entre regiões
Todas as considerações para a realização da replicação dentro de uma Região da AWS aplicam-se à replicação entre regiões. As seguintes considerações adicionais são válidas ao replicar entre Regiões da AWS:
-
Uma instância de banco de dados de origem pode ter réplicas de leitura entre várias Regiões da AWS. Devido ao limite no número de entradas da lista de controle de acesso (ACL) para a VPC de origem, o RDS não pode garantir mais de cinco instâncias de banco de dados de réplica de leitura entre regiões.
-
Você pode replicar entre as regiões da GovCloud (Leste dos EUA) e GovCloud (Oeste dos EUA), mas não para dentro ou para fora da GovCloud (EUA).
-
Para instâncias de banco de dados do Microsoft SQL Server, Oracle e PostgreSQL, só é possível criar uma réplica de leitura entre regiões do Amazon RDS a partir de uma instância de banco de dados de origem do Amazon RDS que não seja uma réplica de leitura de outra instância do banco de dados do Amazon RDS. Essa limitação não se aplica a instâncias de banco de dados do MariaDB e MySQL.
-
É possível que você perceba uma quantidade maior de tempo de atraso para réplicas de leitura que estejam em uma Região da AWS diferente da instância de origem. Esse tempo de atraso vem dos canais de rede mais longos entre os datacenters regionais.
-
Para replicações de leitura entre regiões, qualquer um dos comandos de criação de réplica de leitura que especifique o parâmetro
--db-subnet-group-name
deve especificar um grupo de sub-redes de banco de dados da mesma VPC. -
Na maioria dos casos, a réplica de leitura usa o grupo de parâmetros de banco de dados padrão e o grupo de opções de banco de dados do mecanismo de banco de dados especificado.
Para os mecanismos de banco de dados do MySQL e do Oracle, você pode especificar um grupo de parâmetros personalizado para a réplica de leitura na opção
--db-parameter-group-name
do comandocreate-db-instance-read-replica
da AWS CLI. Você não pode especificar um grupo de parâmetros personalizado ao usar o AWS Management Console. -
A réplica de leitura usa o grupo de segurança padrão.
-
Para instâncias de banco de dados do MariaDB, do Microsoft SQL Server, do MySQL e do Oracle, quando a instância de banco de dados de origem de uma réplica de leitura entre regiões é excluída, a réplica de leitura é promovida.
-
Para instâncias de bancos de dados PostgreSQL, quando a instância de banco de dados de origem de uma réplica de leitura entre regiões é excluída, o status de replicação da réplica de leitura é definido como
terminated
. A réplica de leitura não é promovida.É necessário promover a réplica de leitura manualmente ou excluí-la.
Solicitação de uma réplica de leitura entre regiões
Para se comunicar com a região de origem e solicitar a criação de uma réplica de leitura entre regiões, o solicitante (função do IAM ou usuário do IAM) deve ter acesso à instância de banco de dados de origem e à região de origem.
Certas condições na política do IAM do solicitante podem fazer com que a solicitação falhe. Os exemplos a seguir pressupõem que a instância de banco de dados de origem está em Leste dos EUA (Ohio) e a réplica de leitura é criada em Leste dos EUA (N. da Virgínia). Estes exemplos mostram condições na política do IAM do solicitante que fazem com que a solicitação falhe:
-
A política do solicitante tem uma condição para
aws:RequestedRegion
.... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }
A solicitação falha porque a política não permite acesso à região de origem. Para uma solicitação bem-sucedida, especifique as regiões de origem e de destino.
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
-
A política do solicitante não permite acesso à instância de banco de dados de origem.
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...
Para uma solicitação bem-sucedida, especifique a instância de origem e a réplica.
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
-
A política do solicitante nega
aws:ViaAWSService
.... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }
A comunicação com a região de origem é feita pelo RDS em nome do solicitante. Para uma solicitação bem-sucedida, não negue as chamadas feitas pelos serviços da AWS.
-
A política do solicitante tem uma condição para
aws:SourceVpc
ouaws:SourceVpce
.Essas solicitações podem falhar, pois quando o RDS faz a chamada para a região remota, ela não é feita a partir da VPC ou VPC endpoint especificados.
Se você precisar usar uma das condições anteriores que causariam uma falha de uma solicitação, é possível incluir uma segunda instrução com aws:CalledVia
em sua política, para fazer com que a solicitação seja bem-sucedida. Por exemplo, você pode usar aws:CalledVia
com aws:SourceVpce
como mostrado aqui:
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }
Para ter mais informações, consulte Políticas e permissões no IAM, no Guia do usuário do IAM.
Autorização de uma réplica de leitura
Após uma solicitação de criação de réplica de leitura de banco de dados entre regiões retornar success
, o RDS inicia a criação da réplica em segundo plano. Uma autorização para o RDS acessar a instância de banco de dados de origem é criada. Essa autorização vincula a instância de banco de dados de origem à réplica de leitura e permite que o RDS copie apenas para a réplica de leitura especificada.
A autorização é verificada pelo RDS usando a permissão rds:CrossRegionCommunication
na função do IAM vinculada ao serviço. Se a réplica estiver autorizada, o RDS se comunica com a região de origem e conclui a criação da réplica.
O RDS não tem acesso a instâncias de banco de dados que não foram autorizadas anteriormente por uma solicitação de CreateDBInstanceReadReplica
. A autorização é revogada quando a criação da réplica de leitura é concluída.
O RDS usa a função vinculada ao serviço para verificar a autorização na região de origem. Se você excluir a função vinculada ao serviço durante o processo de criação de replicação, a criação falhará.
Para ter mais informações, consulte Usar funções vinculadas a serviço no Guia do usuário do IAM.
Uso de credenciais do AWS Security Token Service
Os tokens de sessão do endpoint global do AWS Security Token Service (AWS STS) são válidos apenas nas Regiões da AWS habilitadas por padrão (regiões comerciais). Se você usar credenciais da operação da API assumeRole
no AWS STS, use o endpoint regional se a região de origem for uma região de aceitação. Caso contrário, haverá falha na solicitação. Isso acontece porque suas credenciais devem ser válidas em ambas as regiões, o que é verdadeiro para regiões opcionais somente quando o endpoint regional do AWS STS é usado.
Para usar o endpoint global, certifique-se de que ele esteja ativado para ambas as regiões nas operações. Defina o endpoint global como Valid in all Regiões da AWS
nas configurações da conta do AWS STS.
A mesma regra se aplica às credenciais no parâmetro pre-signed URL.
Para ter mais informações, consulte Gerenciar o AWS STS em uma Região da AWS no Guia do usuário do IAM.
Custos da replicação entre regiões
Os dados transferidos para replicação entre regiões incorrem em cobranças de transferência de dados do Amazon RDS As ações de replicação entre regiões geram cobranças referentes aos dados transferidos para fora da Região da AWS de origem:
-
Quando você cria uma réplica de leitura, o Amazon RDS cria um snapshot da instância de origem e transfere esse snapshot para a Região da AWS da réplica de leitura.
-
Para cada modificação de dados feita nos bancos de dados de origem, o Amazon RDS transfere os dados da Região da AWS de origem para a Região da AWS da réplica de leitura.
Para ter mais informações sobre a definição e preço da transferência de dados, consulte Definição de preço do Amazon RDS
Para instâncias do MySQL e do MariaDB, é possível reduzir seus custos de transferência de dados reduzindo o número de réplicas de leitura criadas entre regiões. Por exemplo, suponhamos que você tenha uma instância de banco de dados de origem em uma Região da AWS e queira manter três réplicas de leitura em outra Região da AWS. Nesse caso, crie somente uma das réplicas de leitura da instância do banco de dados de origem. Crie as outras duas réplicas da primeira réplica de leitura, e não da instância de banco de dados de origem.
Por exemplo, se você tiver a source-instance-1
em uma Região da AWS, você poderá fazer o seguinte:
-
Crie a
read-replica-1
na nova Região da AWS, especificando asource-instance-1
como a origem. -
Crie
read-replica-2
deread-replica-1
. -
Crie
read-replica-3
deread-replica-1
.
Neste exemplo, serão cobrados de você somente os dados transferidos de source-instance-1
para read-replica-1
. A transferência dos dados transferidos da read-replica-1
para as outras duas réplicas não será cobrada, pois elas estão todas na mesma Região da AWS. Se você criar todas as três réplicas diretamente de source-instance-1
, serão cobradas de você as transferências de dados das três réplicas.