Bem-vindo a mais um blog. Desta vez estou aqui para mostrar a vocês como configurar o cluster percona XtraDB. Ok, então o que é percona XtraDB? O XtraDB é uma solução de cluster MySQL, que garante alta disponibilidade, evita tempo de inatividade e perda de dados e fornece escalabilidade linear para um ambiente em crescimento. Quando você executa uma consulta, ela é executada localmente no nó. Todos os dados estão disponíveis localmente, sem necessidade de acesso remoto. Uma boa solução para dimensionar uma carga de trabalho de leitura. Você pode colocar consultas de leitura em qualquer um dos nós. Depois de instalar o percona XtraDB, você não precisa instalar o MySQL separadamente, o XtraDB o obterá do repositório do percona e você poderá preparar o cluster depois de ler este artigo.
pré-requisito:
Para configurar um cluster percona XtraDB em servidores Linux, precisamos de três servidores, as informações são as seguintes:
servidor percona1:192.168.56.110
servidor percona2:192.168.56.113
Servidor percona3:192.168.56.114
SO:CentOS 7
você também pode ir com dois servidores, mas o documento oficial recomenda um número ímpar de servidores. por exemplo, 3,5,7 e assim por diante. apenas não vá para nenhum número par de nós, eles chamam de split-brain. Um split-brain é um estado em que os nós perdem contato um com o outro e então ambos tentam assumir o controle de recursos compartilhados ou fornecer simultaneamente o serviço de cluster
NOTA:Precisamos de acesso root no nó onde iremos instalar o Percona XtraDB Cluster
(seja logado como usuário com privilégios de root ou seja capaz de executar comandos com Sudo
Pré-verificações:
Adicione as entradas abaixo em seu arquivo /etc/hosts ——> em todos os servidores (percona1,percona2,percona3)
192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3
Abra portas de firewall:
Precisamos abrir as portas abaixo em todos os servidores (percona1,percona2,percona3)
3306
4444
4567
4568
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (active)target:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:services:ssh dhcpv6-client mysqlports:3306/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:regras avançadas
Desabilite o SELinux:——-> em todos os servidores(percona1,percona2,percona3)
[[email protected] ~]# setenforce 0
Isso colocará o SELinux no modo permissivo para a sessão atual, mas precisamos desativá-lo permanentemente.
edite o arquivo /etc/sysconfig/selinux configure a variável selinux como desabilitada em todos os servidores (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=desativado
Todos os servidores devem estar acessíveis uns aos outros, a fim de verificar o ping de acessibilidade de cada servidor.
Instll abaixo do RPM pré-requisito:——-> em todos os servidores (percona1,percona2,percona3)
epel-release
libev
socat
[[email protected] ~]# yum -y install epel-release Instalado:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev instalado :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Instalado:socat.x86_64 0:1.7.3.2-2.el7
Adicionar Repositório Percona:——-> em todos os servidores(percona1,percona2,percona3)
Agora vamos adicionar o repositório percona em todos os três servidores (percona1,percona2,percona3):
[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Complete !
Instale o Percona-XtraDB-Cluster:——-> em todos os servidores(percona1,percona2,percona3)
[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57 Plugins carregados:fastmirror, langpacksLoading mirror speeds from cached hostfile...Installed:Percona-XtraDB-Cluster-57.x86_64 0:5.7 .27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.27-31.39 .1.el7Dependency Instalado:Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.39.1.el7 percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD5.x86_64 0 :2.52-3.el7 qpress.x86_64 0:11-1.el7Replaced:mariadb-libs.x86_64 1:5.5.60-1.el7_5Completo!
Vamos verificar se o Percona XtraDB está instalado ou não.
[[email protected] ~]# yum search Percona-XtraDBNOTA: Até aqui todas as etapas acima devem ser executadas em todos os servidores (percona1,percona2,percona3)
Configurando nós para replicação de conjunto de gravação
ON Percona1:
Vamos iniciar o servidor MySQL e alterar a senha do root apenas no servidor percona1
[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep password /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Nota] Uma senha temporária é gerado para [email protected]:hJ(l8ySe>f>ENote :copie a senha "hJ(l8ySe>f>E" vamos alterar esta senha :[[email protected] ~]# mysql_secure_installation --- ---->em todos os servidores(percona1,percona2,percona3)Protegendo a implantação do servidor MySQL.Digite a senha para usuário root:A senha existente para a conta de usuário root expirou. Por favor, defina uma nova senha.Nova senha:Redigite nova senha:VALIDATE PASSWORD PLUGIN pode ser usado para testar senhas e melhorar a segurança. Ele verifica a força da senha e permite que os usuários definam apenas as senhas que são seguras o suficiente. Deseja configurar o plugin VALIDATE PASSWORD?Pressione y|Y para Sim, qualquer outra chave para Não:Usando a senha existente para root.Alterar a senha para root ? ((Pressione y|Y para Sim, qualquer outra chave para Não) :... skipping.Por padrão, uma instalação do MySQL tion tem um usuário anônimo, permitindo que qualquer pessoa faça login no MySQL sem ter que ter uma conta de usuário criada para eles. Isto destina-se apenas a testar e tornar a instalação um pouco mais suave. Você deve removê-los antes de passar para um ambiente de produção.Remover usuários anônimos? (Pressione y|Y para Sim, qualquer outra tecla para Não) :yesSuccess.Normalmente, o root só deve ter permissão para se conectar de 'localhost'. Isso garante que alguém não consiga adivinhar a senha do root da rede. Não permitir o login do root remotamente? (Pressione y|Y para Yes, qualquer outra tecla para No) :yesSuccess. Por padrão, o MySQL vem com um banco de dados chamado 'test' que qualquer um pode acessar. Isso também é destinado apenas para teste e deve ser removido antes de passar para um ambiente de produção.Remover banco de dados de teste e acesso a ele? (Pressione y|Y para Sim, qualquer outra tecla para Não) :... pulando.Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora tenham efeito imediato.Recarregar tabelas de privilégios agora? (Pressione y|Y para Sim, qualquer outra tecla para Não):yesSuccess.All done!
Agora pare o servidor MySQL em percona1.
[[email protected] ~]# systemctl stop mysql
Agora vamos configurar nossa replicação, vamos adicionar informações de replicação no arquivo my.cnf.
Defina as configurações de replicação no percona1:
cat>>/etc/my.cnf<
Agora inicialize o cluster inicializando o primeiro nó. Este deve ser o nó com seu banco de dados principal, que será usado como fonte de dados para o cluster no nosso caso é o servidor percona1
[[email protected] ~]# systemctl start [email protected] de configurar a replicação, precisamos criar um usuário separado para replicação que será usado para o processo de replicação. por que precisamos de usuário de replicação? quando você adiciona um novo nó ao cluster, ele despeja a configuração do nó atual e a transfere para o segundo nó, por isso precisamos de um usuário separado.
OBSERVAÇÃO: Verifique se o usuário deve ser o mesmo mencionado na variável “wsrep_sst_auth” na configuração de replicação usada no arquivo my.cnf.
[[email protected] ~]#mysql -u root -p mysql>criar usuário [email protected]'%' identificado por 'perconapasswd';mysql>concede tudo em *.* para [email protected] '%';mysql>privilégios de liberação;ON Percona2:
Defina as configurações de replicação no percona2:
cat>>/etc/my.cnf<
Agora inicie o mysql e isso adicionará este nó ao cluster.
[[email protected] ~]# systemctl start mysqlON Percona3:
Defina as configurações de replicação no percona3:
cat>>/etc/my.cnf<
Agora inicie o mysql e isso adicionará este nó ao cluster.
[[email protected] ~]# systemctl start mysql
você observará essas mensagens no log do mysql (var/log/mysqld.log)
(percona2):Transferência de estado de 0,0 (percona1) concluída
1.0 (percona3):Transferência de estado de 0.0 (percona1) concluída
Para certificar-se de que o cluster foi inicializado, execute o seguinte:
mysql> mostra status como 'wsrep%';+------------------------------------------------+- -------------------------------------------------- ----------+| Nome_variável | Valor |+----------------------------------+------------ -------------------------------------------------- + | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | DESLIGADO |...| wsrep_local_state | 4 || wsrep_local_state_comment | Sincronizado || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERACIONAL || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Primário || wsrep_connected | LIGADO || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codificação Oy|| wsrep_provider_version | 3.39(rb3295e6) || wsrep_ready | ATIVADO |+----------------------------------+------------ -------------------------------------------------- + 71 linhas em conjunto (0,00 seg)
Como você pode ver, o tamanho do cluster é 3 “wsrep_cluster_size | 3" e você também pode ver o IP de nossos três nós
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306
Teste nosso cluster:
Estou criando um banco de dados no percona 1 e depois verificaremos no percoan 3 se ele foi replicado.
mysql> mostra bancos de dados;+--------------------+| Banco de dados |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 linhas no conjunto (0,03 seg)mysql> CREATE DATABASE perconatest;Consulta OK, 1 linha afetada (0,03 seg)
Agora vamos verificar no percona3, veremos que o banco de dados 'perconatest' será criado
[[email protected] ~]# mysql -uroot -p -e "show databases"Digite a senha:+--------------------+| Banco de dados |+--------------------+| information_schema || mysql || perconatest || performance_schema || sys |+--------------------+