Muzak советы и методы репликации - PullRequest
19 голосов
/ 28 августа 2011

Я пытаюсь сделать свой первый крупномасштабный проект базы данных самостоятельно. У меня есть myisam mysql db на сервере 1 с приложением php, потребляющим большое количество различных данных. У меня есть MySQL MySQL на сервере 2 с php приложение выбора и отображения данных.

Я хочу скопировать эти данные на сервере 2.

Вопросы:

  1. Должен ли я изменить сервер 1 mysql db на innodb
  2. Можете ли вы реплицировать innodb server1 на server2 myisam
  3. Я храню медиафайлы в виде больших двоичных объектов с намерением использовать кэш для снятия нагрузки на работающий сервер. Должен ли я использовать хранилище файловой системы и rsync.
  4. Какой-нибудь общий совет от других опытных людей?

Ответы [ 2 ]

26 голосов
/ 28 августа 2011

Вот что я предлагаю, основываясь на моем опыте.

  1. Вы можете использовать один тип движка (MyISAM или InnoDB) для обоих серверов. Если вы смешаете оба движка, вы можете получить тупик, проблемы с транзакциями и т. Д., И время их исправления может быть болезненным. Недавно у меня были проблемы с InnoDB -> MyISAM. Теперь я использовал MyISAM на всех серверах.

  2. Для хранения мультимедиа (например, изображений, видео или документов) вы можете создать NFS и смонтировать папку, например / usermedia /, к которой имеют доступ оба сервера. Поэтому вам не нужно rsync каждый раз. Кроме того, вы можете сохранить метаданные или информацию о мультимедиа в базе данных для справки и о том, где файл сохранен на диске. Примечание: использование блобов для сохранения файлов может быть полезным в зависимости от носителя. Если у вас есть файл, который составляет приблизительно 1 гигабайт, может быть не очень хорошая идея, например, сохранить в базе данных).

  3. Использование системы кэширования для извлечения данных (например, memcached). Например, если вы запрашиваете данные и вам нужно отобразить их пользователю, сначала посмотрите в кеш. Если его нет в кеше, запросите базу данных, сохраните его в кеше и отобразите. В следующий раз, когда запрашивается та же информация, вы будете запрашивать ее не с сервера, а из памяти. Это решение позволит избежать многочисленных вызовов на сервере базы данных, что повысит производительность.

Дайте мне знать, если вам нужна дополнительная помощь.

23 голосов
/ 17 октября 2011

Я бы порекомендовал InnoDB (для транзакций, блокировки строк, а не блокировки таблиц) и redis, поскольку кэширование очень быстрое и эффективное

...