MySQL Advice: огромная база данных постоянно обновляется, но вы также хотите искать результаты на сайте - PullRequest
2 голосов
/ 11 июля 2011

В настоящее время у меня есть база данных с около 5 миллионами строк данных, каждая строка которых ежедневно обновляется данными.Я делаю около 200 000 строк в час обновлений, поэтому мои таблицы хранятся в виде InnoDB.Теперь я уже знаю, что это моя основная база данных, но мне также нужно сообщать всю эту информацию обратно на веб-сайт, главным образом, для SELECTS (в основном очень мало обновлений / вставок / удалений).

Мой вопрос заключается в том, что вероятнолучший вариант для меня?12-24-часовая задержка данных является полностью приемлемой, так что я должен иметь ситуацию типа Master -> Slave?Должен ли я выгружать основную базу данных каждые 12 часов и просто заменять версию веб-сайта по мере необходимости, отправляя несколько обновлений / удалений в текстовый файл SQL, который я выполняю первым?

Это проект, который будет быстро расти в течение следующих 12месяцев, поэтому я действительно хочу сделать лучший выбор сейчас.Наша база данных летает, поскольку у нас есть чрезвычайно мощный сервер для нее, но я хочу убедиться, что после запуска сайта она также будет оптимизирована.Например, если мы ежедневно выкидываем базу данных и заменяем старую, я должен рассмотреть несколько обновлений, которые могут произойти.Если настройка Master / Slave более подходит для этого, можете ли вы предоставить ссылки на некоторые документы, которые помогут мне лучше оптимизировать мои настройки?

1 Ответ

0 голосов
/ 04 августа 2011

Вы можете включить ведение журнала бина (которое в любом случае будет включено с мастер-установкой), а затем вручную (или с помощью cronjob) FLUSH LOGS и отправить последний бинлог (ы) в ведомое устройство чтения.(скажем, каждые 12+ часов).

На этом этапе вы можете использовать стандартные инструменты mysql (mysqlbinlog), чтобы прочитать журнал и импортировать его в ваш экземпляр чтения

mysqlbinlog / path / to / binlog |mysql -u -p

Убедитесь, что вы прочитали заметки здесь о проблемах с передачей нескольких binlogs команде mysqlbinlog.

Этот метод предполагает, что хост чтения синхронизированполный снимок базы данных до начала этого метода.

...