Melhor maneira de manter dois ou mais bancos de dados em sincronia?

2

Eu tenho dois servidores PowerDNS e configurei os registros da zona para serem armazenados nativamente no mariaDB. Qual seria a melhor maneira de sincronizar esses dois bancos de dados?

Nota:

Eu gostaria de escalar isso para usar 5 servidores mais tarde. Atualmente os dados seriam adicionados ao servidor DNS 1 e seriam copiados apenas do servidor DNS 1 para o servidor DNS 2. Se eu tivesse mais servidores DNS, eu gostaria que o servidor DNS 1 fosse desativado, e o conteúdo criado no servidor DNS 2 servir servidor DNS 3 e assim por diante e quando o DNS 1 estiver ativo novamente, ele será sincronizado com o servidor DNS 2.

Há também uma tabela que não será sincronizada: essa é a tabela que o PowerDNS usa para armazenar o endereço IP do servidor e assim por diante.

Meu servidor só pode acessar o mariaDB localmente, então, para um computador remoto acessar o mariaDB, ele teria que fazer o ssh tunnel.

    
por Donno 14.08.2017 / 07:54

4 respostas

2

Como você está perguntando isto em SF e não em banco de dados , eu lhe darei uma resposta que não replica o banco de dados.

Você deseja replicar um DNS .

A média oficial para isso é um DNS de mesmo nível ou um DNS secundário que pode ser promovido a primário.

Em qualquer caso, seu DNS principal deve enviar alterações para o par / secundário.

Isso é feito com o protocolo DNS na camada 7. Portanto, não há necessidade de replicar bancos de dados.

    
por 16.08.2017 / 23:17
1

A maneira mais fácil depois de analisar as respostas e pesquisar no google o problema foi fazer um cluster do mariaDB com o rsync

Ubuntu 16.04.03 usando as etapas de configuração do MariaDB 10.2.8:

sudo apt-get install curl
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo apt-get update
sudo apt-get install mariadb-server
sudo apt-get install rsync
sudo systemctl start rsync.service
sudo systemctl enable rsync.service
systemctl list-unit-files |grep rsync

no primeiro nó edite /etc/mysql/conf.d/galera.cnf

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="[Cluster name]"
wsrep_cluster_address="gcomm://[node1 ip],[node2 ip]"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="[node1 ip]"
wsrep_node_name="[node1 name]"

Pare o MariaDB e inicie o primeiro nó no cluster

    systemctl stop mysql.service
    galera_new_cluster
    systemctl status mysql.service
    mysql -u root -p -e "show status like 'wsrep_cluster_size'"

        +--------------------+-------+
        | Variable_name      | Value |
        +--------------------+-------+
        | wsrep_cluster_size | 1     |
        +--------------------+-------+  

no segundo nó edite /etc/mysql/conf.d/galera.cnf

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="[Cluster name]"
wsrep_cluster_address="gcomm://[node1 ip],[node2 ip]"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="[node2 ip]"
wsrep_node_name="[node2 name]"

Pare o MariaDB e inicie o segundo nó no cluster

    systemctl stop mysql.service
    systemctl start mysql.service
    systemctl status mysql.service
    mysql -u root -p -e "show status like 'wsrep_cluster_size'"

        +--------------------+-------+
        | Variable_name      | Value |
        +--------------------+-------+
        | wsrep_cluster_size | 2     |
        +--------------------+-------+

Para adicionar mais nós ao cluster, basta editar /etc/mysql/conf.d/galera.cnf assim:

....
wsrep_cluster_address="gcomm://[node1 ip],[node2 ip],[node3 ip],[node4 ip],[node5 ip]"
....
    
por 03.09.2017 / 09:23
0

Você pode tentar o xtraDB percona
Na verdade, estou usando para sincronizar bancos de dados de um servidor open-xchange

link

    
por 14.08.2017 / 18:05
0

Use a replicação do mariadb. Não pense demais nisso. "A replicação do MySQL [mariadb] provou ser muito robusta e bem adaptada, mesmo em conexões transatlânticas entre provedores de serviços mal-intencionados. Outros usuários do PowerDNS utilizam a replicação do Oracle, que também funciona muito bem." link

    
por 23.08.2017 / 02:25