Я переношу довольно загруженный сайт на другой кластер серверов.
Сайт с главным сервером MySQL и двумя подчиненными серверами. Я хотел бы, чтобы во время переключения было как можно меньше простоев, и меня больше всего беспокоит время, необходимое для распространения изменения DNS.
Главный сервер базы данных работает под mysql.domain.com.
Моя мысль заключалась в том, чтобы скопировать основную базу данных на наш новый сервер, а затем переключить DNS для mysql.domain.com на IP-адрес нового мастера. Однако это будет означать, что у меня будут запросы на оба главных сервера, пока DNS не распространится по всему миру, что приведет к разрушению моих данных.
Мой план состоит в том, чтобы изменить файл / etc / hosts на старом главном сервере, чтобы любые запросы для mysql.domain.com направлялись на IP-адрес нового сервера.
Кто-нибудь видит в этом потенциальную опасность?
Если оба сервера расположены рядом друг с другом, почему бы не перенести IP-адрес старого сервера на новый. У вас может быть два (или более) IP-адреса на сервере. Если ваш новый сервер ответит на оба вопроса, все ваши проблемы уменьшатся.
Если возможно, проголосую:
В качестве альтернативы настройте любой удобный для вас механизм переключения IP-адресов. Убедитесь, что у вашего нового мастера есть все данные со старого.
По поводу вашего вопроса:
Означает ли это, что вы предоставляете "международную" службу mysql, или вы говорите о ферме веб-серверов или подобном, которая просто использует кластерную установку mysql в фоновом режиме? Вы контролируете компьютеры, которые подключаются к базе данных? Это откроет еще больше возможностей
Не было бы проще отредактировать настройки зоны DNS и изменить запись A для mysql.domain.com, чтобы она указывала на новый IP-адрес нового сервера? Если какие-либо запросы по-прежнему отправляются на старый сервер (из-за задержки распространения DNS), новые настройки зоны должны правильно указывать их обратно на ваш новый сервер.
Это не работает. / etc / hosts вообще не о перенаправлении, вам придется редактировать этот файл на всех клиент системы до тех пор, пока DNS не будет полностью распространен, поэтому это будет работать, только если вы контролируете всех клиентов.
Что может сработать, так это настроить пересылку через iptables или ssh на старой машине на новую.
Что-то, что можно попробовать (непроверено, просто небольшое представление, 192.168.0.2 - новый, 192.168.0.1 - старый сервер):
На старом сервере отключите mysql. На новом сервере запустите такой сеанс ssh:
ssh user@192.168.0.1 -R 3306:192.168.0.2:3306
и держите его открытым. Это должно перенаправить трафик, поступающий на порт 3306, на новый сервер, порт 3306. Если вы используете другой порт для mysql, адаптируйте его соответствующим образом.
Я не слежу за тем, что дает ваше предложение. Как будет доработка /etc/hosts
на старом мастере SQL поможет вам с вашей целью минимизировать задержку распространения DNS?
Если вы управляете DNS-серверами и преобразователями на хостах, вы можете опубликовать старый мастер с более коротким TTL до изменения, а затем, когда вы сделаете изменение, перезапустите любой nscd
процессы.
Лучше всего, исходя из того, что я считаю масштабом вашего бизнеса, было бы объявить окно отключения, в течение которого вы считаете базы данных доступными только для чтения.