保持两个或更多数据库同步的最佳方法?

我有两个PowerDNS服务器,并configuration区域logging本地存储在mariaDB。 什么是同步这两个数据库的最佳方法?

注意 :

我想扩展这个以后使用5台服务器。 目前,数据将被添加到DNS服务器1,只会从DNS服务器1复制到DNS服务器2.如果我有更多的DNS服务器,我希望如果DNS服务器1出现故障,则在DNS服务器2上创build的内容会提供DNS服务器3等,当DNS 1再次启动时,它将与DNS服务器2同步。

还有一个表不会被同步:那就是PowerDNS用来存储服务器IP地址的表格等等。

我的服务器只能在本地访问mariaDB,所以远程计算机访问mariaDB它将不得不ssh隧道。

既然你问这个SF而不是数据库,我会给你一个不复制数据库的答案。

你想复制一个DNS

官方的意思是要么是一个对等的DNS或辅助DNS,可能会被提升为主要的。

在任何情况下,您的主要DNS必须推动对同行/次要的变化。

这是在第7层上的DNS协议完成的。所以不需要复制数据库。

你可以试试percona xtraDB
我实际上使用它来从一个开放的xchange服务器同步数据库

https://www.percona.com/software/mysql-database/percona-xtradb-cluster

使用mariadb复制。 不要过度想办法。 “MySQL [mariadb]复制已经被certificate是非常健壮和适用的,即使是跨互联网的严重对等ISP之间的连接,其他PowerDNS用户使用Oracle复制,也很好。 https://doc.powerdns.com/md/authoritative/modes-of-operation/

查看答案和search问题之后,最简单的方法是用rsync创build一个mariaDB集群

Ubuntu 16.04.03使用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 

在第一个节点上编辑/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]" 

停止MariaDB并启动集群上的第一个节点

  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 | +--------------------+-------+ 

在第二个节点上编辑/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]" 

停止MariaDB并启动集群上的第二个节点

  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 | +--------------------+-------+ 

要添加更多的节点到群集只需编辑/etc/mysql/conf.d/galera.cnf像这样:

 .... wsrep_cluster_address="gcomm://[node1 ip],[node2 ip],[node3 ip],[node4 ip],[node5 ip]" ....