mestre mariadb

Ambiente de servidor

ip1:10.10.0.11 ip2:10.10.0.12

1. Importe arquivos de configuração separadamente

mkdir -p /data/mariadb/conf/
vim meu.cnf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
lower_case_table_names=1
wait_timeout=1800
max_allowed_packet = 512M
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
skip-host-cache

2. Inicie um mariadb com docker respectivamente

docker run -d --restart=always -p3306:3306 --name mariadb -v /etc/localtime:/etc/localtime  -v /data/mariadb/conf/my.cnf:/etc/mysql/my.cnf -v /data/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mariadb:10.6

3. Crie contas duplicadas e autorize-as separadamente

grant replication slave on *.* to repluser@'10.10.0.%' identified by 'zhuzhu';

4. Recursos de replicação mestre-mestre

Ambos os nós podem atualizar dados e servir como mestre-escravo entre si. É fácil causar problemas de inconsistência de dados, por isso deve ser usado com cautela na produção.

Etapas de configuração para replicação mestre-mestre:
(1) Cada nó usa seu próprio server_id exclusivo
(2) Iniciar log binário e log de retransmissão
(3) Criar uma conta de usuário com permissões de replicação
(4) Definir o intervalo de valores do campo de ID de crescimento automático ser ímpar e par auto_increment_offset=1 auto_increment_increment=2
(5) Ambos os mestres devem designar um ao outro como nó mestre e iniciar o encadeamento de replicação.

5. Configure o nó mestre 10.10.0.11

5.1# Adicione quatro linhas na seção [mysqld] para definir o ID do nó, binário inicial, ponto inicial e taxa de crescimento
vim /data/mariadb/conf/my.cnf

[mysqld]
server-id=11
log-bin
auto_increment_offset=1
auto_increment_increment=2

5.2# Visualize e registre as informações do log binário. Os dois valores 73e4df274138-bin.000001 e 335 serão usados ​​para configurar novamente no nó mestre do banco de dados 10.10.012 docker exec
-it mariadb bash
mysql -uroot -p123456

MariaDB [(none)]> show master logs;
+-------------------------+-----------+
| Log_name                | File_size |
+-------------------------+-----------+
| 73e4df274138-bin.000001 |       335 |
+-------------------------+-----------+
1 row in set (0.000 sec)

6. Configure o nó mestre 10.10.0.12

6.1# Adicione quatro linhas na seção [mysqld] para definir o ID do nó, binário inicial, ponto inicial e taxa de crescimento
vim /data/mariadb/conf/my.cnf

[mysqld]
server-id=12
log-bin
auto_increment_offset=2
auto_increment_increment=2

6.2# Configurar replicação de banco de dados

stop slave; 

CHANGE MASTER TO 
MASTER_HOST='10.10.0.11',
MASTER_USER='repluser', 
MASTER_PASSWORD='zhuzhu',
MASTER_PORT=3306,
MASTER_LOG_FILE='73e4df274138-bin.000001', 
MASTER_LOG_POS=1629;

start slave; 

6.3# Visualize e registre as informações do log binário. Os dois valores 179d604d3e6f-bin.000001 e 538 serão usados ​​​​ao configurar novamente o nó mestre do banco de dados 10.10.0.11.

MariaDB [(none)]> show master logs;       
+-------------------------+-----------+
| Log_name                | File_size |
+-------------------------+-----------+
| 179d604d3e6f-bin.000001 |       538 |
+-------------------------+-----------+
1 row in set (0.000 sec)

6.4# Verifique o status de replicação IP11 para IP12

MariaDB [(none)]> show slave status\G

7. Em seguida, configure a replicação do nó mestre do banco de dados 10.10.0.11.

stop slave;

CHANGE MASTER TO 
MASTER_HOST='10.10.0.12',
MASTER_USER='repluser', 
MASTER_PASSWORD='zhuzhu',
MASTER_PORT=3306,
MASTER_LOG_FILE='179d604d3e6f-bin.000001', 
MASTER_LOG_POS=1382;

start slave;

7.1# Verifique o status de replicação IP12 para IP11

show slave status\G 

Neste ponto, a configuração da replicação (replicação mestre-mestre) de ambos os servidores como banco de dados MariaDB primário está concluída.

8. Verifique a replicação mestre-mestre do banco de dados

Crie um banco de dados test1 no nó do banco de dados principal 1

criar banco de dados test1;
Criar tabela
usar banco de dados test1;
criar tabela t1(id int chave primária de incremento automático,nome char(10));
Inserir um par de valores-chave
inserir t1 (nome) valores('usuário1');

Em seguida, mude para o nó 2 do banco de dados principal e insira um par de valores-chave na tabela t1 do banco de dados shonedb1.

usar banco de dados test1;
insira valores t1 (nome) ('usuário2');

Em seguida, por meio do software do terminal SSH, os seguintes comandos foram enviados ao nó mestre 1 do banco de dados e ao nó mestre 2 do banco de dados ao mesmo tempo.

insira valores t1 (nome)('userX');

Veja os resultados
selecione * de t1;

9. Crie keepalived para obter alta disponibilidade

yum install keepalived -y
9.1 usa o modo sem preempção e edita keepalived.conf do nó um.

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
   }
   notification_email_from [email protected]
   router_id LVS_DEVEL

  # vrrp_strict

}
vrrp_script chk_mariadb {
script "/root/check_mariadb.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行       
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}

vrrp_instance VI_1 {
    state BACKUP #两台都需要设置为backup
    interface eth0
    virtual_router_id 51
    priority 99
    nopreempt #非抢占模式
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        10.10.0.150/24
    }
   track_script {
   chk_mariadb #调用检测脚本
}
}

9.2 Use o modo sem preempção e edite keepalived.conf do nó 2

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
   }
   notification_email_from [email protected]
   router_id LVS_DEVEL
}
vrrp_script chk_mariadb {
script "/root/check_mariadb.sh" #最后手动执行下此脚本,以确保此脚本能够正常执行
interval 2 #(检测脚本执行的间隔,单位是秒)
weight 2
}

vrrp_instance VI_1 {
    state BACKUP #两台都需要设置为backup
    interface eth0
    virtual_router_id 51
    priority 100
    nopreempt #非抢占模式
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 8888
    }
    virtual_ipaddress {
        10.10.0.150/24
    }
    track_script {
    chk_mariadb #调用检测脚本
}
}

9.3 Use o script mariadb de monitoramento
vim /root/check_mariadb.sh

#!/bin/bash
A=`ps -C mariadbd --no-header |wc -l`
if [ $A -eq 0 ]
then
echo 'mariadb server is died'
systemctl stop keepalived
fi

chmod +x /root/check_mariadb.sh

10. Teste
ip addr para ver em qual servidor o ip virtual está.
Finalize o mariadb para ver se o script entra em vigor e se o ip é elegante.
Docker stop mariadb

Acho que você gosta

Origin blog.csdn.net/weixin_42516922/article/details/134014505
Recomendado
Clasificación