Подтвердить что ты не робот

Рекомендации и методы репликации Музака

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

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

Вопросы:

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

Ответ 1

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

  • Для обоих серверов можно использовать один тип движка (MyISAM или InnoDB). Я использую оба механизма, вы можете получить Deadlock, проблемы с транзакциями и т.д.... и время их устранения может быть болезненным. Несколько лет назад у меня были проблемы с InnoDB → MyISAM. Теперь я использовал MyISAM на всех серверах.

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

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

Сообщите мне, если вам нужна дополнительная помощь.

Ответ 2

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