Como configurar a replicação do MySQL Master-Slave
- 1444
- 362
- Mr. Mitchell Hansen
A replicação do MySQL é um processo em que um servidor mestre replica seus dados em um ou mais servidores de escravos. Isso pode fornecer vários benefícios, como maior disponibilidade de dados, desempenho aprimorado e backups mais fáceis. Um aspecto importante da replicação é a segurança e, neste artigo, exploraremos como configurar a replicação do MySQL Master-Slave com autenticação usando certificados SSL.
Ao usar certificados SSL, podemos garantir que os dados que estão sendo replicados sejam seguros e só possam ser acessados por partes autorizadas. Além disso, os certificados SSL também podem ser usados para autenticar os servidores mestre e escravo, fornecendo uma camada adicional de segurança.
Neste artigo, examinaremos o processo de configuração de uma configuração de replicação de escravos mestre com certificados SSL, incluindo a criação e a instalação dos certificados, a configuração dos servidores mestre e escravo e problemas de solução de problemas.
Benefícios de replicação do MySQL
Os principais benefícios da replicação do MySQL Master-Slave são:
- Desempenho: Um dos principais benefícios é que ele permite a descarga de consultas somente leitura do banco de dados mestre para os escravos, melhorando o desempenho e a escalabilidade do sistema de banco de dados. Isso ocorre porque o banco de dados mestre é responsável apenas por lidar com transações escritas, enquanto os escravos podem lidar com transações de leitura.
- Redundância e tolerância a falhas: Outro benefício da replicação do MySQL Master-Slave é que ela fornece um nível de redundância e tolerância a falhas. Se o banco de dados mestre diminuir, os escravos poderão continuar a servir solicitações de leitura, minimizando o tempo de inatividade. Além disso, se um banco de dados de escravos diminuir, ele poderá ser substituído por um novo escravo, e os dados podem ser sincronizados do mestre.
- Restaurar e recuperar: A replicação do escravo principal MySQL também pode ser usado para backups e recuperação de dados. Ao fazer backups regularmente dos escravos, você pode ter uma cópia dos dados que podem ser usados em caso de desastre no banco de dados mestre.
Este artigo ajudará você a configurar a replicação mestre-escravo entre dois servidores MySQL. Este tutorial é testado no Ubuntu 22.04 Instância do Linux com MySQL 8.0 servidor de banco de dados.
Detalhes da configuração:
Para fins de teste, criei dois sistemas na minha rede local. Ambos os sistemas têm IP diferente da mesma rede. Supondo que os servidores de banco de dados mestre e escravo tenham os IPs abaixo como abaixo:
Servidor mestre: 11.11.11.11 servidor escravo: 22.22.22.22
Se você estiver usando versões diferentes - diferentes do MySQL no Master e Slave, use este link para verificar a compatibilidade.
Etapa 1: Crie certificados SSL [mestre]
Primeiro, você precisa gerar um certificado CA. Uma Autoridade de Certificação (CA) é uma organização de terceiros confiável que emite certificados digitais usados para verificar a identidade e a autenticidade de uma entidade. Em seguida, podemos gerar certificado digital para o sistema mestre e cliente assinado pelo certificado da CA.
- Crie um diretório para armazenar os novos certificados SSL.
mkdir/etc/mysql/certs
CD/etc/mysql/certs
- Agora, gerar o certificado para usar como autoridade de certificado.
OpenSSL Genrsa 4096> Ca-key.PEM
OpenSSL Req -New -x509 -Nodes -Days 9999 -Key Ca -Key.Pem> Ca-Cert.PEM
- Gere o certificado para o MySQL Master Server:
OpenSSL Req -NowKey RSA: 4096 -Daiu 9999 -Nodes -Keyout Server -key.PEM> servidor-req.PEM
OpenSSL X509 -Req -in Server -Req.Pem -dias 9999 -ca Ca -Cert.PEM -Cakey Ca -key.PEM -set_serial 01> servidor -cert.PEM
- Em seguida, gerar o Certificado para o Sistema de Cliente (Escravo).
OpenSSL Req -NowKey RSA: 4096 -Daiu 9999 -Nodes -Keyout Client -key.PEM> Client-Req.PEM
OpenSSL X509 -Req -in Client -Req.Pem -dias 9999 -ca Ca -Cert.PEM -Cakey Ca -key.PEM -set_serial 01> Cert Client.PEM
Nota importante: Certifique -se de usar um diferente "Nome comum (FQDN)" Para os arquivos da CA do que os arquivos de certificado de mestre e cliente.
Etapa 2: Atualize o arquivo de configuração do MySQL [mestre]
Em seguida, o arquivo de configuração do MySQL (por exemplo:/etc/mysql/mysql.conf.d/mysqld.CNF) e adicione/atualize as seguintes entradas:
[mySqld] servidor-id = 1 binlog-format = log-bin misto = mysql-bin innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ssl ssl-ca =/etc/mysql/certs/ca-cert.PEM SSL-CERT =/etc/mysql/certs/server-cert.pem ss-key =/etc/mysql/certs/server-key.PEM1234567891011 | [mysqld] server-id = 1binLog-format = mixedlog-bin = mysql-bininnodb_flush_log_at_trx_commit = 1sync_binlog = 1 sslssl-ca =/etc/mysql/certs/caerc.PEMSSL-CERT =/etc/mysql/certs/server-cert.PEMSSL-key =/etc/mysql/certs/server-key.PEM |
Etapa 3: Crie usuário de replicação [mestre]
Nesta etapa, criaremos um novo usuário no servidor MySQL que será usado para autenticar clientes com o serviço mestre. Portanto, faça login no servidor MySQL no servidor de banco de dados Master com o usuário privilegiado root. Em seguida, crie um novo usuário, que será usado para o processo de replicação.
Conecte -se ao MySQL Server, em seguida, execute e execute as seguintes consultas para criar um novo usuário e conceder -as ao acesso a escravos.
mysql> criar 'replicação'@'22.22.22.22 'identificado por' asecurepa $$ w0rd 'requer ssl; MySQL> Grant Replicação Slave On *.* Para 'replicação'@'22.22.22.22 '; mysql> privilégios de descarga;123 | mysql> criar 'replicação'@'22.22.22.22 'identificado por' asecurepa $$ w0rd 'requer ssl; mysql> escrava de replicação do subsídio *.* Para 'replicação'@'22.22.22.22 '; MySQL> Privilégios de descarga; |
Certifique -se de substituir '22.22.22.22 'com o endereço IP da instância de escravos.
Certifique -se de usar uma senha forte para a conta de usuário.
Etapa 4: Dump Bathabases [mestre]
Agora, exporte todos os bancos de dados na instância mestre usando o 'mysqldump' Utilitário.
MySqldump -Uroot -P--SKIP-LOCK-TABLES-Single-transaction \--Flush-Logs--hex-blob-mestre-dados = 2 -a | gzip -c> dump.SQL.gz
Copie o arquivo de despejo para o servidor escravo.
SCP DUMP.SQL.GZ [Email Protected]:
O comando solicitará a senha do usuário remoto. Uma vez que o usuário for autenticação, o arquivo será copiado para o servidor remoto no diretório inicial da conta 'root'.
Etapa 5: copiar arquivos de certificados SSL [mestre]
Copie a chave do cliente e os arquivos de certificado e certificado da CA para a instância do escravo. Certifique -se de que o "/etc/mysql/certs" diretório existe sistema remoto.
scp/etc/mysql/certs/ca-cert.PEM [email protegido]:/etc/mysql/certs/
scp/etc/mysql/certs/client-cert.PEM [email protegido]:/etc/mysql/certs/
scp/etc/mysql/certs/cliente-chave.PEM [email protegido]:/etc/mysql/certs/
Nota: Configurar as teclas SSH para login automático ou usar senhas para conectar -se ao controle remoto.
Etapa 6: Restaurar o backup do banco de dados [escravo]
Faça login no servidor do cliente de replicação do MySQL. Extraia o arquivo de despejo usando o utilitário Gunzip. Depois disso, restaure o banco de dados.
Gunzip Dump.SQL.gz
mysql -Uroot -p -f < dump.sql
Em seguida, verifique a posição do arquivo de log no arquivo de backup.
despejo de cabeça.SQL -N80 | grep "master_log_pos"
A saída será assim:
Saída-Alterar mestre para master_log_file = "mysql-bin.000007 ", master_log_pos = 154;
Note o Master_log_file e Master_log_pos valores, que serão usados mais tarde neste artigo.
Etapa 7: Atualize a configuração do Slave MySQL [Slave]:
Em seguida, o arquivo de configuração do MySQL (por exemplo:/etc/mysql/mysql.conf.d/mysqld.cnf) e adicione/atualize as entradas seguintes:
[mySqld] servidor-id = 2 binlog-format = log-bin misto = mysql-bin retray-log = mysql-relay-bin log-updates = 1 leitura = 11234567 | [mysqld] servidor-id = 2binlog-format = mixedlog-bin = mysql-binrelay-log = mysql-relay-binlog-slave-updates = 1Read-somente = 1 |
Etapa 8: Iniciar a replicação do escravo [escravo]
Configure a instância do escravo com o endereço IP da instância mestre, juntamente com o usuário da replicação, sua senha e o certificado copiado da instância mestre. Certifique -se de atualizar 'Mysql-bin.###### '
e 'Master_log_pos = ###'
o mesmo que chegamos na etapa 6. Inclua todos os zeros.
12345678 | mysql> Alterar mestre para master_host = '11.11.11.11 ', master_user =' replicação ', master_password =' asecurepa $$ w0rd ', master_sssl_ca ='/etc/mysql/certs/ca cert.PEM ', master_ssl_cert ='/etc/mysql/certs/client-cert.PEM ', master_ssl_key ='/etc/mysql/certs/cliente-chave.Pem ', master_ssl = 1, master_log_file =' mysql-bin.###### ', master_log_pos = ###; |
Finalmente, inicie o processo de replicação:
MySQL> Start Slave;1 | MySQL> Start Slave; |
Isso permitirá e iniciará o processo de replicação.
Etapa 9: Verifique a replicação
Você pode executar o 'Mostrar status de escravo'
Consulta para verificar o status atual da replicação:
1 | MySQL> Mostrar status de escravo \ G |
Saída *************************** 1. Linha *************************.11.11.11 master_user: replicação master_port: 3306 connect_retry: 60 master_log_file: mysql-bin.000177 read_master_log_pos: 100443919 relay_log_file: mysql-relay-bin.000498 RELAY_LOG_POS: 104189538 RELAY_MASTER_LOG_FILE: MYSQL-BIN.000169 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 104189322 Relay_Log_Space: 972921462 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql /certs/Ca-Cert.PEM master_ssl_ca_path: master_ssl_cert:/etc/mysql/certs/client-cert.PEM master_ssl_cipher: master_ssl_key:/etc/mysql/certs/cliente-chave.Pem Seconds_behind_Master: 13803 master_ssl_verify_server_cert: não last_io_errno: 0 last_io_error: last_sql_errno: 0 last_sql_error: replicate_ignore_server_ids: master_erver_id: 1 masterror:.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Waiting for dependent transaction to commit Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row No set, 1 aviso (0.00 seg)
Verifique o valor de 'Seconds_behind_master'. O valor zero (0) significa que ambos os sistemas são sincronizados completamente.
A replicação do MySQL Master-Slave foi configurada com sucesso em seu sistema e está no modo de trabalho. Obrigado por usar este tutorial, gentilmente não se esqueça de compartilhá -lo com seus amigos.
Conclusão
Neste artigo, abordamos o processo de configuração de replicação do MySQL Master-Slave com autenticação usando certificados SSL. Passamos pelas etapas de criar e instalar os certificados, configurar os servidores mestre e escravo e solucionar problemas comuns. Ao usar certificados SSL, garantimos que os dados que estão sendo replicados sejam seguros e só possam ser acessados por partes autorizadas. Além disso, os certificados SSL foram usados para autenticar os servidores mestre e escravo, fornecendo uma camada adicional de segurança. Essa abordagem pode ajudar as organizações a melhorar a segurança de seu ambiente de replicação e garantir a integridade e a confidencialidade de seus dados.
No geral, a replicação do MySQL Master-Slave é uma ferramenta útil para melhorar o desempenho, a escalabilidade e a tolerância de falhas de um sistema de banco de dados MySQL. Ele permite a distribuição de dados em vários servidores e pode ser usado para backups e recuperação de dados.