Как выборочно экспортировать данные MySQL для репозитория GitHub - PullRequest
2 голосов
/ 10 сентября 2011

Мы являемся проектом с открытым исходным кодом и хотели бы совместно отредактировать наш веб-сайт с помощью публичного репозитория github.

Любые идеи о наилучшем решении для экспорта данных mysql в github, поскольку mysql может хранить некоторую конфиденциальную информацию вэто, и как мы можем откорректировать изменения, которые происходят в нем?

Ответы [ 8 ]

5 голосов
/ 10 сентября 2011

Ответ: у вас нет данных в репо.Вы можете хотеть держать свой ddl, и возможно некоторые данные конфигурации.Но это все.Если вы хотите контролировать свои данные версией, есть и другие варианты.GIT не один из них

1 голос
/ 20 сентября 2011

Кажется, dbdeploy - это то, что вы ищете

1 голос
/ 20 сентября 2011

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

Напишите сценарий оболочки, который эквивалентен:

mysqldump [options] database table1 table2 ... tableN > important_data.sql

для создания или обновления файла. Установите этот файл в git, и когда ваши данные значительно изменятся, вы можете сделать:

mysql [options] database < important_data.sql

В идеале последний должен быть в git post-receive хуке, поэтому вы никогда не забудете применить свои изменения.

Так вот как ты мог это сделать. Я не уверен, что вы захотите это сделать. Это кажется довольно хрупким, особенно если член команды 1 вносит некоторые трудоемкие изменения в таблицы интересов, в то время как участник команды 2 делает то же самое. Один из них собирается сначала зарегистрировать свои изменения, и в лучшем случае у вас будут неприятные проблемы слияния. В худшем случае один из них потеряет все свои изменения.

Вы можете смягчить эти проблемы, всегда внося изменения в файл important_data.sql, но простота или сложность этого зависит от вашего приложения. Если вы сделаете это, вам захочется поиграть с опциями mysqldump, чтобы вы получили хороший читаемый и git- объединяемый файл.

1 голос
/ 17 сентября 2011

Используйте движок блога "backend-ed by git", забудьте о mysql, зафиксируйте на github.com, нажмите и потяните, доминируйте!

Вот список лучших:

  1. http://jekyllrb.com/
  2. http://nestacms.com/
  3. http://cloudhead.io/toto
  4. https://github.com/colszowka/serious

и на всякий случай ... простая, работающая на Git вики с приятным API и локальным интерфейсом. :

0 голосов
/ 20 сентября 2011

Вы можете создавать версии файлов mysqldump, которые являются просто сценариями sql, как указано в предыдущих ответах.Исходя из ваших комментариев, кажется, что ваш основной интерес заключается в том, чтобы позволить разработчикам иметь основу для локальной среды.

Вот отличная ERD для Drupal 6. Я не знаю, какую версию Drupal вы используете или были ли изменения в этих основных таблицах между v6 и v7, но вы можете проверить это с помощью дампаили phpMyAdmin или любой другой инструмент, который у вас есть в наличии, который позволяет вам проверять структуру базы данных. Drupal ERD

Исходя из ERD, данные, которые могут быть проблематичными для установки Drupal, находятся в таблицах users, user_roles и authmap.Существует быстрый способ их пропустить, хотя важно помнить, что добавляемый контент будет иметь отношение к пользователям, которые его добавили, и у Drupal могут возникнуть проблемы, если в пользовательской таблице нет строк, соответствующих тому, чтобыл добавлен.

Таким образом, чтобы написать скрипт mysqldump, вы просто исключили бы проблемные таблицы или, по крайней мере, пользовательскую таблицу.

mysqldump -u drupaldbuser --password=drupaluserpw 0-ignore-table=drupaldb.user drupaldb > drupaldb.sql

Вам необходимо создать фиктивную пользовательскую таблицу.с группой тестовых пользователей с известными комбинациями имен и паролей, которые вам нужно будет только разгрузить и записать, но в идеале вы хотите, чтобы их было достаточно, чтобы они соответствовали или превышали количество реальных пользователей drupal, которые будут добавлять контент.Это просто для того, чтобы отношения разрешений совпадали.

0 голосов
/ 20 сентября 2011

Если вы просто хотите частичный дамп, PHPMyAdmin сделает это.Запустите оператор SELECT, и когда он отобразится, будет ссылка для экспорта в внизу страницы (одна вверху выполняет всю таблицу).

0 голосов
/ 20 сентября 2011

Если бы вы говорили о конфигурации, то я бы порекомендовал sql-дампы или аналогичные для заполнения базы данных согласно ответу Рэя Бакстера.

Поскольку вы упомянули Drupal, я предполагаю, что данные касаются пользователей / контента. Таким образом, вы действительно должны иметь единую базу данных, к которой каждый разработчик подключается удаленно, то есть одну единственную версию. Это связано с тем, что одновременные изменения таблиц mysql будет чрезвычайно трудно согласовать (например, два новых пользователя, каждый с user.id = 10, каждый создает новое сообщение с post.id = 1, post.user_id = 10 и т. Д.).

Разумеется, может иметь смысл подкрепить это дампом sql (потенциально хранящимся в системе контроля версий) на случай, если один из ваших разработчиков случайно удалит что-то критическое.

0 голосов
/ 20 сентября 2011

Вы можете экспортировать каждую таблицу как отдельный файл SQL.Только после изменения таблицы ее можно снова нажать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...