Conectar a um cluster de banco de dados multi-AZ - Amazon Relational Database Service

Conectar a um cluster de banco de dados multi-AZ

Um cluster de banco de dados multi-AZ tem três instâncias de banco de dados em vez de uma única instância de banco de dados. Cada conexão é processada por uma instância de banco de dados específica. Quando você se conecta a um cluster de banco de dados multi-AZ, o nome de host e a porta especificados apontam para um nome de domínio totalmente qualificado chamado de endpoint. O cluster de banco de dados multi-AZ utiliza o mecanismo de endpoint para abstrair essas conexões para que você não precise especificar exatamente a qual instância de banco de dados no cluster de banco de dados se conectar. Por isso, você não precisa codificar todos os nomes de host ou escrever a própria lógica para reorganizar conexões quando algumas instâncias de banco de dados não estão disponíveis.

O endpoint do gravador conecta-se à instância de banco de dados de gravador do cluster de banco de dados, que oferece suporte a operações de leitura e gravação. O endpoint leitor se conecta a qualquer uma das duas instâncias de banco de dados de leitor, que aceitam apenas operações de leitura.

Usando endpoints, você pode mapear todas as conexões para a instância de banco de dados apropriada ou o grupo de instâncias de banco de dados com base no seu caso de uso. Por exemplo, para realizar instruções DDL e DML, conecte-se à instância de banco de dados que atua como gravador. Para realizar consultas, você pode se conectar ao endpoint leitor, com o cluster de banco de dados multi-AZ gerenciando automaticamente as conexões entre as instâncias de banco de dados de leitor. Para diagnósticos ou ajustes, conecte-se a um endpoint de instância de banco de dados específico para examinar detalhes sobre uma instância de banco de dados específica.

Para saber mais sobre como se conectar à sua instância de banco de dados, consulte Conectar a uma instância de banco de dados do Amazon RDS.

Tipos de endpoints de cluster de banco de dados multi-AZ

Um endpoint é representado por um identificador exclusivo que contém um endereço de host. Os tipos de endpoints a seguir estão disponíveis em um cluster de banco de dados multi-AZ:

Endpoint do cluster

Um endpoint de cluster (ou endpoint de gravador) de um cluster de banco de dados multi-AZ se conecta à instância de banco de dados de gravador atual desse cluster de banco de dados. Esse endpoint é o único capaz de realizar operações de gravação, como instruções DDL e DML. Esse endpoint também pode realizar operações de leitura.

Cada cluster de banco de dados multi-AZ tem um único endpoint de cluster e uma única instância de banco de dados de gravador.

Use o endpoint cluster em todas as operações de gravação no cluster de banco de dados, inclusive inserções, atualizações, exclusões e alterações DDL. Você também pode usar o endpoint de cluster para operações de leitura, como consultas.

Se a instância de banco de dados de gravador atual de um cluster de banco de dados falhar, o cluster de banco de dados multi-AZ fará failover automático para uma nova instância de banco de dados de gravador. Durante um failover, o cluster de banco de dados continua atendendo a solicitações de conexão para o endpoint de cluster pela nova instância de banco de dados de gravador, com interrupção mínima de serviço.

O exemplo a seguir ilustra um endpoint de cluster para um cluster de banco de dados multi-AZ.

mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com

Endpoint de leitor

Um endpoint leitor de um cluster de banco de dados multi-AZ é compatível com balanceamento de carga para conexões somente leitura com o cluster de banco de dados. Use o endpoint do leitor para operações de leitura, como consultas SELECT. Ao processar essas instruções nas instâncias de banco de dados de leitor, esse endpoint reduz a sobrecarga na instância de banco de dados de gravador. Ele também ajuda o cluster a escalar a capacidade de processar consultas SELECT simultâneas. Cada cluster de banco de dados multi-AZ tem um único endpoint de leitor.

O endpoint leitor envia cada solicitação de conexão para uma das instâncias de banco de dados de leitor. Quando você usa o endpoint de leitor para uma sessão, apenas é possível executar instruções somente leitura, como SELECT, nessa sessão.

O exemplo a seguir ilustra um endpoint de leitor para um cluster de banco de dados multi-AZ. A intenção somente leitura de um endpoint leitor é indicada por -ro no nome do endpoint do cluster.

mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com

Endpoint da instância

Um endpoint de instância conecta-se a uma instância de banco de dados específica dentro de um cluster de banco de dados multi-AZ. Cada instância de banco de dados em um cluster de banco de dados, tem o próprio endpoint de instância exclusivo. Portanto, há um endpoint de instância para a instância de banco de dados de gravador atual do cluster de banco de dados e há um endpoint de instância para cada uma das instâncias de banco de dados de leitor no cluster de banco de dados.

O endpoint de instância oferece controle direto sobre as conexões com o cluster de banco de dados. Esse controle pode ajudar a resolver cenários nos quais talvez não seja apropriado utilizar o endpoint de cluster ou o endpoint de leitor. Por exemplo, o aplicativo cliente pode exigir um balanceamento de carga mais refinado com base no tipo de workload. Nesse caso, é possível configurar vários clientes para se conectarem a instâncias de banco de dados diferentes em um cluster de banco de dados com o objetivo de distribuir workloads de leitura.

O exemplo a seguir ilustra um endpoint de instância para uma instância de banco de dados em um cluster de banco de dados multi-AZ.

mydbinstance.123456789012.us-east-1.rds.amazonaws.com

Visualizar os endpoints de um cluster de banco de dados multi-AZ

No AWS Management Console, você vê o endpoint de cluster e o endpoint de leitor na página de detalhes de cada cluster de banco de dados multi-AZ. Você vê o endpoint de instância na página de detalhes de cada instância de banco de dados.

Com a AWS CLI, você vê os endpoints de gravador e leitor na saída do comando describe-db-clusters. Por exemplo, o comando a seguir mostra os atributos de endpoint para todos os clusters na região atual da AWS.

aws rds describe-db-cluster-endpoints

Com a API do Amazon RDS, você recupera os endpoints chamando a ação DescribeDBClusterEndpoints. Essa saída também mostra endpoints de cluster de bancos de dados Amazon Aurora, se houver.

Usar o endpoint de cluster

Cada cluster de banco de dados multi-AZ tem um único endpoint de cluster integrado, cujo nome e outros atributos são gerenciados pelo Amazon RDS. Não crie, exclua nem modifique esse tipo de endpoint.

Use o endpoint de cluster ao administrar seu cluster de banco de dados, realizar operações Extract, Transform, Load (ETL – Extração, transformação, carregamento) ou desenvolver e testar aplicações. O endpoint de cluster conecta-se à instância de banco de dados de gravador do cluster. A instância de banco de dados de gravador é a única em que você cria tabelas e índices, executa instruções INSERT e realiza outras operações DDL e DML.

O endereço IP físico apontado pelo endpoint de cluster muda quando o mecanismo de failover promove uma nova instância de banco de dados como a instância de banco de dados de gravador do cluster. Caso você use alguma forma de agrupamento de conexões ou outra multiplexação, prepare-se para enviar ou reduzir a vida útil para todas as informações DNS armazenadas em cache. Isso garante que você não tente estabelecer uma conexão de leitura/gravação com uma instância de banco de dados que fique indisponível ou seja somente leitura após um failover.

Usar o endpoint de leitor

Use o endpoint de leitor em conexões somente leitura com o seu cluster de banco de dados multi-AZ. Esse endpoint ajuda o cluster de banco de dados a lidar com uma workload com uso intensivo de consulta. O endpoint leitor é o endpoint fornecido para aplicações que geram relatórios ou fazem outra operações somente leitura sobre o cluster. O endpoint leitor envia as conexões para instâncias de banco de dados de leitor disponíveis em um cluster de banco de dados multi-AZ.

Cada cluster multi-AZ tem um único endpoint de leitor integrado, cujo nome e outros atributos são gerenciados pelo Amazon RDS. Não crie, exclua nem modifique esse tipo de endpoint.

Usar os endpoints de instância

Cada instância de banco de dados em um cluster de banco de dados multi-AZ tem seu próprio endpoint de instância integrado, cujo nome e outros atributos são gerenciados pelo Amazon RDS. Não crie, exclua nem modifique esse tipo de endpoint. Com um cluster de banco de dados multi-AZ, você normalmente usa os endpoints de gravador e leitor com mais frequência do que os endpoints de instância.

Nas operações diárias, a principal maneira de usar endpoints de instância é diagnosticar problemas de capacidade ou performance que afetam uma instância de banco de dados específica em um cluster de banco de dados multi-AZ. Conectado a uma instância de banco de dados específica, examine as variáveis de status, as métricas etc. Fazer isso pode ajudar a determinar o que está acontecendo nessa instância de banco de dados diferente do que está acontecendo com outras instâncias de banco de dados no cluster.

Como os endpoints de banco de dados multi-AZ funcionam com alta disponibilidade

Para clusters de banco de dados multi-AZ em que a alta disponibilidade é importante, utilize o endpoint de gravador para conexões de leitura/gravação ou de uso geral e o endpoint de leitor para conexões somente leitura. Os endpoints de leitor e de gravador gerenciam o failover da instância de banco de dados melhor do que os endpoints de instância. Ao contrário dos endpoints de instância, os endpoints de leitor e de gravador alteram automaticamente a qual instância de banco de dados eles se conectam caso uma instância de banco de dados no cluster fique indisponível.

Se a instância de banco de dados de gravador de um cluster de banco de dados falhar, o Amazon RDS fará failover automaticamente para uma nova instância de banco de dados de gravador. Ele faz isso promovendo uma instância de banco de dados do leitor para uma nova instância de banco de dados de gravador. Se ocorrer um failover, será possível utilizar o endpoint de gravador para se reconectar à instância de banco de dados de gravador recém-promovida. Ou você pode usar o endpoint de leitor para se reconectar a uma das instâncias de banco de dados de leitor no cluster de banco de dados. Durante um failover, o endpoint de leitor pode direcionar conexões à nova instância de banco de dados de gravador de um cluster de banco de dados por um curto período depois que uma instância de banco de dados de leitor é promovida para a nova instância de banco de dados de gravador. Se você projeta sua própria lógica de aplicação para gerenciar conexões de endpoint de instância, poderá descobrir manual ou programaticamente o conjunto resultante de instâncias de banco de dados disponíveis no cluster de banco de dados.

Conectar-se a clusters de banco de dados multi-AZ com os drivers da AWS

O pacote de drivers da AWS foram projetados para comportar tempos mais rápidos de transição e de failover, além de autenticação com o AWS Secrets Manager, o AWS Identity and Access Management (IAM) e identidades federadas. Os drivers da AWS dependem do monitoramento do status do cluster de banco de dados e do conhecimento da topologia do cluster para determinar o novo gravador. Essa abordagem reduz os tempos de transição e de failover para segundos de um dígito, em comparação com dezenas de segundos para drivers de código aberto.

Como novos recursos do serviço são introduzidos, o objetivo do pacote de drivers da AWS é ter suporte integrado para esses recursos do serviço.

Conectar-se a clusters de banco de dados multi-AZ com o driver JDBC da Amazon Web Services (AWS)

O driver JDBC da Amazon Web Services (AWS) foi projetado como um wrapper JDBC avançado para ajudar as aplicações a aproveitar os recursos dos bancos de dados em cluster. Esse wrapper é complementar e amplia a funcionalidade do driver JDBC existente. O driver é compatível de forma intercambiável com os seguintes drivers de comunidade:

  • MySQL Connector/J

  • MariaDB Connector/J

  • pgJDBC

Para instalar o driver JDBC da AWS, anexe o arquivo .jar do driver JDBC da AWS (localizado na aplicação CLASSPATH) e mantenha referências ao respectivo driver da comunidade. Atualize o respectivo prefixo do URL de conexão da seguinte forma:

  • jdbc:mysql:// para jdbc:aws-wrapper:mysql://

  • jdbc:mariadb:// para jdbc:aws-wrapper:mariadb://

  • jdbc:postgresql:// para jdbc:aws-wrapper:postgresql://

Consulte mais informações sobre o driver JDBC da AWS e siga as instruções para usá-lo em Amazon Web Services (AWS) JDBC Driver GitHub repository.

Conectar-se a clusters de banco de dados multi-AZ com o driver Python da Amazon Web Services (AWS)

O driver Python da Amazon Web Services (AWS) foi projetado como um wrapper Python avançado. Esse wrapper é complementar e amplia a funcionalidade do driver Psycopg de código aberto. O driver Python da AWS é compatível com as versões 3.8 e posterior do Python. É possível instalar o pacote aws-advanced-python-wrapper usando o comando pip, bem como os pacotes de código aberto psycopg.

Para ter mais informações sobre o driver Python da AWS e instruções completas para usá-lo, consulte Amazon Web Services (AWS) Python Driver GitHub repository.