Escalar leituras para o banco de dados MySQL com o Amazon Aurora
Você pode usar o Amazon Aurora com sua instância de banco de dados MySQL para aproveitar os recursos de escalabilidade de leitura do Amazon Aurora e expandir a workload de leitura de sua instância do banco de dados MySQL. Para usar o Aurora com a intenção de dimensionar as leituras da instância de banco de dados MySQL, crie um cluster de banco de dados do Amazon Aurora MySQL e faça dele uma réplica de leitura da instância de banco de dados MySQL. Isso se aplica a uma instância de banco de dados do RDS para MySQL ou a um banco de dados MySQL executado externamente em relação ao Amazon RDS.
Para obter informações sobre como criar com um cluster de banco de dados do Amazon Aurora, consulte Criar um cluster de bancos de dados do Amazon Aurora.
Ao configurar a replicação entre sua instância de banco de dados MySQL e seu cluster de banco de dados Amazon Aurora, certifique-se de seguir estas diretrizes:
-
Use o endereço de endpoint do cluster de banco de dados do Amazon Aurora ao fazer referência a seu cluster de banco de dados do Amazon Aurora MySQL. Se ocorrer um failover, a réplica do Aurora promovida a instância primária para o cluster de banco de dados do Aurora MySQL continuará a usar o endereço do endpoint do cluster de banco de dados.
-
Retenha os logs binários na instância de gravador até confirmar que eles foram aplicados à réplica do Aurora. Essa manutenção garante que você possa restaurar a instância de gravador em caso de falha.
Importante
Ao usar a replicação autogerenciada, você será responsável por monitorar e resolver quaisquer problemas de replicação que possam ocorrer. Para ter mais informações, consulte Diagnosticar e resolver atrasos entre réplicas de leitura.
nota
As permissões necessárias para iniciar a replicação em um cluster de banco de dados do Aurora MySQL são restritas e não estão disponíveis ao seu usuário principal do Amazon RDS. Portanto, você deve usar os procedimentos mysql.rds_set_external_master (Aurora MySQL versão 2) ou mysql.rds_set_external_source (Aurora MySQL versão 3) e mysql.rds_start_replication para configurar a replicação entre o cluster de banco de dados do Aurora MySQL e a instância de banco de dados MySQL.
Iniciar a replicação entre uma instância de origem externa e um cluster de banco de dados do Aurora MySQL
-
Confirme que a instância do banco de dados MySQL é somente leitura:
mysql>
FLUSH TABLES WITH READ LOCK;mysql>
SET GLOBAL read_only = ON; -
Execute o comando
SHOW MASTER STATUS
na instância do banco de dados MySQL de origem para determinar a localização do log binário. Você recebe um resultado semelhante ao seguinte exemplo:File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
-
Copie o banco de dados da instância de banco de dados MySQL externa para o cluster de banco de dados do Amazon Aurora MySQL usando
mysqldump
. Para bancos de dados muito grandes, pode ser conveniente usar o procedimento descrito em Importar dados para uma instância de banco de dados MariaDB ou MySQL do Amazon RDS com tempo de inatividade reduzido no Guia do usuário do Amazon Relational Database Service.Para Linux, macOS ou Unix:
mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u
local_user
\ -plocal_password
| mysql \ --host aurora_cluster_endpoint_address \ --port 3306 \ -uRDS_user_name
\ -pRDS_password
Para Windows:
mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u
local_user
^ -plocal_password
| mysql ^ --host aurora_cluster_endpoint_address ^ --port 3306 ^ -uRDS_user_name
^ -pRDS_password
nota
Confirme que não há um espaço entre a opção
-p
e a senha inserida.Use as opções
--host
,--user (-u)
,--port
e-p
no comandomysql
para especificar o nome do host, o nome do usuário, a porta e a senha para conectar-se ao cluster de banco de dados do Aurora. O nome do host é o nome de DNS do endpoint do cluster de banco de dados do Amazon Aurora, por exemplo,mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com
. Você pode encontrar o valor do endpoint nos detalhes do cluster no Console de gerenciamento do Amazon RDS. -
Confirme que é possível gravar na instância do banco de dados MySQL novamente:
mysql>
SET GLOBAL read_only = OFF;mysql>
UNLOCK TABLES;Para ter mais informações sobre como fazer backups para usar com a replicação, consulte Backing up a source or replica by making it read only
na documentação do MySQL. -
No Console de gerenciamento do Amazon RDS, adicione o endereço IP do servidor que hospeda o banco de dados MySQL de origem ao grupo de segurança da VPC para o cluster de banco de dados do Amazon Aurora. Para ter mais informações sobre como modificar um grupo de segurança da VPC, consulte Grupos de segurança para a VPC no Guia do usuário da Amazon Virtual Private Cloud.
Você também pode precisar configurar sua rede local para permitir conexões com o endereço IP de seu cluster de banco de dados Amazon Aurora, para que ele possa se comunicar com sua instância MySQL de origem. Para encontrar o endereço IP do cluster de banco de dados do Amazon Aurora, use o comando
host
.host
aurora_endpoint_address
O nome do host é o nome de DNS do endpoint do cluster de banco de dados Amazon Aurora.
-
Usando o cliente de sua preferência, conecte-se à instância externa do MySQL e crie um usuário do MySQL a ser usado para a replicação. Esta conta é usada unicamente para replicação e deve estar restrita ao seu domínio para melhorar a segurança. Veja um exemplo a seguir.
CREATE USER '
repl_user
'@'example.com
' IDENTIFIED BY 'password
'; -
Para a instância externa do MySQL, conceda privilégios de
REPLICATION CLIENT
eREPLICATION SLAVE
para seu usuário de replicação. Por exemplo, para conceder os privilégios deREPLICATION CLIENT
eREPLICATION SLAVE
em todos os bancos de dados para o usuário 'repl_user
' de seu domínio, emita o seguinte comando.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'example.com
' IDENTIFIED BY 'password
'; -
Faça um snapshot manual do cluster de banco de dados do Aurora MySQL para ser a réplica de leitura antes de configurar a replicação. Se for necessário restabelecer a replicação com o cluster de banco de dados como uma réplica de leitura, você poderá restaurar o cluster de banco de dados do Aurora MySQL desse snapshot, em vez de precisar importar os dados da instância de banco de dados MySQL para um novo cluster de banco de dados do Aurora MySQL.
-
Faça do cluster de banco Amazon Aurora a réplica. Conecte-se ao cluster de banco de dados do Amazon Aurora como o usuário principal e identifique o banco de dados MySQL de origem como a origem da replicação usando os procedimentos mysql.rds_set_external_master (Aurora MySQL versão 2) ou mysql.rds_set_external_source (Aurora MySQL versão 3) e mysql.rds_start_replication.
Use o nome do arquivo de log binário e a posição que você determinou na Etapa 2. Veja um exemplo a seguir.
For Aurora MySQL version 2: CALL mysql.rds_set_external_master ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0); For Aurora MySQL version 3: CALL mysql.rds_set_external_source ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
-
No cluster de banco de dados do Amazon Aurora, chame o procedimento mysql.rds_start_replication para iniciar a replicação.
CALL mysql.rds_start_replication;
Após ter estabelecido a replicação entre sua instância de banco de dados MySQL e seu cluster de banco de dados do Amazon Aurora, você poderá adicionar réplicas do Aurora ao seu cluster de banco de dados do Amazon Aurora. Você poderá então se conectar às réplicas do Aurora para fazer a escalabilidade de leitura de seus dados. Para obter informações sobre como criar uma réplica do Aurora, consulte Adicionar réplicas do Aurora a um cluster de banco de dados.