Создание копии базы данных MySQL для разработки

#php #mysql

#php #mysql

Вопрос:

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

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

ОБНОВЛЕНИЕ: Я попытаюсь извлечь некоторые данные. Например, у меня есть таблица Users:

 User table:
name  | email         | role         | phone   |
-----------------------------------------------
user2 | mail@mail.com | guest        | 1234567 |
user2 | mail@mail.com | admin        | 1234567 |
user2 | mail@mail.com | manager      | 1234567 |
user2 | mail@mail.com | topmanager   | 1234567 |
  

Но, конечно, в этой таблице есть только данные реальных пользователей. И так далее, немного похожих таблиц.
Итак, я хочу создать скрипт, который выгружает всю производственную базу данных, удаляет некоторые важные и конфиденциальные таблицы, такие как пользователи, заказы, платежи и так далее. После этого скрипт помещает фиктивные данные в эти таблицы, например, данные пользователей, которые я ввел ранее.

Ответ №1:

Вы можете использовать mysql в командной строке.

 ssh -C user@newhost "mysql -uUSER -pPASS -e 'create database NEW_DB_NAME;'" 
amp;amp; mysqldump --force --log-error=mysql_error.log -uUSER -pPASS OLD_DB_NAME 
| ssh -C user@remotehost "mysql -uUSER -pPASS NEW_DB_NAME"
  

Ответ №2:

Вы имеете в виду, что хотите предоставить им копию базы данных с анонимизированными некоторыми разделами?

Почему бы не написать что-то вроде:

 UPDATE `mytable` SET `foo` = `bar`
  

как анонимизировать эти столбцы? Вы могли бы написать PHP-скрипт, который экспортирует базу данных, а затем выполняет это в любых соответствующих таблицах и столбцах.

Или я неправильно интерпретирую вопрос?

Ответ №3:

Если вы хотите предоставить общий доступ только к DDLS ваших таблиц (инструкции CREATE TABLE)

  1. Найдите список таблиц, которыми вы хотите поделиться.

  2. Напишите сценарий оболочки для входа в mysql и получите DDLS для каждой таблицы один за другим.

    ИМЯ_ТАБЛИЦЫ ОПИСАНИЯ_1;

    ИМЯ_ТАБЛИЦЫ ОПИСАНИЯ_2;

  3. Перенаправьте выходные данные в файл.

  4. Поделитесь этим файлом.

Комментарии:

1. Почему это так громоздко? Существует --no-data переключатель для mysqldump , который делает именно это.