У меня есть большая база данных Mysql (более 10 ГБ). Я перехожу от одного хостинг-провайдера к другому (оба в CentOS).
Моя идея заключалась в следующем:
Старый сервер:
tar -cvf backup.tar backup.sql
Новый сервер:
wget oldserver.com/backup.tar
tar -xvf backup.tar
Мой вопрос: как я могу создать backup.sql файл, чтобы его можно было легко восстановить на новом сервере по ssh?
Использовать mysqldump.
Клиент mysqldump - это программа резервного копирования, изначально написанная Игорем Романенко. Его можно использовать для создания дампа базы данных или набора баз данных для резервного копирования или передачи на другой сервер SQL (не обязательно на сервер MySQL). Дамп обычно содержит операторы SQL для создания таблицы, ее заполнения или и того, и другого. Однако mysqldump также может использоваться для создания файлов в формате CSV, другом тексте с разделителями или в формате XML.
Если все ваши таблицы являются MyISAM, вы можете просто скопировать весь каталог (через rsync
или другую утилиту для передачи файлов), и вам не нужно ничего сбрасывать и архивировать. Вы можете использовать алгоритм сжатия rsync:
rsync -avz mysql_dir user@remotehost:~/
Если очень малое время простоя является проблемой и у вас очень активная база данных, вы можете подумать о настройке нового сервера для работы со старым. Следовать Документация по репликации MySQL, настраивая новый сервер как подчиненный. Затем, когда вы будете готовы внести изменения, вы просто начнете предоставлять своим приложениям доступ к новому серверу вместо старого - возможно, снизив IP-адрес на одном и увеличив на другом, перенастроив свое приложение на новый сервер. адрес и т.д ...
Однако для большинства сайтов это обычно излишне. Обычно вы можете потратить несколько минут простоя, чтобы сделать ход, используя такой механизм, как следующий ...
Начните с простой загрузки копии, пока MySQL работает на исходном сервере (и ниже на целевом сервере), примерно так:
rsync -avzP --delete /var/lib/mysql/ root@destination:/var/lib/mysql.source/
Я запускаю его в пункт назначения «mysql.source», чтобы быть уверенным, что если я сделаю ошибку, я не буду, скажем, перезаписывать активный сервер данными с нового сервера. В зависимости от скорости сети это может занять много времени (например, если вы переходите от одного провайдера к другому по ссылке 1 Мбит / с).
Как только это закончится, запустите его снова, чтобы передать измененные файлы. Это должно быть значительно быстрее.
После повторного запуска несколько раз, вероятно, произойдет что-то очень маленькое, может быть, несколько секунд.
На этом этапе вы готовы к финальной версии rsync. Для этого:
ON OLD SERVER:
/etc/init.d/mysql stop
rsync -avzP --delete /var/lib/mysql/ root@destination:/var/lib/mysql.source/
ON NEW SERVER:
cd /var/lib
mv mysql mysql.orig
mv mysql.source mysql
/etc/init.d/mysql start
Конечно, это предполагает, что вы уже скопировали my.cnf и внесли соответствующие корректировки, если система больше или меньше старой (изменение размеров кеша и т.п.).
Если очень малое время простоя является проблемой и у вас очень активная база данных, вы можете подумать о настройке нового сервера для работы со старым. Следовать Документация по репликации MySQL, настраивая новый сервер как подчиненный. Затем, когда вы будете готовы внести изменения, вы просто начнете предоставлять своим приложениям доступ к новому серверу вместо старого - возможно, уменьшив IP-адрес на одном и увеличив на другом, перенастроив свое приложение на новый сервер. адрес и т.д ...