Какой самый простой способ переместить схемы mysql (таблицы, данные, все) с одного сервера на другой?
Есть ли простой способ переместить все это с одного сервера, на котором запущен mysql на другой, уже запущенный mysql?
Какой самый простой способ переместить схемы mysql (таблицы, данные, все) с одного сервера на другой?
Есть ли простой способ переместить все это с одного сервера, на котором запущен mysql на другой, уже запущенный mysql?
Дамп базы данных либо с помощью mysqldump
, либо если вы используете PHPMyAdmin, тогда экспортируйте структуру и данные.
Для mysqldump
вам потребуется консоль и используйте следующую команду:
mysqldump -u <user> -p -h <host> <dbname> > /path/to/dump.sql
Затем на другом сервере:
mysql -u <user> -p <dbname> < /path/to/dump.sql
Если вы используете SSH-ключи:
$ mysqldump --all-databases -u[user] -p[pwd] | ssh [host/IP] mysql -u[user] -p[pwd]
Если вы НЕ используете SSH-ключи:
$ mysqldump --all-databases -u[user] -p[pwd] | ssh [email protected][host/IP] mysql -u[user] -p[pwd]
ПРЕДУПРЕЖДЕНИЕ. После этого вы захотите очистить свою историю, чтобы избежать поиска паролей.
$ history -c
Если вы переходите от одной и той же архитектуры к одной и той же архитектуре (x86- > x86, x86_64 → x86_64), вы можете просто переписать ваш datadir MySQL с одного сервера на другой. Очевидно, вы не должны запускать это, пока работает ваш старый демон MySQL.
Если ваши базы данных основаны на InnoDB, тогда вы захотите убедиться, что файлы журнала InnoDB были очищены, а их содержимое слито на диск перед копированием файлов. Вы можете сделать это, установив innodb_fast_shutdown
в 0
(по умолчанию это 1
, который будет не зачищать журналы на диск), что приведет к потере файла журнала на следующем выключение сервера. Вы можете сделать это, войдя в MySQL как root, а в оболочке MySQL выполните:
SET GLOBAL innodb_fast_shutdown=0
Или, установив опцию в my.cnf и перезагрузив сервер, чтобы выполнить изменение, затем выключите, чтобы очистить журнал.
Сделайте что-то вроде:
#On old server (notice the ending slash and lack thereof, it very important)
rsync -vrplogDtH /var/mysql [email protected]:/var/mysql/
#Get your my.cnf
scp /etc/my.cnf [email protected]:/etc/my.cnf
После этого вы можете запустить mysql_upgrade [-p your_root_password]
, чтобы убедиться, что базы данных обновлены.
Я скажу, что это сработало для меня в (совсем недавнем) прошлом (переход от старого сервера к новому, оба выполняемые FreeBSD 8.x), но YMMV в зависимости от того, сколько версий вы были в прошлом.