У меня есть две среды веб-сайтов (отдельные серверы, Media Temple DV): Dev и Production.
Мы начали создавать сайт на Production, затем получили сервер Dev, поэтому я изначально переместил базу данных Production на Dev, используя такие команды:
$ mysqldump -a -u USERNAME -p DATABASE > OUTPUT.mysql
$ gzip OUTPUT.mysql
Затем я создал веб-сайт сервера Devи базы данных, переместил OUTPUT.mysql и настроил среду MySQL в Dev для импорта:
$ mysql -u USERNAME -p DATABASE
set up environment for large data import:
mysql> set global net_buffer_length=1000000;
mysql> set global max_allowed_packet=1000000000;
mysql> exit
И импортировал данные и схему в Dev с помощью следующих команд:
$ gunzip -f OUTPUT.mysql.gz
$ mysql -u USERNAME -p TARGET_DATABASE_NAME < OUTPUT.sql
СейчасЯ внес изменения в структуру базы данных Dev MySQL, такие как добавление / удаление полей в существующих таблицах и добавление таблиц, и я хотел бы перенести свои изменения в Production.
Как мне перенести только обновленную структуру из базы данных Dev и импортировать в Production с использованием командной строки, аналогично тому, что я делал изначально, но без перезаписи живых данных?(Все мои оперативные данные находятся в рабочей среде, поэтому нет необходимости переносить данные из Dev.)
База данных стала слишком большой, чтобы сделать это с помощью phpMyAdmin (кроме того, командная строка кажется быстрее и прощеработать с).Было бы неплохо держаться подальше от сторонних инструментов или программного обеспечения с открытым исходным кодом, потому что кажется, что это должен быть простой процесс, который я могу добавить в сценарий.Или я ошибаюсь и что-то лучшее, что мне не хватает?
ОБНОВЛЕНИЕ : Итак, основываясь на приведенных ниже ответах и дополнительном чтении, я написал сценарий PHP, который проверяет как действующую базу данных, так и мою локальную базу данных (включая некоторые изменения) и сравниваетразличия между таблицами.
Сценарий находит, какие таблицы отсутствуют в действующей базе данных по сравнению с локальной, используя функцию MySQL «SHOW TABLES» для обеих баз данных и сравнения.Для этих таблиц, которые отсутствуют, я использовал SHOW CREATE TABLE, чтобы получить операторы MySQL для создания таблиц.
Аналогично, скрипт находит, какие столбцы отсутствуют, используя таблицу SHOW COLUMNS FROM $ для каждой таблицы в каждой базе данных.Эта команда MySQL возвращает имена и атрибуты столбцов, поэтому я мог бы автоматически создавать операторы ALTER TABLE для отсутствующих столбцов.
Наконец, PHP-скрипт выводит все как SQL-скрипт для создания и изменения таблиц, которые я запускал в phpMyAdmin.