1. Introdução ao MariaDB Galera Cluster
MariaDB Galera Cluster é uma ferramenta para sincronizar um cluster multimestre de bancos de dados MariaDB. Em termos de dados, é totalmente compatível com MariaDB e MySQL. característica:
Replicação síncrona
Lógica de topologia multi-mestre ativo-ativo
Os dados podem ser lidos e gravados em qualquer nó do cluster
Controle de associação automático, o nó com falha é automaticamente removido do cluster
Junção de nó automática
Replicação paralela verdadeira, com base no nível da linha
Conexão direta do cliente, interface nativa do MySQL
2. Preparação ambiental
Prepare duas máquinas virtuais e instale o CentOS7-1908 (7.7) respectivamente.
Servidor A: 193.168.12.9
servidor B db1 : 193.168.12.10 db2
Desative o firewall nas duas máquinas virtuais:
systemctl stop firewalld systemctl disable firewalld
Feche o selinux nas duas máquinas virtuais:
setenforce 0
Modifique / etc / selinux / config e defina SELINUX = disabled para garantir que tenha efeito após a reinicialização.
3. Instale o mariadb 10.5
Por padrão, a fonte do centos não contém mariadb 10.5. Você precisa configurá-lo sozinho. Crie o arquivo /etc/yum.repo.d/mariadb.repo. A configuração aqui é para fazer o download do espelho do Alibaba Cloud, que é mais rápido que o site oficial. O conteúdo é o seguinte:
[mariadb] name = MariaDB baseurl = https: //mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64 pgpkey = https: //mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB pgpcheck = 0
Baixe e importe a CHAVE:
wget --no-check-certificate https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB / etc / pki / rpm-gpg / rpm --import / etc / pki / rpm-gpg / *
Instale com yum:
yum install -y MariaDB-server MariaDB-client
Se você configurou outras fontes antes e a instalação falhar, você pode limpar e tentar novamente:
yum clean metadata
Dois servidores de banco de dados executam a mesma operação.
4. Configure o mariadb
Comece o mariadb:
systemctl start mariadb
A inicialização pode ser realizada sob demanda:
mysql_secure_installation
Por padrão, o mariadb só permite que o root faça login localmente. Você precisa criar permissões de gerenciamento remoto de root manualmente. Você pode criar uma nova ou modificar a raiz atual. Se você criar uma nova:
mysql -uroot -p use mysql criar usuário root @ '%' identificado por 'mariadb'; privilégios de descarga;
Ou modifique o host que tem raiz:
mysql -u root -p use mysql update user set host = '%' onde user = 'admin' e host = 'localhost'; privilégios de descarga;
Dois servidores de banco de dados executam a mesma operação.
5. Configure um cluster
Depois que os dois bancos de dados independentes estiverem prontos, comece a formar um cluster galera e interrompa o serviço mariadb primeiro:
systemctl stop mariadb
Modifique a configuração do mariadb: /etc/my.cnf.d/server.cnf
[Galera] wsrep_on = NO wsrep_provider = / usr / lib64 / Galera-4 / libgalera_smm.so wsrep_cluster_address = gcomm: //193.168.12.9,193.168.12.10 wsrep_cluster_name = rvsdb wsrep_node_name = DB1 wsrep_node_address = 193.168.12.9 binlog_format = linha default_storage_engine = InnoDB innodb_autoinc_lock_mode = 2 wsrep_slave_threads = 1 innodb_flush_log_at_trx_commit = 0 bind-address = 0.0.0.0
Exceto para wsrep_node_name e wsrep_node_address, outros itens de configuração na configuração dos dois servidores são iguais.
Inicie o primeiro nó criando um novo cluster:
galera_new_cluster
Neste ponto, você pode ver que o processo mysqld é iniciado com parâmetros e escuta nas portas 4567 e 3306 ao mesmo tempo.
Deve-se notar que galera_new_cluster é executado apenas uma vez, e o nó reinicia no modo de serviço normal no futuro.
Inicie o segundo nó da maneira normal:
systemctl start mariadb
Se nenhum erro for relatado durante a inicialização, parabéns, a formação do cluster está concluída. A recomendação oficial é agrupar pelo menos 3 nós, mas 2 também podem funcionar, mas o Split-Brain pode ocorrer.
Nesse momento, ambas as partes efetuam login em seu próprio mariadb e verificam o status do cluster.Você pode ver que há o mesmo cluster_status_uuid e o número de clusters cluster_size também é 2, o que significa dois.
Execute instruções DDL ou SQL em dois computadores respectivamente, e ambos serão sincronizados entre si.