2つのPowerDNSサーバーがあり、mariaDBにネイティブに保存されるようにゾーンレコードを構成しました。これら2つのデータベースを同期するための最良の方法は何でしょうか?
注:
後で5台のサーバーを使用するようにこれをスケーリングしたいと思います。現在、データはDNSサーバー1に追加され、DNSサーバー1からDNSサーバー2にのみコピーされます。DNSサーバーがさらにある場合は、DNSサーバー1がダウンした場合に、DNSサーバー2で作成されたコンテンツが必要になります。 DNSサーバー3などにサービスを提供し、DNS 1が再び起動すると、DNSサーバー2と同期します。
同期されないテーブルも1つあります。それは、PowerDNSがサーバーのIPアドレスなどを格納するために使用するテーブルです。
私のサーバーはmariaDBにローカルでしかアクセスできないため、リモートコンピューターがmariaDBにアクセスするには、トンネルをsshする必要があります。
データベースではなくSFでこれを求めているので、データベースを複製しない答えを示します。
[〜#〜] dns [〜#〜]を複製したい。
その公式の意味は、プライマリに昇格する可能性のあるピアDNSまたはセカンダリDNSのいずれかです。
いずれの場合も、メインDNSは変更をピア/セカンダリにプッシュする必要があります。
これは、レイヤー7のDNSプロトコルを使用して行われます。したがって、データベースを複製する必要はありません。
回答を確認して問題をグーグルした後の最も簡単な方法は、rsyncを使用してmariaDBクラスターを作成することでした。
MariaDB10.2.8セットアップ手順を使用したUbuntu16.04.03:
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 |
+--------------------+-------+
2番目のノードで/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を停止し、クラスターで2番目のノードを開始します
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]"
....
Mariadbレプリケーションを使用します。考えすぎないでください。 「MySQL [mariadb]レプリケーションは、ピアリングの悪いISP間の大西洋横断接続でも、非常に堅牢で適切であることが証明されています。他のPowerDNSユーザーは、Oracleレプリケーションを採用しています。これも非常にうまく機能します。」 https://doc.powerdns.com/md/authoritative/modes-of-operation/
PerconaxtraDBを試すことができます
私は実際にそれを使用してopen-xchangeサーバーからデータベースを同期しています
https://www.percona.com/software/mysql-database/percona-xtradb-cluster