Справочное руководство по MySQL версии 4.1.1-alpha



         

Глава 4.10.8 Поиск неисправностей репликации - часть 3


Еще один хороший способ проинформировать нас об ошибке - написать простую программу с легко конфигурируемыми параметрами соединения для головного и подчиненного серверов, в которой будет продемонстрирована проблема наших систем. Программа может быть написана на Perl или на C, в зависимости от того, какой язык вы знаете лучше.

Подготовив информацию об ошибке одним из двух способов, используйте утилиту mysqlbug, чтобы создать отчет об ошибке, и пошлите его по адресу bugs@lists.mysql.com. Если же вы имеете дело с фантомом - проблемой, которая имеет место, но вы по какой-либо причине не можете ее воспроизвести по желанию:

  • Убедитесь, что эта проблема не вызвана пользовательской ошибкой. Например, при обновлении подчиненного сервера вне потока подчиненного сервера данные будут не синхронизированы, и могут быть нарушения уникальных ключей при обновлениях. В этом случае поток подчиненного сервера остановится и будет ждать, пока таблицы не будут очищены вручную, для приведения их в синхронизированный режим.

  • Запустите подчиненный сервер с опциями log-slave-updates и log-bin - при этом в журнал будет заноситься информация обо всех обновлениях, происходящих на подчиненном сервере.

  • Сохраните все доказательства наличия ошибки перед сбросом репликации. Если у нас нет информации о проблеме, или имеется только отрывочная информация, потребуется время, чтобы найти источник проблемы. Вы должны собрать следующие "свидетельства":

    • Все двоичные журналы головного сервера
    • Весь двоичный журнал подчиненного сервера
    • Вывод команды SHOW MASTER STATUS на головном сервере во время
    • обнаружения проблемы

    • Вывод команды SHOW SLAVE STATUS на головном сервере во время
    • обнаружения проблемы

    • Журналы ошибок головного сервера и подчиненного сервера
    • Для изучения двоичных журналов используйте утилиту mysqlbinlog. Таким образом можно находить проблемные запросы, например:

      mysqlbinlog -j pos_from_slave_status /path/to/log_from_slave_status | head

      Собрав "свидетельства" о проблеме-фантоме, попробуйте сначала организовать их в отдельный контрольный пример. После этого сообщите о проблеме по адресу bugs@lists.mysql.com, описав эту проблему во всех подробностях.




      Содержание  Назад