mysql.rds_set_external_master - Amazon Relational Database Service

mysql.rds_set_external_master

Configura uma instância de banco de dados MySQL para ser uma réplica de leitura de uma instância do MySQL que é executada externamente ao Amazon RDS.

Importante

Para executar esse procedimento, autocommit deve estar habilitado. Para habilitá-lo, defina o parâmetro autocommit como 1. Para obter informações sobre como modificar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.

nota

É possível usar o procedimento mysql.rds_set_external_master_with_delay armazenado para configurar uma instância de banco de dados de origem externa e uma replicação atrasada.

Sintaxe

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Parâmetros

host_name

O nome de host ou o endereço IP da instância do MySQL executada externamente ao Amazon RDS que se tornará a instância de banco de dados de origem.

host_port

A porta usada para executar a instância do MySQL executada externamente ao Amazon RDS a ser configurada como a instância de banco de dados de origem. Se sua configuração de rede inclui replicação de porta Secure Shell (SSH) que converte o número da porta, especifique o número da porta exposto pelo SSH.

replication_user_name

O ID de um usuário com as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância do MySQL executada externamente ao Amazon RDS. Recomendamos que você forneça uma conta que seja usada unicamente para a replicação com a instância externa.

replication_user_password

A senha do ID de usuário especificada em replication_user_name.

mysql_binary_log_file_name

O nome do log binário na instância de banco de dados de origem que contém as informações de replicação.

mysql_binary_log_file_location

O local no log binário mysql_binary_log_file_name no qual a replicação começa a ler as informações de replicação.

É possível determinar o nome e a localização do arquivo de binlog executando SHOW MASTER STATUS na instância do banco de dados de origem.

ssl_encryption

Um valor que especifica se a criptografia do Secure Sockets Layer (SSL) será usada na conexão de replicação. 1 especifica para usar criptografia de SSL, 0 especifica para não usar criptografia. O padrão é 0.

nota

A opção MASTER_SSL_VERIFY_SERVER_CERT não tem suporte. Essa opção é definida como 0, o que significa que a conexão é criptografada, mas os certificados não são verificados.

Observações de uso

O usuário mestre deve executar o procedimento mysql.rds_set_external_master. Esse procedimento deve ser executado na instância de banco de dados MySQL que será configurada como a réplica de leitura de uma instância do MySQL externa ao Amazon RDS.

Antes de executar mysql.rds_set_external_master, é necessário configurar a instância do MySQL executada externamente ao Amazon RDS para ser uma instância de banco de dados de origem. Para conectar-se à instância do MySQL sendo executada externamente ao Amazon RDS, você deve especificar valores de replication_user_name e replication_user_password que indicam um usuário de replicação com permissões de REPLICATION CLIENT e REPLICATION SLAVE na instância externa do MySQL.

Como configurar uma instância externa do MySQL como uma instância de banco de dados de origem

  1. Usando o cliente do MySQL de sua escolha, conecte-se à instância externa do MySQL e crie uma conta de usuário a ser usada para a replicação. Veja um exemplo a seguir.

    MySQL 5.7

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY 'password';
  2. Na instância externa do MySQL, conceda privilégios de REPLICATION CLIENT e REPLICATION SLAVE para seu usuário de replicação. O exemplo a seguir concede privilégios de REPLICATION CLIENT e REPLICATION SLAVE ao usuário 'repl_user' em todos os bancos de dados de seu domínio.

    MySQL 5.7

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';

    MySQL 8.0

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';

Para usar a replicação criptografada, configure a instância de banco de dados de origem para usar conexões SSL. Além disso, importe o certificado de autoridade de certificação, o certificado e a chave de clientes na instância de banco de dados ou no cluster do banco de dados usando o procedimento mysql.rds_import_binlog_ssl_material.

nota

Recomendamos que você use réplicas de leitura para gerenciar a replicação entre duas instâncias de banco de dados do Amazon RDS, sempre que possível. Quando você o fizer, recomendamos o uso somente desse e de outros procedimentos armazenados relacionados a replicação. Essas práticas permitem o uso de topologias de replicação mais complexas entre as instâncias de banco de dados do Amazon RDS. Oferecemos esses procedimentos armazenados principalmente para permitir a replicação com instâncias do MySQL externas ao Amazon RDS. Para obter informações sobre como gerenciar a replicação entre instâncias de banco de dados do Amazon RDS, consulte Como trabalhar com réplicas de leitura.

Depois de chamar mysql.rds_set_external_master para configurar uma instância de banco de dados do Amazon RDS, é possível chamar mysql.rds_start_replication na réplica de leitura para iniciar o processo de replicação. É possível chamar mysql.rds_reset_external_master para remover a configuração da réplica de leitura.

Quando mysql.rds_set_external_master é chamado, o Amazon RDS grava a hora, o usuário e uma ação do set master nas tabelas mysql.rds_history e mysql.rds_replication_status.

Exemplos

Ao executar em uma instância de banco de dados MySQL, o exemplo a seguir configura a instância do banco de dados para ser uma réplica de leitura de uma instância do MySQL que é executada externamente ao Amazon RDS.

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0);