Перемещение больших баз данных


8

У меня есть сервер Centos и / var / lib / mysql / 125 ГБ (на диске есть 1 ГБ свободного места).

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

Все советы приветствуются!

Ответы:


3

Вы можете использовать следующие шаги

На старом сервере

1. Остановить MySQL-сервер

2. Скопируйте содержимое datadir в другое место на диске как ... mysqlbackup

3. Запустите сервер MySQL снова

4.Сжать данные (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5. Скопируйте сжатый файл на новый сервер.

На новом сервере

1.Установите MySQL [версия MySQL должна совпадать с версией старого сервера] (не запускать сервер MySQL)

2. Распакуйте сжатый файл (tar -xzvf mysqlbackup.tar.gz).

3. Переместите содержимое mysqlbackup в каталог данных.

4. Убедитесь, что права доступа к данным верны

5. Убедитесь, что ваш innodb_log_file_size на новом сервере одинаков, или, если это не так, не копируйте старые файлы журналов (MySQL сгенерирует их)

6. Запустите MySQL.

Вы также можете посмотреть на Как я могу переместить базу данных с одного сервера на другой?


2

Поскольку исходная база данных имеет только 1 ГБ, у вас нет места для mysqldump нигде.

Вам нужно следующее

  • Порт 3306 открыт в брандмауэре сервера Исходной БД
  • Запустите программу mysqldump с сервера Target DB

Для сервера исходной БД с IP-адресом 10.20.30.40 войдите в Target DB и запустите

ТРУБА mysqldump INTO Экземпляр MySQL на целевом сервере БД

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-tranactions"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS}| mysql ${MYSQL_CONN}

ТРУБА mysqldump в файл SQL. Загрузить MySQL из SQLFile

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --hex-blob --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
mysql ${MYSQL_CONN} < MySQLData.sql

ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ

Используйте метод № 1, если на диске нет места для сохранения файла SQL. Используйте Технику № 2, если вы хотите выгрузить файл и загрузить его позже.


0

С нового сервера, при условии, что у вас настроена пара открытого / закрытого ключа

ssh root@oldserver mysqldump database | mysql database

должно работать нормально, я не думаю, что любое дисковое пространство будет использоваться вообще


Не забудьте использовать ssh -Cдля сжатия на лету.
Мерцает

0

Обычно вы запускаете mysqldump для создания копии базы данных и резервного копирования следующим образом:

$ mysqldump -u user -p db-name > db-name.out

Скопируйте файл db-name.out с помощью sftp / ssh на удаленный сервер MySQL:

$ scp db-name.out user@remote.box.com:/backup

Восстановите базу данных на удаленном сервере (войдите через ssh):

$ mysql -u user -p db-name < db-name.out

ИЛИ

$ mysql -u user -p 'password' db-name < db-name.out

0

Это сработало для меня:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/

Пожалуйста, отредактируйте свой пост и предоставьте некоторые объяснения, которые помогут будущим пользователям понять ваш код.
RLF

0

@ user2029574, ваше оборудование в облаке? Я тоже однажды столкнулся с той же проблемой, что вы были / здесь. Тем не менее, моя установка MySQL производится в AWS, и вы знаете, что это значительно облегчает подключение еще одного диска большего размера. Здесь я подвожу итоги того, что я сделал:

  1. Подключите новый больший диск к вашему текущему экземпляру сервера MySQL.
  2. Используйте innobackupex от Percona, чтобы подготовить полную резервную копию текущих данных MySQL на новом диске, который вы подключили.
  3. Подготовьте еще один экземпляр с установленным MySQL.
  4. Отсоедините диск, прикрепленный к экземпляру 1.
  5. Теперь подключите диск к новому экземпляру, экземпляр 2.
  6. Остановите службу MySQL в экземпляре 2.
  7. Отредактируйте файл конфигурации MySQL так, чтобы каталог данных указывал на новое местоположение.
  8. Восстановите базу данных в новом экземпляре. Опять же, Innobackupex , там для вашей помощи.
  9. Запустите сервер MySQL в экземпляре 2.

Таким образом, ваши приложения могут постоянно подключаться к этой БД, и вы также можете обновить профиль своего облачного экземпляра, если это тоже является требованием.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.