Este tópico descreve como verificar a separação de leitura e gravação em uma instância do ApsaraDB RDS for MySQL que executa a RDS High-availability Edition. Neste tópico, uma instância do Elastic Compute Service (ECS) conecta-se à instância RDS por uma rede interna.
Pré-requisitos
Uma instância RDS primária que executa a RDS High-availability Edition foi criada.
Uma instância RDS somente leitura foi criada para a instância RDS primária.
-
Primeiro, crie pelo menos um banco de dados que contenha ao menos uma tabela na instância RDS. Além disso, crie também uma conta de teste para a instância RDS. A conta de teste pode ser padrão ou privilegiada. Para mais informações, consulte crie contas e bancos de dados.
NotaAo criar uma conta padrão, conceda a ela as permissões Read/Write (DDL + DML) no banco de dados desejado.
Neste exemplo, são criados um banco de dados chamado testdb01, uma tabela chamada products e uma conta de teste chamada cxx1.
Uma lista de permissões de endereços IP foi configurada para a instância RDS.
A instância ECS conectada à instância RDS reside na mesma Virtual Private Cloud (VPC) que a instância RDS. O cliente MySQL está instalado na instância ECS.
O recurso de proxy de banco de dados está ativado para a instância RDS.
O recurso SQL Explorer and Audit está ativado para a instância RDS.
Informações de contexto
A capacidade de separação de leitura e gravação do recurso de proxy de banco de dados encaminha solicitações de gravação para a instância RDS primária e solicitações de leitura para a instância RDS somente leitura para implementar a separação automática de leitura e gravação. Isso alivia a carga de solicitações de leitura da instância RDS primária. Primeiro, ative e configure o recurso de proxy de banco de dados e execute as operações deste tópico para verificar se as solicitações de leitura e gravação são encaminhadas com base nos pesos de leitura especificados.
Processo de verificação
Neste exemplo, uma instância ECS conecta-se à instância RDS por uma rede interna para verificar a eficácia da separação de leitura e gravação. Execute as seguintes etapas:
No console do ApsaraDB RDS, defina o peso da instância RDS somente leitura como um múltiplo de 100 e o peso da instância RDS primária como 0. Essas configurações garantem que todas as solicitações de leitura sejam encaminhadas para a instância RDS somente leitura. Neste exemplo, o peso da instância RDS somente leitura é definido como 10000 e o da instância RDS primária como 0.
Use a conta de teste para conectar a instância ECS à instância RDS usando o endpoint de proxy de banco de dados e execute operações de leitura e gravação.
Na página SQL Explorer and Audit do console do ApsaraDB RDS, visualize os registros das instruções SQL executadas na instância RDS primária e na instância RDS somente leitura.
Verifique nos registros de execução das instruções SQL se a instância RDS somente leitura processou as solicitações de leitura. Confirme também se a instância primária processou as solicitações de gravação para validar a separação de leitura e gravação.
Procedimento
-
Especifique os pesos de leitura.
Faça logon no console do ApsaraDB RDS e acesse a página Instances. Na barra de navegação superior, selecione a região da instância RDS primária. Em seguida, localize a instância RDS primária e clique no ID da instância.
No painel de navegação à esquerda, clique em Database Proxy. Na seção Connection Information, localize o ID do endpoint de proxy desejado.
Na coluna Actions do endpoint de proxy desejado, clique em Modify Configuration.
-
Na caixa de diálogo exibida, configure os seguintes parâmetros:
Defina Read/Write Attributes como Read/Write (Read/Write Splitting).
Em Read Weight Allocation, selecione Custom. Defina o peso da instância somente leitura como 10000 e o peso da instância primária como 0. Em seguida, clique em OK.
Na seção Connection Information, obtenha o endpoint de proxy do tipo VPC.
-
Use a conta de teste cxx1 para conectar a instância ECS ao banco de dados e, em seguida, execute operações de leitura.
-
Faça logon na instância ECS que você deseja conectar à instância RDS.
NotaPara mais informações sobre como fazer logon em uma instância ECS, consulte Connect to an instance.
-
Execute o seguinte comando para conectar a instância ECS à instância RDS:
mysql -hProxy endpoint -PPort number -uUsername -pPasswordA tabela a seguir descreve os parâmetros usados no comando anterior.
Parâmetro
Descrição
Configuração
Proxy Endpoint
O endpoint de proxy do tipo VPC-type obtido em Step 1.
Se você usar um cliente para se conectar à instância RDS, use um endpoint de proxy public.
P
O número da porta. Após a letra P maiúscula, insira o número da porta.
N/D.
-u
O nome de usuário. Após a letra u, insira o nome de usuário.
N/D.
p
A senha. Após a letra p minúscula, insira a senha.
Insira a senha após
-p. Não são permitidos espaços.Você também pode inserir a senha após executar o comando, em vez de digitá-la após
-pantes da execução. Isso ajuda a evitar que a senha seja exibida em texto simples. -
Execute o seguinte comando para acessar o banco de dados testdb01:
USE testdb01; -
Execute as instruções SQL para operações de leitura seis vezes. Exemplo de instrução:
SELECT * FROM products LIMIT 20;
-
-
Execute as instruções SQL para operações de gravação no banco de dados testdb01 três vezes. Exemplo de instrução:
NotaNa etapa anterior, você conectou a instância ECS à instância RDS e acessou o banco de dados testdb01. Para mais informações, consulte Step 2.
CREATE TABLE Products11 ( prod_id CHAR(10) NOT NULL, vend_id CHAR(10) NOT NULL, prod_name CHAR(254) NOT NULL, prod_price DECIMAL(8,2) NOT NULL, prod_desc VARCHAR(1000) NULL ); -
Visualize os registros das instruções SQL executadas na instância RDS primária e na instância RDS somente leitura.
Além disso, confirme se a instância somente leitura processou todas as consultas
SELECTe se a instância primária processou todas as consultasCREATE. Certifique-se de que não haja logs de consultasCREATEna instância somente leitura.Faça logon no console do ApsaraDB RDS e acesse a página Instances. Na barra de navegação superior, selecione a região da instância RDS primária. Em seguida, localize a instância RDS primária e clique no ID da instância.
No painel de navegação à esquerda da instância primária, escolha . Selecione um intervalo de tempo e clique em Search. Além disso, confirme se não há logs de execução para a consulta
SELECT.No painel de navegação à esquerda da instância primária, clique em Basic Information. Passe o mouse sobre o número ao lado de Read-only Instance e clique no ID da instância somente leitura na caixa de diálogo exibida.
No painel de navegação à esquerda da instância somente leitura, escolha . Selecione um intervalo de tempo e clique em Search. Os logs de auditoria SQL mostram seis registros da consulta
SELECT * FROM products LIMIT 20. O banco de dados é testdb01, o tipo de operação é SELECT e o status de todas as operações é Success.No painel de navegação à esquerda da instância primária, escolha . Selecione um intervalo de tempo e clique em Search. Você pode visualizar três registros de execução do comando
CREATE. Por exemplo, esses registros podem corresponder a consultas comoCREATE TABLE Products11,CREATE TABLE Products12eCREATE TABLE Products13. O banco de dados é testdb01 e o status de todas as operações é Success.
Conclusão da verificação
Se você definir o peso da instância RDS somente leitura como 10000 e o da instância RDS primária como 0, a instância RDS primária processará todas as solicitações de gravação e a instância RDS somente leitura processará todas as solicitações de leitura. Dessa forma, a separação de leitura e gravação é implementada.