...
Для того чтобы скрипт работал необходимо, чтобы в mysql были созданны одинаковые учетные записи с удаленным и локальным рутовым доступом.
Автоматическое восстановление репликации при потере связи между серверами
Необходимо создать файл /etc/keepalived/revive_mysql_replication.sh на обоих серверах с содержимым:
#!/bin/bash
LOCAL_FILE=`mysql --user=root --password=root -e "show slave status \G" | grep" Master_Log_File" | awk ' {print $2}'`
REMOTE_FILE=`mysql --host=<IP адрес встречного сервера> --user=root --password=root -e "show master status \G" | grep "File" | awk '{print $2}'`
if [ $LOCAL_FILE != $REMOTE_FILE ]
then
mysql --user=root --password=root -e "stop slave"
mysql --user=root --password=root -e "start slave"
fi
где
host=172.16.110.3 – адрес встречного сервера.
Добавить в cron выполнение скрипта каждую минуту:
crontab -l | { cat; echo "*/1 * * * * /etc/keepalived/revive_mysql_replication.sh"; } | crontab
Добавить пользователей на первом сервере (указать IP-адрес встречного сервера):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'<ip_server2>' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
И на втором сервере:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'<ip_server1>' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
Расчет количества коннектов к БД в зависимости от нагруженности серверов
...