Как правильно экспортировать/импортировать базу данных WordPress (MySQL) через командную строку?

6 дек. 2012 г., 12:28:48
Просмотры: 23K
Голосов: 8

Обычно база данных MySQL может быть экспортирована и импортирована с помощью этих простых SSH команд:

Экспорт:

mysqldump -u USERNAME -p DATABASE_NAME > filename.sql

Импорт:

mysql -u USERNAME -p DATABASE_NAME < filename.sql

Но когда дело касается WordPress, все не так просто. Из того, что я вижу, необходимо указывать дополнительные параметры, например --add-drop-table.

В WordPress Codex есть некоторая информация, но она выглядит запутанной и недостаточно понятной.

Было бы здорово, если бы кто-то, кто использует командную строку, мог поделиться правильными командами для экспорта и импорта базы данных WordPress с пояснениями (любых новых используемых параметров).

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

0
Все ответы на вопрос 3
5
15

Для WordPress это тоже так просто. Я использую следующую команду для резервного копирования моих сайтов на WP:

mysqldump -u USER -pPASSWORD --quick --extended-insert DBNAME > backup.sql

Документация по mysqldump содержит подробности обо всех параметрах.

--extended-insert ускоряет процесс обновления базы данных из дампа и делает файл дампа меньше.

--quick ускоряет создание дампа.

На самом деле вам не обязательно использовать эти параметры, они просто делают процесс немного быстрее, а запись INSERT для каждой строки просто делает меня счастливее - ваш оригинальный синтаксис дампа тоже подойдет.

Не забывайте, что в базе данных есть записи, специфичные для домена, поэтому если вы используете этот метод для резервного копирования/восстановления, то все в порядке, но если вы хотите перенести сайт с one.com на two.com, вам нужно будет отредактировать записи в wp_options после восстановления дампа.

6 дек. 2012 г. 12:55:34
Комментарии

Но как насчёт параметра --add-drop-table и подобных, упомянутых на странице кодекса? http://codex.wordpress.org/Backing_Up_Your_Database#Using_Straight_MySQL_Commands - вы уверены, что они не нужны?

its_me its_me
6 дек. 2012 г. 13:56:42

Это не требуется, с используемыми мной опциями все дамп-файлы содержат это перед созданием таблицы и последующими вставками:

DROP TABLE IF EXISTS <wp_tablename>;

поэтому таблицы всегда сначала удаляются, затем создаются заново, и только потом в них вставляются данные

Steve Claridge Steve Claridge
6 дек. 2012 г. 23:18:06

Подтверждаю слова Стива - ваши исходные команды mysqldump -u USERNAME -p PASSWORD DATABASE_NAME > filename.sql и mysql -u USERNAME -p PASSWORD DATABASE_NAME < filename.sql будут работать отлично. Единственное, о чём действительно стоит беспокоиться - это выполнение замен строк между экспортом и импортом при переносе между доменами.

neil_pie neil_pie
10 дек. 2012 г. 11:23:54

В качестве обновления информации о параметрах: это из документации mysqldump:

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

Использование --opt эквивалентно указанию --add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick и --set-charset. Все параметры, которые представляет --opt, также включены по умолчанию, поскольку --opt включен по умолчанию.

neil_pie neil_pie
10 дек. 2012 г. 11:30:39

также полезно для миграции добавлять --compatible=mysql40

MAQ MAQ
17 янв. 2018 г. 21:16:09
0

Потратив время на изучение основ командной строки, я все реже использую phpMyAdmin. Однако, я нахожу его более удобным, когда нужно просмотреть или отредактировать запись (например, редактирование записей в wp_options, как упомянул Стив выше). Раньше я также обращался к графическому интерфейсу, когда хотел исключить особенно большую таблицу (например, логи плагина), которую не нужно было резервировать. Но я обнаружил, что можно просто добавить:

--ignore-table=my_db_name.my_table_name my_db_name
9 дек. 2012 г. 11:32:08
0

Для копирования сайта в новое местоположение.

Используйте параметр --add-drop-table при экспорте, если импортируете в пустую базу данных.
Не используйте параметр --add-drop-table при экспорте, если импортируете для объединения с существующей базой данных.

После каждого импорта не забудьте обновить таблицу wp_options, так как путь будет отличаться.
Также обновите файл .htaccess с новым путём.

30 нояб. 2014 г. 08:10:48