Синхронизируйте базы данных MySQL с минимальной задержкой из PHP - PullRequest
1 голос
/ 02 августа 2011

Я искал SO и прочитал много вопросов, но не нашел ни одного, который действительно отвечал бы на мой вопрос, сначала небольшая справочная информация:

  • PHP Script получения данных (игровой сайт)
  • Для резервирования и производительности доступно несколько серверов БД.

Мне хорошо известны MySQL Replication и Cluster, но вот мои проблемы с этими решениями:
1) В репликации, если Мастер отказывает , вся сетка выходит из строя или страдают длительные простои
2) Сначала в Cluster я подумал, что для добавления другого узла необходимо также простоя, но при повторном чтении документации Я больше не уверен в этом

Q1: Может ли кто-нибудь уточнить, действительно ли "скользящий перезапуск" означает время простоя для любого приложения, подключенного к сети?

Поскольку у меня сложилось впечатление, что простои неизбежны, мне показалось, что 3D-приложение решит эту проблему: PHP подключается к 3d-приложению, 3d-приложение вставляет / обновляет / удаляет в одну базу данных для быстрого возврата last_insert_id, PHP продолжает процесс, а 3d-приложение продолжает вставлять / обновлять / удалять из других узлов данных. В этом сценарии каждая БД не реплицируется и не кластеризована, это автономные серверы БД, 3d-приложение - это демон.

Q2: Кто-нибудь знает такое приложение?

В приведенном выше сценарии выбор с конца PHP будет случайным образом выбирать сервер БД (для балансировки нагрузки)

Спасибо за ваше время и мудрость

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Последовательный перезапуск в основном отслеживает ряд узлов и перезапускает их один за другим.Он гарантирует, что ни один пользователь не войдет в узел до перезапуска, затем перезапустится, перейдет к следующему узлу или серверу и так далее.Так что да, ваш сервер будет перезагружен, но в последовательности, и поэтому, если у вас есть кластер с n узлами, каждый узел перезапускается один за другим, следовательно, либо устраняя время простоя, либо ограничивая его.

Я бы предложил интегрироватьВаш скрипт PHP с базой данных NoSQL, вы можете настроить кластеры для них, и почти не будет задержки.Если вы все еще хотите синхронизировать базу данных MySQL, вы также можете попытаться настроить NoSQL в качестве главного и выполнить репликацию на подчиненный MySQL, что также возможно.

1 голос
/ 02 августа 2011

Множество вопросов здесь.

В интерпретации master-slave отсутствует неявная функциональность для продвижения slave в случае отказа master.Бу сценарии это самостоятельно тривиально.

Для репликации мастер-мастер, которая не является проблемой - OTOH, работающий с большим количеством узлов, сбой может увеличить расхождение в наборах данных.

Многие функции, описанные вашим третьимприложение реализовано с помощью mysqlproxy - хотя ничто не мешает вам встроить функциональность в собственный уровень абстракции БД (вы можете передать обработку через асинхронный вызов message / http или как функцию отключения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...