Страшно ли вам апдейтить продуктивную базу без бекапов?
От: opt1k Украина  
Дата: 04.04.17 02:55
Оценка:
В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое? Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может, а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие? Что вообще за редиска ' рядом с Enter расположил? Конечно, всё это потом восстановится, хотя и с лагом, но в моей компании неосторожный SQL update может отправить в нокаут тысячи сайтов. Есть такое дело или я навыдумывал? На себе проверять не хочу.
Коплю на ланцер
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: vsb Казахстан  
Дата: 04.04.17 03:20
Оценка:
Здравствуйте, opt1k, Вы писали:

O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое?


Конечно. Не боятся обычно те, кто ещё не грохал базу.

> Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может


Поэтому очень важно иметь очень быстрые и удобные бэкапы/восстановления и автоматизировать выполнение кастомных скриптов с автоматическим бэкапов перед ними. Сильно снижает уровень стресса.

> а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие?


1. Транзакции. Это обязательно, никогда нельзя работать на продакшне с авто-коммитом, даже на тесте не стоит, чтобы привычки не менять.

2. Нормальные инструменты. Enter не должен выполнять запрос. Должно быть подтверждение в каком-то виде. Хотя бы ";" поставить в конце (когда уже уверен, что опечаток нет).

3. Проверки перед коммитом. Посмотри, сколько строк изменилось апдейтом, сделай селект, убедись что всё нормально.

> Есть такое дело или я навыдумывал? На себе проверять не хочу.


Ну знакомый один раз в одной важной базе грохнул важную таблицу. Там бэкапы на ленточку делались, но восстанавливать это умеют особые спецы, которые по заявке приходят не в ту же минуту, процесс восстановления занимает несколько дней, в общем в Казахстане ряд госорганов в эти дни получил выходные вне графика По-моему там на выходные это всё выпало, так что не всё так страшно, но всё равно очень неприятно.
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: ilvi Россия  
Дата: 04.04.17 06:10
Оценка: +2
Здравствуйте, opt1k, Вы писали:

O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое? Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может...


Если не проверить востанавливается ли из бекапа база, то может
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: Dym On Россия  
Дата: 04.04.17 06:41
Оценка: +1
O>Есть такое дело или я навыдумывал? На себе проверять не хочу.
Клонируешь продуктивную базу, накатываешь апдейт на клон, проверяешь, если всё ОК, то два варианта: либо переключаешь клон в продуктив, если такое возможно, либо накатываешь апдейт на продуктив.
Счастье — это Glück!
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: _ABC_  
Дата: 04.04.17 06:52
Оценка:
Здравствуйте, opt1k, Вы писали:

O>Т.е. одним неловким движением update X set Y=' ' enter.

Это в какой среде управления БД такое?
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: Gradiens  
Дата: 04.04.17 06:55
Оценка:
Здравствуйте, opt1k, Вы писали:

O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое?

Конечно, мне вообще страшно бой трогать. И не только базу.
O> Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может,
Страшного — нет, но неприятного — масса. бекапы-то тоже не мгновенно ресторятся.
O> а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие?
Во-первых, транзакции — наше все. Как уже написали выше — все и всегда заворичивай в транзакции.
А во-вторых, надо объяснять начальству, что здесь и сразу можно только все данные похерить. А что-то путное делать надо по уму.
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: TMU_1  
Дата: 04.04.17 08:45
Оценка: +2
O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое? Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может, а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие? Что вообще за редиска ' рядом с Enter расположил? Конечно, всё это потом восстановится, хотя и с лагом, но в моей компании неосторожный SQL update может отправить в нокаут тысячи сайтов. Есть такое дело или я навыдумывал? На себе проверять не хочу.



В очередной раз убеждаюсь, что представление о том, что "ну вот где-то там процессы поставлены" — миф. Везде бардак
От твоего поста больно становится.
Во-первых, отключить автокоммит, за такое вообще надо по голове бить, больно.
Во-вторых, вы что, вручную производите изменения на продуктиве?! Отлаживаешь скрипт на тестовом окружении и запускаешь уже проверенный код на продуктиве.
Одно неловкое движение кладет тысячи сайтов, бог ты мой...
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: AleksandrN Россия  
Дата: 04.04.17 10:33
Оценка: +1
Здравствуйте, opt1k, Вы писали:

O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое? Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может, а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие? Что вообще за редиска ' рядом с Enter расположил? Конечно, всё это потом восстановится, хотя и с лагом, но в моей компании неосторожный SQL update может отправить в нокаут тысячи сайтов. Есть такое дело или я навыдумывал? На себе проверять не хочу.


БД и любые важные данные нужно бэкапить.

Прежде, чем накатывать изменения на продуктивную БД, нужно проверить на тестовой БД, какое влияние окажет обновление.

Постарайся делать коммит только после всех изменений (без промежуточных коммитов).

Прежде чем накатывать изменения, подготовь скрипт для отката сделанных изменений.
Re[2]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: turbocode  
Дата: 04.04.17 10:56
Оценка: +1
AN>БД и любые важные данные нужно бэкапить.
AN>Прежде, чем накатывать изменения на продуктивную БД, нужно проверить на тестовой БД, какое влияние окажет обновление.
AN>Постарайся делать коммит только после всех изменений (без промежуточных коммитов).
AN>Прежде чем накатывать изменения, подготовь скрипт для отката сделанных изменений.

Теоретик? На практике базы могут быть такого огромного размера что для тестовой БД нужно новый датацентр строить.
Re[3]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: _ABC_  
Дата: 04.04.17 11:05
Оценка:
Здравствуйте, turbocode, Вы писали:

T>Теоретик? На практике базы могут быть такого огромного размера что для тестовой БД нужно новый датацентр строить.

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

Ну, это всё разумеется, если данные не представляют собой мусор, который потерять не жалко.
Но если хранится мусор, то непонятно, зачем тратятся деньги на целый датацентр для его хранения...
Re[4]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: turbocode  
Дата: 04.04.17 11:13
Оценка:
_AB>В таких случаях режут данные, но тестовые среды как раз всегда есть,
Порезали данные и тестовая среда перестала покрывать всевозможные варианты поведения: ты написал скрипт который работает на тестовом но завалится на проде.

_AB> а обновления накатывает подготовленный персонал по специально разработанному регламенту, а не рядовой кодер в течение дня.

Кто скрипт пишет? Накатить готовый скрипт любой дурак сможет.
Re[5]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: _ABC_  
Дата: 04.04.17 11:25
Оценка:
Здравствуйте, turbocode, Вы писали:

T>Порезали данные и тестовая среда перестала покрывать всевозможные варианты поведения: ты написал скрипт который работает на тестовом но завалится на проде.

Значит, бездумно порезали.

T>Кто скрипт пишет? Накатить готовый скрипт любой дурак сможет.

Вопрос не в том, чтобы скрипт накатить.
Первый вопрос в том, чтобы справиться с последствиями неудачного наката.
Второй вопрос в том, чтобы удостовериться, что накат прошел успешно.
Re[3]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: AleksandrN Россия  
Дата: 04.04.17 11:29
Оценка:
Здравствуйте, turbocode, Вы писали:

AN>>БД и любые важные данные нужно бэкапить.

AN>>Прежде, чем накатывать изменения на продуктивную БД, нужно проверить на тестовой БД, какое влияние окажет обновление.
AN>>Постарайся делать коммит только после всех изменений (без промежуточных коммитов).
AN>>Прежде чем накатывать изменения, подготовь скрипт для отката сделанных изменений.

T>Теоретик? На практике базы могут быть такого огромного размера что для тестовой БД нужно новый датацентр строить.


Практик. На текущем месте работы так и сделано. БД огромная, есть несколько серверов, работает 24/7. А для тестирования развёрнуты отдельные серверы. Тестовая система не является точной копией боевой (серверов намного меньше, характеристики "железа" хуже), но прежде, чем накатывать изменения в боевую БД, они тестируются.

На предыдущем месте, прежде, чем накатывать изменения на БД клиентов, изменения тестировались сначала нами, потом клиентом.

А если в твой компании от неправильного апдейта могут лечь тысячи сайтов и нет тестовой среды, то однажды — неправильное обновление БД будет сделано. Подумай, какие убытки от этого будут, не разбегутся ли клиенты и не превысят ли убытки затраты на развёртывание тестовой системы.
Re[6]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: turbocode  
Дата: 04.04.17 11:31
Оценка:
T>>Порезали данные и тестовая среда перестала покрывать всевозможные варианты поведения: ты написал скрипт который работает на тестовом но завалится на проде.
_AB>Значит, бездумно порезали.

А если думно то выйдет что нужна полная копия, чего сделать нельзя.
Re[4]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: turbocode  
Дата: 04.04.17 11:37
Оценка:
AN>А если в твой компании от неправильного апдейта могут лечь тысячи сайтов и нет тестовой среды, то однажды — неправильное обновление БД будет сделано. Подумай, какие убытки от этого будут, не разбегутся ли клиенты и не превысят ли убытки затраты на развёртывание тестовой системы.

У авиадиспетчеров тоже есть тестовые самолетики? Не пиши ерунды.
Re[7]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: _ABC_  
Дата: 04.04.17 11:40
Оценка:
Здравствуйте, turbocode, Вы писали:

T>А если думно то выйдет что нужна полная копия, чего сделать нельзя.

Примеры привести сможешь?
Re[5]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: AleksandrN Россия  
Дата: 04.04.17 11:40
Оценка:
Здравствуйте, turbocode, Вы писали:

AN>>А если в твой компании от неправильного апдейта могут лечь тысячи сайтов и нет тестовой среды, то однажды — неправильное обновление БД будет сделано. Подумай, какие убытки от этого будут, не разбегутся ли клиенты и не превысят ли убытки затраты на развёртывание тестовой системы.


T>У авиадиспетчеров тоже есть тестовые самолетики? Не пиши ерунды.


Самолётов нет, а какой-нибудь имитатор, моделирующий входные данные для диспетчерской системы, наверняка есть.
Re[5]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: _ABC_  
Дата: 04.04.17 11:44
Оценка: +2
Здравствуйте, turbocode, Вы писали:

T>У авиадиспетчеров тоже есть тестовые самолетики?

Вообще говоря, есть. Примерно в той же степени, в какой у системы есть тестовые клиенты.

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

T>Не пиши ерунды.

Последуй собственному совету.
Re[6]: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: turbocode  
Дата: 04.04.17 11:45
Оценка:
AN>Самолётов нет, а какой-нибудь имитатор, моделирующий входные данные для диспетчерской системы, наверняка есть.
Вот видишь если начать думать то оказывается что всё можно делать.
Re: Страшно ли вам апдейтить продуктивную базу без бекапов?
От: BlackEric http://black-eric.lj.ru
Дата: 04.04.17 11:51
Оценка:
Здравствуйте, opt1k, Вы писали:

O>В который раз ловлю себя на мысли, что мне страшно апдейтить продуктивную базу. У вас есть такое? Ну я понимаю, что если перед каждым апдейтом бекап делать (как оно по уму и делается), то ничего страшного нет и быть не может, а как быть, когда надо вот здесь и сразу, а ентер ведь рядом с '? Т.е. одним неловким движением update X set Y=' ' enter. мы отправляем пару тысяч строк данных в небытие? Что вообще за редиска ' рядом с Enter расположил? Конечно, всё это потом восстановится, хотя и с лагом, но в моей компании неосторожный SQL update может отправить в нокаут тысячи сайтов. Есть такое дело или я навыдумывал? На себе проверять не хочу.


Да и это нормально. Вначале все отлаживается на тесте, а потом накатывается и как правило это разные люди, т.е. работа разработчика проверяется тестером и/или DBA.
https://github.com/BlackEric001
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.