Найменша можлива резервна копія… за допомогою SQL Server


37

Щодня ми доставляємо резервні копії SQL Server через WAN. Нам потрібно мінімізувати розмір цих резервних копій, щоб це не вічно було.

Ми не заперечуємо, якщо процес резервного копіювання займе трохи більше часу; як слід, нам потрібно перемістити 30 ГГ стисненого резервного копіювання по всій WAN, що займає більше 10 годин.

Є два варіанти, які ми повинні отримувати менші щоденні резервні копії.

  1. Доставка журналу, що означатиме, що нам доведеться реструктурувати процес ДР.
  2. Вийміть інформацію з db та відновіть на іншій стороні (скиньте некластеризовані індекси, запакуйте кластерні індекси на 100% - відновіть на іншій стороні)

І те й інше залучало б неабияку кількість роботи з нашого боку. Ми використовуємо SQL Server 2008 pro, всі резервні копії стиснуті.

Чи є комерційні продукти, які можуть надати нам аналогічний розмір резервного копіювання (2)?

Чи є там вичерпний сценарій, який дозволить нам виконати (2)? (обробка індексованих подань, відфільтрованих покажчиків, сторонніх ключів тощо)


2
Яка ваша поточна деталізація та частота резервного копіювання, будь ласка (звичайні резервні копії журналу? Щодня повні?) Ви використовуєте Enterprise чи стандартне видання? Оновлення: ви мала компанія DR на орендованому сайті чи велика компанія з постійним сайтом DR? Якщо ви перший, чи є у вас файловий сервер або SQL Server, який працює на сайті
gbn

@ gbn, нам потрібно оптимізувати щоденний повний, ми використовуємо підприємства, DR - це все місцеве, коли люди беруть речі за межами місця. Невеликі резервні копії потрібні для розробників та другого офсетного сайту. зауважте ... розробки є сторонніми, в інших країнах з обмеженою пропускною здатністю нам потрібен мінімальний розмір передачі з серверів у штаті Нью-Йорк (наприклад, в Австралію). Ми синхронізуємо один раз на кілька місяців.
Сем Шафран

1
Для тих, хто цього не усвідомлює, це належить команді SO;)
jcolebrand

1
@Sam Saffron: будь-який відгук, будь ласка, про те, чи прийняли ви щось на зразок моєї пропозиції?
гбн

@gbn ... все ж вирішуючи, що робити, я вважаю, що "регулярне" повернення до роботи в штаті Орегон здійснене із запропонованим вами рішенням. Однак, "Сем повинен завантажувати SO db раз на місяць, проблема все ще є дуже болючою причиною, коли мені потрібно перенести 22гг до Австралії - коли реальність така, що" справжня "інформація може легко вміститися в 10 концертів".
Сем Шафран

Відповіді:


22

Перша думка на основі коментарів ...

Використовуйте диференційні резервні копії кожні, скажімо, 6 годин, щоб зменшити розмір / час резервного копіювання + FTP. Тоді зменшіть повну резервну копію + FTP лише до вихідних. Це дозволяє уникнути складності доставки журналів, просту у виконанні, і лише додає незначної складності DR

Я відчуваю, що диференціальні резервні копії не помічені ... Я пропонував їх використовувати раніше:

Редагувати: після коментаря jcolebrand я спробую пояснити більше

Диференціальне резервне копіювання бере лише сторінки, які були змінені. Поза будь-яким обслуговуванням індексів (що може вплинути на велику кількість баз даних), протягом дня зміниться лише кілька% сторінок. Отже диференціальне резервне копіювання набагато менше, ніж повне резервне копіювання перед будь-яким стисненням.

Якщо у вас є повна резервна копія, скажімо, щотижня, ви можете робити щоденні диференціали та відправляти їх із сайту. Щоденне повне резервне копіювання з різними елементами все одно вимагатиме обох файлів із сайту.

Це має вирішити проблему швидкого отримання даних від A до B, C і D.

Вам, мабуть, потрібно відновити як повний, так і останній диференціал, щоб отримати найновіші дані, але ви можете, можливо, обійти це за допомогою NORECOVERY та файлу STANDBY (я не пробував це з різним відновленням протягом багатьох років, оскільки я останній раз був у чистому DBA робота).

Додатковим бонусом є те, що різні резервні копії не пов'язані з поточними резервними копіями журналу, тому ви можете відокремити будь-яку вимогу з високою доступністю / DR від вимоги "отримати дані до мавп коду".

Я бачу деякі проблеми, якщо у вас є щоденні повні резервні копії за політикою чи аудитом, але розширення відновлення можна застосувати до відновлення будь-якого журналу, щоб скоротити час відновлення. На відміну від резервного копіювання, відновлення diff та журналів взаємодіють.

Сподіваюся, я покрив більшість баз ...


Hyperbac - це дуже розумний інструмент стиснення, який дозволяє стискати резервні копії та залишати незмінними всі плани та завдання, оскільки він обробляє файли на рівні ОС. Якщо вони не хочуть нічого змінювати, а просто додають до коробки новий інструмент, вони обов'язково повинні спробувати. Я знаю, що я користувався ним і любив його для SQL 2005. Але для більшого стиснення вони все-таки повинні виконувати ручну працю ...
Marian

@Marian Я майже впевнений, що Brent O - просто консультант, який потребує.
jcolebrand

@Marian: є обмеження на стиснення та більше стиснення = більше процесора / час. Найменша резервна копія буде з найменшим входом = диференціалом, незалежно від інструменту / формату стиснення. Посилання про час / співвідношення Перше : ви можете давати надзвичайну компресію, але це займає більше часу, а для стисненого файлу в 30 Гб це може зайняти більше часу, ніж FTP ...
gbn

Я погоджуюся з вами з цього приводу, річ у тому, що комерційні інструменти мають кращу ступінь стиснення, ніж MS, і вони налаштовуються (за відсутності процесорів, виділених для операції), вони пропонують шифрування ... та інші функції Я не обов'язково їх хвалять (вони не дуже дешеві), я просто сказав, що деякі з них можна використовувати в поєднанні з поточними резервними копіями SQL Server (full, diff, log), не змінюючи оточення, що хлопці здаються потрібно / хочу. @jcolebrand: отримав, дякую!
Мар’ян

13

Існують комерційні продукти, які можуть допомогти вам стиснути резервні копії краще, ніж натиснуті на 2008 рік. Прикладами є резервне копіювання RedGate , Hyperbac , Idera SQL Backup , Litespeed Backup .

Вони поставляються із додатковою вартістю високих процесорів та типів файлів, які потрібно обробляти інструментами, що не входять до складу MS. Це за винятком Hyperbac (зараз придбаного Redgate), який обробляє файли прозоро і дозволяє створювати файли, сумісні з zip (а також не потрібні сторонні інструменти).

Але не існує жодного інструменту, який запропонує вам файл розміру, який ви отримали, зробивши вручну очищення. Перегляньте статтю Brent Ozar: Як насправді стиснути резервні копії SQL Server , він порадить робити ті самі кроки, що і у вас. 2.


RedGate FTW !!!!
Хоган

@Hogan: якщо ви не можете їх перемогти, купіть їх. Це дуже хороший приклад :-). У будь-якому разі, обидва продукти, які зараз є частиною Redgate та стискають базу даних, можуть співіснувати успішно.
Маріан

12

Питання 1: Чи існує комерційний резервний продукт, який надасть аналогічний розмір резервного копіювання, як вилучення несуттєвих даних, таких як індекси, із бази даних?

Ні. Там багато продуктів для стиснення резервного копіювання (Quest LiteSpeed, резервна копія SQL Red Gate, Idera SQLSafe, Hyperbac тощо), але всі вони функціонують, просто стискаючи вихід регулярного процесу резервного копіювання SQL Server. Деякі з них роблять це хитрими способами - опція HyperBac та LiteSpeed's Engine - це драйвери фільтрів файлової системи, тобто вони перехоплюють вихід на шляху до диска, але кінцевим результатом усіх цих продуктів є лише стиснене резервне копіювання.

Питання 2. Чи є там вичерпний сценарій, щоб скинути всі ці додаткові дані?

З часом, коли ви зберігаєте більше історії в базі даних (4, 5, 8, 10 років), ви не захочете видобувати всі дані індексу та перебудовувати їх з іншого боку WAN. Натомість ви хочете просто передати змінені дані, і саме там надходить журнал доставки.

Ти не повинен цього робити.

Але якщо ви дійсно хочете це зробити (і ні, я вам не допоможу), ви можете зробити це за допомогою резервного копіювання файлових груп. Налаштуйте такі групи файлів бази даних:

  • Основна група файлів (необхідна, але залиште її порожньою)
  • Група файлів ClusteredIndex (покладіть сюди свої кластерні індекси)
  • ExtraneousCrap Filegroup (помістіть тут усе інше)

Почніть робити стислі резервні копії файлових файлів лише перших двох і скопіюйте ці менші на ваш DR-сервер. Ви можете використовувати резервне копіювання та відновлення файлових груп SQL Server 2008 для відновлення первинних та групових файлів ClusteredIndex, і вони одразу будуть доступні для запитів. Вони насправді не стануть працездатними, поки ви не отримаєте ту групу файлів ExtraneousCrap в Інтернеті, але для цього теж є неприємний фокус - у книзі MVP Deep Dives є розділ про редагування системних таблиць для того, щоб зробити групу файлів ExtraneousCrap та всі зв'язаних індексів зникають. Цей трюк небезпечний, абсолютно не підтримується, і чорт поганої ідеї - але ей, ви просили його.


10

Я рекомендую перейти на щось на кшталт доставки журналів. По суті, якщо у вас є вибір надсилання 30 Гіг за 24 години проти надсилання в кінці дня протягом коротшого часового вікна, швидкість мережі буде меншою проблемою для вас.

Ваші розробники в повільній мережі також зможуть завантажувати файли зручнішого розміру через FTP або будь-який процес, який у вас є. Вони також могли налаштувати завдання, які завантажуються протягом дня.

На додаток до стиснення сервера sql, ви можете реалізувати сторонній інструмент, такий, що має більш високу компресію, як lESpeed ​​або Redgate sqlbackup.

Крім того, на стороні мережі ви можете встановити мережеві пристрої, які можуть оптимізувати вашу пропускну здатність до сайту ДР. У минулому я успішно використовував Riverbed Appliance, щоб успішно отримати резервне копіювання 90 ГБ від FL до VA менше ніж за 3 години.

Іншим варіантом буде резервне копіювання конкретних груп файлів, виключаючи індекси тощо, але ви все ще застрягли з кластерними індексами, і залежно від вашої структури db ви можете отримати більше витрат / клопоту, ніж користі від цього підходу.

Спасибі


7

Якщо у вас є гроші на це, а ваша архітектура дозволяє, перегляньте щось на зразок технологій Riverbed (http://www.riverbed.com/us/). Такий пристрій у поєднанні зі сценарієм доставки чи копіювання журналу може бути найкращим варіантом.

Якщо ні, то кілька запитань. Якщо вам потрібно робити оновлення лише кожні кілька місяців, навіщо турбуватися про пропускну здатність? Єдиний раз, коли вам доведеться потурбуватися про передачу, це один раз, отримати повну резервну копію там, щоб зробити відновлення локально, або я помиляюся, що це ваша установка?

Інша можливість - замість того, щоб перейматися отриманням усіх цих даних, налаштувати середовище Citrix та віддалити їх до вас. З Citrix у вас мінімальні вимоги пропускної здатності між клієнтом / хостом, і ви маєте можливість робити все, що вам потрібно локально, і не турбуватися про необхідність повторювати ці зміни в іншому місці. Тільки мої 0,02 долара


Чи можете ви більше пояснити це? Я знаю, що це належить команді StackExchange, тому я впевнений, що їм сподобається більш похідне проходження;)
jcolebrand

Ха-ха, тут є що розглянути. Яку точку ви хотіли б викласти?
SQLChicken

Я мав на увазі копіювання / доставку журналів, але це було як два тижні тому, тому я сумніваюся, що це так само важливо і зараз. Крім того, я просто перечитав і побачив частину про Citrix, і я міг сказати вам тоді (як і зараз), що вони цього не роблять. Вони просто роблять локальну розробку за допомогою інфраструктури DVCS і просто хочуть, щоб дані для тестування / відтворення / підтвердження. Можливо також для дампів даних.
jcolebrand

Готча. Тоді, як уже говорили інші, сторонні постачальники, такі як Redgate і Quest, мають дуже хороші інструменти для стиснення резервного копіювання, щоб допомогти вам задовольнити їхні потреби. Ще одне потенційне рішення - SQL Azure. Зараз обмеження розміру бази даних становить 50 Гб, але вони зняли плату за будь-які завантажені дані, тому це може бути економічно вигідним рішенням.
SQLChicken

4

Я б використовував транзакційну реплікацію SQL. Початкове завантаження потребує певного часу, але як тільки ви встали та працюєте, ви могли лише надсилати інформацію, яку ви хочете. Наприклад, якщо у вас є лише 3 або 4 таблиці, які оновлюються, ви можете надіслати лише ті 3 або 4 таблиці.

Ви також можете вибрати те, що ви хочете перевезти. Показники FK, кластеризовані / некластеризовані індекси, схеми розділів таблиць, збережені документи та інші.

http://www.sql-server-performance.com/2010/transactional-replication-2008-r2/

Якщо це не варіант, ви можете використовувати REDGATE SQL BACKUP - http://www.red-gate.com/products/dba/sql-backup/ . Я використовував це раніше і отримував рівень стиснення до 90%. Набагато менше, ніж у SQL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.