создание скриптов для обновления производственной базы данных - PullRequest
0 голосов
/ 08 марта 2019

Я ищу рекомендации по обновлению производственной базы данных. 90% обновлений - это добавление новых столбцов, новых таблиц, добавление отсутствующих индексов. Иногда мне также необходимо обновить данные, необходимые для работы приложения (обновить операторы или изменить). Я еще не сталкивался с удалением.

Моя текущая настройка разработки заключается в создании mysqldump, rsync его на сервер и импорте в базу данных. Однако этот подход не работает, если в производственной базе данных есть какие-либо пользовательские данные. Я искал SO, и предлагаемый подход заключается в написании сценария любого изменения, которое вы вносите в базу данных

Я использую графический редактор (Sequel Pro) для внесения изменений, поэтому у меня нет кода для всех изменений. Как вы создаете записи, которые содержат все изменения? Управление всеми изменениями вручную очень подвержено ошибкам. В идеале я бы сравнил 2 mysqldumps и сгенерировал бы отчет обо всех изменениях.

1 Ответ

0 голосов
/ 09 марта 2019

Чтобы создать сценарии для внесения изменений в базу данных, вам необходимо установить инструмент под названием редактор.Вот несколько примеров: MySQL Workbench, HeidiSQL, Toad для MySQL, dbForge Studio для MySQL.Для других примеров, просто сделайте онлайн-поиск "mysql editor".Некоторые из этих инструментов бесплатны, другие имеют свою стоимость.Их цель - дать пользователям возможность писать код SQL, а затем выполнять этот код для базы данных.

Что касается создания сценариев, вам необходимо научиться писать операторы SQL вручную.Это чрезвычайно полезный навык для развития.Когда вы знаете, как это сделать, у вас будет очень хорошее понимание того, как работает база данных, и это тоже весело!

Вот пример сценария изменений, который содержит несколько основных примеров операторов MySQL, которые могли быкое-что из того, что вы описали, необходимо сделать в своем посте:

/*
filename: 2019-03-09_ScriptExample.sql
purpose:  demonstrate changing a database by using a script
author:   knot22
created:  03/09/2019
updated:  03/09/2019
*/

--create a new table
CREATE TABLE customer
(
  customer_id INT PRIMARY KEY,
  first_name CHAR(35),
  last_name CHAR(35),
  credit_limit DECIMAL(8,2),
  sales_representative_id INT
);

--add some data to table
INSERT INTO customer(customer_id, first_name, last_name, credit_limit, sales_representative_id)
VALUES
(1, 'Charlie', 'Brown', 1000.00, 14),
(2, 'Mickey', 'Mouse', 500.00, 14),
(3, 'Tweety', 'Bird', 750.00, 21);

--add a column to an existing table
ALTER TABLE customer
ADD COLUMN phone_number VARCHAR(15) AFTER last_name;

--update a row to add a customer's phone number
UPDATE customer
SET phone_number = '123-555-0001'
WHERE customer_id = 2;

Вы также можете запускать запросы для просмотра данных в таблицах.Например -

--query table to have a look at the data in it
SELECT * FROM customer;

Вот ссылка на один из майских сайтов, чтобы помочь вам начать писать SQL: http://www.mysqltutorial.org/basic-mysql-tutorial.aspx

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

Сценарии можно сохранять в виде файлов с расширением .sql.расширение файла.Их можно просматривать / изменять / выполнять в редакторах SQL и просматривать / изменять в текстовых редакторах.Мне нравится сохранять все сценарии изменений, потому что они служат отчетом о том, что изменилось.Добавление в скрипт комментариев о том, когда он был выполнен в средах Dev, Test, Prod, также может быть полезным.

Процесс, который я использую для внесения изменений в базу данных, заключается в следующем.Сначала создайте сценарий в моей среде Dev и попробуйте его там, пока он не будет работать так, как он должен работать.Затем восстановите базу данных Prod в моей тестовой среде и выполните сценарий в тесте.Это симуляция того, что произойдет в Prod.Как только там все работает как положено, наконец, я выполняю скрипт в Prod.

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