У меня есть два сервера PowerDNS, и я настроил записи зоны, которые изначально хранятся в mariaDB. Как лучше всего синхронизировать эти две базы данных?
Примечание :
Я хотел бы масштабировать это, чтобы использовать 5 серверов позже. В настоящее время данные будут добавлены на DNS-сервер 1 и будут скопированы только с DNS-сервера 1 на DNS-сервер 2. Если у меня будет больше DNS-серверов, я бы хотел, чтобы DNS-сервер 1 вышел из строя, тогда контент, созданный на DNS-сервере 2, будет обслуживать DNS-сервер 3 и так далее, и когда DNS 1 снова заработает, он будет синхронизироваться с DNS-сервером 2.
Также существует одна таблица, которая не будет синхронизироваться: это таблица, которую PowerDNS использует для хранения IP-адреса сервера и так далее.
Мой сервер может получить доступ к mariaDB только локально, поэтому для доступа удаленного компьютера к mariaDB потребуется туннель ssh.
Поскольку вы спрашиваете об этом в SF, а не в база данных Я дам вам ответ, который не копирует базу данных.
Вы хотите воспроизвести DNS.
Официальным средством для этого является либо одноранговый DNS, либо вторичный DNS, который может быть повышен до первичного.
В любом случае ваш основной DNS должен подталкивать изменения к одноранговому / вторичному серверу.
Это делается с помощью протокола DNS на уровне 7. Таким образом, нет необходимости реплицировать базы данных.
Самый простой способ после просмотра ответов и поиска проблемы в Google - создать кластер mariaDB с помощью rsync.
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]"
....
Вы можете попробовать percona xtraDB
Я использую его для синхронизации баз данных с сервера open-xchange
https://www.percona.com/software/mysql-database/percona-xtradb-cluster
Используйте репликацию mariadb. Не зацикливайтесь на этом. «Репликация MySQL [mariadb] оказалась очень надежной и хорошо подходящей даже для трансатлантических соединений между провайдерами с плохим пирингом. Другие пользователи PowerDNS используют репликацию Oracle, которая также работает очень хорошо». https://doc.powerdns.com/md/authoritative/modes-of-operation/