Просмотр полной версии : 1С MS SQL
Может кто-нить поделиться планами обслуживания MS SQL?
Резервирование настроил, график:
* Ежегодные - ручками, после закрывания года
* Последний год:
* ежемесячные.
* Последний месяц:
* Еженедельные - full
* Ежедневные - diff
* Журнал транзакций - каждые пол-часа.
Вопрос, что еще в каждый бэкап можно делать (при каждом full пересчитываю индексы, целостность, сжатие)?
ЗЫ. Не особо важно, но у нас фулл бэкап 20 гигов одной из 4 баз.
И исчо. Ежемесячные бэкапы делаются, но так же и еженедельные в первую неделю выходит наклад. Как не делать еженедельное резервирование в первую неделю месяца?
Убрать из скрипта ежемесячный backup. Написать второй сценарий (любым способом, хоть bat в планировщик), который будет делать банальную вещь: копировать раз в месяц свежесозданный еженедельный архив в теплое сухое место.
Странный вопрос на автомобильном форуме, не? :)
На инфостарте туча статей по бэкапу средствами SQL Server Management Studio. Например (http://infostart.ru/public/173494/)
По вашей схеме я бы добавил FREEPROCCACHE. Почему, почитайте Гилева
Убрать из скрипта ежемесячный backup. Написать второй сценарий (любым способом, хоть bat в планировщик), который будет делать банальную вещь: копировать раз в месяц свежесозданный еженедельный архив в теплое сухое место.
Это вариант. А как решить вопрос с синхронизацией? Т.е. запускать крон после удачного завершения бэкапа?
- - - Добавлено - - -
Странный вопрос на автомобильном форуме, не? :)
На инфостарте туча статей по бэкапу средствами SQL Server Management Studio. Например (https://gomelauto.com/forum/go.php?http://infostart.ru/public/173494/)
По вашей схеме я бы добавил FREEPROCCACHE. Почему, почитайте Гилева
Странный, не странный, но ответили же ))
Инфостарт прочтён. Оттуда и схема вырисовалась (точнее, оттуда пересчет индексов и прочее обслуживание).
Про кэш понятно, почитаю, как отразится на пользователях его очистка, так как у нас 24/7 производство.
Это вариант. А как решить вопрос с синхронизацией? Т.е. запускать крон после удачного завершения бэкапа?
Вариантов много. В стороннем софте вы не ограничены. Зачем использовать командную строку в 21 веке?)
Можете "штатными" T-SQL копировать в сеть (http://its.1c.ru/db/metod8dev#content:2378:hdoc)
Тот же handy backup умеет синхронизировать и обмениться с облаками и удаленными хранилищами
Вариантов много. В стороннем софте вы не ограничены. Зачем использовать командную строку в 21 веке?)
Сторонний софт не хочется. Очень не хочется.
Можете "штатными" T-SQL копировать в сеть (http://its.1c.ru/db/metod8dev#content:2378:hdoc (https://gomelauto.com/forum/go.php?http://its.1c.ru/db/metod8dev#content:2378:hdoc))
EXEC SP_ADDUMPDEVICE и BACKUP DATABASE все равно приведут к созданию и недельной и месячной копии.
Тот же handy backup умеет синхронизировать и обмениться с облаками и удаленными хранилищами
Стоит symantec exec. Хочется без него (дорого)
ЗЫ. За Гилева - спс!
ЗЫЫ. Я только становлюсь DBA MS SQL, необходимость, надеюсь, временная.
- - - Добавлено - - -
Чутка оффтопа... По vsphere есть у нас кто?
Зачем использовать командную строку в 21 веке?)
Так, отстраненно...
Самые интересные, дешевые и логичные решения на сегодняшний день - как раз в этой строке. Правда на "линусе". 7 серверов архивируются легко и просто.
3 резервных - крутятся "голыми". В любой момент, запуском одного скрипта на выбраный "голый" сервер накатываются конфиги и данные. В итоге - 5-10 минут, и сервер поднят в замен упавшего без новых HB технологий.
EXEC SP_ADDUMPDEVICE и BACKUP DATABASE все равно приведут к созданию и недельной и месячной копии.
под рукой сейчас studio нету, но разве там нету тригеров по дням недели, числам месяца?
Делайте тогда несколько сценариев с разными префиксами бэкапов (дневные, мес. и т.д.) и складывайте в отдельные папки на каждый день. Дубли прибивайте той же командной строкой, если вам так проще.
Вы же сами понимаете, универсального варианта нет, у каждого свои фобии.
Так, отстраненно...
Самые интересные, дешевые и логичные решения на сегодняшний день - как раз в этой строке. Правда на "линусе".
Мы с вами говорили про windows. И, соответственно, мой комментарий относился только к этой среде.
Делайте тогда несколько сценариев с разными префиксами бэкапов (дневные, мес. и т.д.) и складывайте в отдельные папки на каждый день.
Есть там все.
Нашел кривоватый путь. "Каждую вторую субботу, каждую третью" и так далее. Пока есть это, буду ковырять далее. Думается и универсальный вариант есть. Опыта маловато.
Мы с вами говорили про windows. И, соответственно, мой комментарий относился только к этой среде.
Я согласен. Я же написал, что это: "отстраненно".
Сейчас на 50-й странице PowerShell for Nuts. Винда-таки догоняет линусь (это без упреков и обид, PowerShell - реально круто).
- - - Добавлено - - -
ЗЫ. Делюсь, правда может это только для меня новость, но по iSCSI у MS SQL получается на сетевой диск ложить копии как буд-то на родной.
В столовой услышал:
- Бэкап - акт проявления трусости
Несколько человек поперхнулись чаем (цэ какой-то сайт про 1С)
Гыы )))
- Бэкап - акт проявления трусости
Так и тормоза - тоже трусы придумали ))
Вообще про бэкап говорят так: "Есть люди, которые его делают и есть люди, которые его ЕЩЕ НЕ делают".
От себя добавлю, что есть еще третьи. Которые, и делают, и проверяют бэкапы. А некоторые делают в двух-трех местах. Зависит от того, что стоит больше. Восстановить данные с нуля или работы по их сохранению.
Заново перелистываю скрипты бэкапов... Человек вроде написал, но мне не нравится.
И вот почему. FORMAT появилась с 2012 SQL. У меня 2008 R2. Нужно получить строку в виде "yyyymmdd_hhmiss" (для имени файла бэкапа).
Вроде есть DATEPART, но она при передаче и S и SS возвращает секунды без 0 спереди (и для m или mi, судя по всему тоже). Поэтому разобраться при восстановлении бэкапа - не представляется возможным (сегодня, например, был такой бэкап: 20170109_1711). То ли 17:11:00, то ли 17:01:01. По дате файла все понятно, но "напрягает".
Гугление ни к чему не привело.
С наскока решил вот так (@CurrTS = GETDATE()):
--- Получаем строку из текущего времени формата "hhmmss"
SET @BackupTimeStamp = (DATEPART(hh, @CurrTS) * 10000) + (DATEPART(mi, @CurrTS) * 100) + DATEPART(ss, @CurrTS);
Есть вариант короче?
ЗЫ. "Красивше" )
Вроде есть DATEPART, но она при передаче и S и SS возвращает секунды без 0 спереди (и для m или mi, судя по всему тоже). Поэтому разобраться при восстановлении бэкапа - не представляется возможным (сегодня, например, был такой бэкап: 20170109_1711). То ли 17:11:00, то ли 17:01:01. По дате файла все понятно, но "напрягает".
Гугление ни к чему не привело.
Первый же запрос по datepart: https://msdn.microsoft.com/en-us/library/ms174420.aspx
Очень четко написано, почему у вас нет лидирующих нулей.
Да я знаю, почему нет нулей. Потому что int.
проще всего имхо
RIGHT("00"+DATEPART(ss, @CurrTS),2)
либо забить :)
P.S. Я б забил и использовал стандартный формат 2017_01_05_004549_0027175
Умножение всего, а потом преобразовать в строку для процессора проще, чем перевод в строку каждого, а потом операции со строками, а потом конкатенация. Хотя, на самом деле пофиг. Операция выполняется 1 раз в 1 бэкап (грубо, раз в час).
ЗЫ. Просто выглядят файлы бэкапа понятнее стороннему человеку (даже ручками когда восстанавливаешь, можно понять, что куда).
У меня получается такое:
D:\Backup\Base1\Base1_-1month_full_20161205_170001.bak
D:\Backup\Base1\Base1_0month_full_20170102_170001.bak
...
D:\Backup\Base1\Base1_-2week_full_20161226_170001.bak
D:\Backup\Base1\Base1_-1week_full_20170102_170001.bak
D:\Backup\Base1\Base1_0week_full_20170109_170001.bak
...
D:\Backup\Base1\Base1_-2day_diff_20170107_170101.bak
D:\Backup\Base1\Base1_-1day_diff_20170108_170101.bak
D:\Backup\Base1\Base1_0day_diff_20170109_170101.bak
...
D:\Backup\Base1\Base1_0day_log_20170109_170001.lgb
D:\Backup\Base1\Base1_0day_log_20170109_173101.lgb
D:\Backup\Base1\Base1_0day_log_20170109_180001.lgb
...
0 - текущий день, неделя, месяц, год (год, правда отдельно после закрывания остатков делается вручную).
-1 - соответственно, вчера, прошлая неделя, месяц...
ЗЫЫ. Хотелось 1 функцией. В идеале...
В столовой услышал:
- Бэкап - акт проявления трусости
Несколько человек поперхнулись чаем (цэ какой-то сайт про 1С)
У нас тут снова шифровальщика поймала секретарь. У нее был подключен сетевой диск на файло-помойку. Как обычно, большинство пользователей там держали рабочие файлы...
4 тера зашифрованных документов )))
Благо чай они не пили. Подавились пиченьками )))
Плюс, к тому, заметили это не сразу (там праздники как раз были), соответственно в бэкапах те же 4 Тб зашифрованных файлов. Перевожу бэкапы на git. С историей в месяц.
Но есть плюс - я воспылал новой страстью к OpenOffice. Его документы не тронуты остались.
О какой производительности речь при операциях со строкой в n символов.
Так ИМХО более читабельно и "красивше":
SET @timestamp = CONVERT(varchar, getdate(), 120); //yyyy-mm-dd hh:mi:ss(24h)
SET @timestamp = REPLACE(@timestamp,":","");
SET @timestamp = REPLACE(@timestamp," ","_");
SET @timestamp = REPLACE(REPLACE(CONVERT(varchar, getdate(), 120),":","")," ","_");
- - - Добавлено - - -
У нас тут снова шифровальщика поймала секретарь. У нее был подключен сетевой диск на файло-помойку. Как обычно, большинство пользователей там держали рабочие файлы...
4 тера зашифрованных документов )))
Благо чай они не пили. Подавились пиченьками )))
Плюс, к тому, заметили это не сразу (там праздники как раз были), соответственно в бэкапах те же 4 Тб зашифрованных файлов. Перевожу бэкапы на git. С историей в месяц.
Но есть плюс - я воспылал новой страстью к OpenOffice. Его документы не тронуты остались.
Была похожая хрень. Админ в общей шаре на каждого сотрудника создавал директории с правом записи только у него (сотрудника), поэтому далеко не ушло.
Если "жирный" внешний канал и есть проплаченное облако, то конечно можно и там хранить.
Согласен, умножение на 10000 не сразу доходит.
Но можно добавить UDF типа:
function GetFileTS
И обернуть все внутри.
Спасибо за предложение.
ЗЫ. Твое предложение одной строкой читается хуже, чем мое.
ЗЫЫ. Вот как приятно в постгре (еще 8.2 который) (https://www.postgresql.org/docs/8.2/static/functions-formatting.html)... Хотелось именно такого...
- - - Добавлено - - -
Была похожая хрень. Админ в общей шаре на каждого сотрудника создавал директории с правом записи только у него (сотрудника), поэтому далеко не ушло.
Если "жирный" внешний канал и есть проплаченное облако, то конечно можно и там хранить.
Это уже не помойка, а рабочие директории. И это правильно. У нас тоже есть. Но пользователям проще в помойке хранить файлы для обмена. И правильнее было бы закрыть помойку, но...
Есть такой вот (http://www.synology.su/products/141) NAS (9 Тб RAID 10). Вот на него и хочу версионный бэкап запилить...
Перевод: zCarot