создание скриптов для обновления производственной базы данных

0

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

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

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

Теги:
database

1 ответ

0

Чтобы создать сценарии для внесения изменений в базу данных, вам необходимо установить инструмент под названием редактор. Вот несколько примеров: 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 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.

  • 0
    Спасибо, что заглянули на @ knot22. То, как вы описали свой рабочий процесс, - это то, что я предполагал сделать. К сожалению, я считаю это очень трудоемким, хотя я свободно владею SQL. Я предполагаю, что вещь, на которую я надеялся, - это создание SQL-операторов из визуальных обновлений (или сравнений mysqldumps) и упаковка их в скрипт.
  • 0
    О, извините - я не осознавал, что вы уже свободно владеете SQL ... в оригинальном сообщении, упоминаемом с использованием графического интерфейса. Я не знаю ни одного инструмента, способного переводить визуальные эффекты в код. Это не значит, что они не существуют.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню