Правильный способ отразить установку PHP / MySQL - PullRequest
2 голосов
/ 12 декабря 2011

Я только что создал свой самый первый сайт PHP / MySQL и изучал создание зеркала базы данных для резервного копирования. Это, конечно, на случай, если какой-нибудь хакер сумеет выследить и разрушить основной БД. Есть ли правильный или неправильный способ сделать это?

Редактировать: Да, у меня есть план хостинга на каком-то другом хосте, на котором я бы хотел разместить зеркало.

Ответы [ 5 ]

4 голосов
/ 12 декабря 2011

Существует в основном два способа резервного копирования баз данных mysql: холодное (статическое / автономное) резервное копирование и горячее (динамическое / онлайн) резервное копирование.

1 Использование сценария crontab выполняет резервное копирование вашей базы данных каждый день / неделю /месяц и т. д. Мы называем это холодным резервным копированием.Сценарий может быть таким:

!#/bin/sh
mysqldump -usample_name -S/tmp/sample.sock --databases db1 db2 > db_backup_time.sql

, руководство по mysqldump можно найти здесь .Собственно, весь раздел 6 посвящен резервному копированию и восстановлению базы данных.После этого вы будете ежедневно получать зеркало своих данных (например, в 6 часов утра).

2 Использование решений для репликации mysql (структура главный-подчиненный) для резервного копирования в онлайн-хранилище.Все запросы на ведущем устройстве, приводящие к изменениям данных, также будут выполняться на ведомом устройстве.

сравнение:

В основном, холодное резервное копирование проще.Но когда случается что-то плохое, первый метод может восстановить данные только к тому моменту, когда вы сбросили зеркало.С помощью горячего резервного копирования и инструмента mysqldump вы можете восстановить данные в любое время.

По моему опыту, мы всегда сочетаем эти два метода вместе:

  1. пишем зеркало каждое утро и
  2. создаем подчиненный master db на другой физической машине.

это было бы безопасно.

1 голос
/ 12 декабря 2011

mysqldump - это удобная утилита, которая позволяет создавать резервные копии базы данных в виде текстового файла.

Для резервного копирования базы данных:

mysqldump -u username -p database_name > backup.sql

Теперь для восстановления из резервной копии:

mysql -u username -p database_name < backup.sql

Лучше всего периодически создавать скрипт, который делает это так, чтобы у вас всегда была свежая точка восстановления.

Подробнее о синтаксисе mysqldump вы можете узнать здесь

0 голосов
/ 12 декабря 2011

Если вы выполняете резервное копирование своей базы данных путем зеркалирования ее на другой хост, скажем, один раз в день, ваши данные все равно будут потеряны, если они будут повреждены / уничтожены, и вы не перехватите их до того, как они будут отражены. Правильный способ - периодически хранить дампы. Я создаю дамп своей базы данных каждый день и сохраняю ежедневные резервные копии в течение 4 недель, затем еженедельные резервные копии в течение 6 месяцев.

Это лучше всего работает, если ваша база данных и серверы резервного копирования находятся рядом (на расстоянии сети). Но если ваша база данных размещена в другом месте и не слишком велика, она все равно должна работать нормально (многие хосты ежедневно выгружают вашу базу данных, но вы сами можете ее извлечь).

0 голосов
/ 12 декабря 2011

Вы можете настроить репликацию MySQL / Master / Slave:

Сначала создайте пользователя, которого вы собираетесь использовать для репликации баз данных: replUser

На главном сервере вы хотитеследующие настройки:

[mysqld]
log-bin=mysql-bin
server-id=1

На подчиненном сервере вы хотите следующие настройки в my.cnf

## Replication
server-id                       = 2
relay-log-space-limit           = 16G
expire-logs-days                = 7
master-host = 10.10.10.10
master-user = replUser
master-password = yourpassword
master-connect-retry=60
replicate-do-db = database_name

Ссылка: http://dev.mysql.com/doc/refman/5.0/en/replication.html

0 голосов
/ 12 декабря 2011

Что касается резервного копирования базы данных в случае хакера, кажется, что mysqldump - это путь; Вы можете прочитать об этом здесь . Затем вы можете перенести этот дамп MySQL на другой сервер. Лично у меня есть хрон, делающий эту резервную копию каждый день, а затем я копирую резервную копию на другой сервер с синхронизацией ftp, но есть и другие способы ее автоматизации. Если вы работаете на сервере Linux, использование webmin может упростить этот процесс, у него есть инструменты для резервного копирования баз данных MySQL. Надеюсь, это поможет.

...