การสำรองข้อมูลที่น้อยที่สุดทำได้ ... ด้วย SQL Server


37

ทุกวันเราจัดส่งข้อมูลสำรอง SQL Server ของเราทั่วทั้ง WAN เราจำเป็นต้องลดขนาดของการสำรองข้อมูลเหล่านี้เพื่อไม่ให้ใช้งานได้ตลอดไป

เราไม่รังเกียจหากกระบวนการสำรองข้อมูลของเราใช้เวลานานขึ้น เนื่องจากเราจำเป็นต้องย้ายการสำรองข้อมูลที่บีบอัด 30 กรัมข้าม WAN ที่ใช้เวลานานกว่า 10 ชั่วโมง

มี 2 ​​ตัวเลือกที่เราจะต้องได้รับการสำรองข้อมูลรายวันขนาดเล็ก

  1. บันทึกการจัดส่งซึ่งหมายความว่าเราจะต้องปรับโครงสร้างกระบวนการ DR
  2. ดึงข้อมูลออกจาก db และสร้างใหม่อีกด้านหนึ่ง (ดร็อปดัชนีที่ไม่ใช่คลัสเตอร์แพ็คดัชนีคลัสเตอร์ที่ 100% - สร้างใหม่อีกด้านหนึ่ง)

ทั้งสองจะเกี่ยวข้องกับปริมาณงานที่เป็นธรรมจากส่วนของเรา เราใช้ SQL Server 2008 pro การสำรองข้อมูลทั้งหมดจะถูกบีบอัด

มีผลิตภัณฑ์เชิงพาณิชย์ใดบ้างที่สามารถให้ตัวเลือกสำรองขนาดใกล้เคียงกันกับตัวเลือก (2)

มีสคริปต์ที่ครอบคลุมที่จะช่วยให้เราสามารถบรรลุ (2)? (การจัดการมุมมองที่จัดทำดัชนีดัชนีกรองคีย์ต่างประเทศและอื่น ๆ )


2
ข้อมูลสำรองและความถี่ปัจจุบันของคุณคืออะไรโปรด (สำรองข้อมูลบันทึกประจำวันเต็มทุกวัน?) คุณใช้ Enterprise หรือ Standard Edition หรือไม่ อัปเดต: คุณเป็น บริษัท DR ขนาดเล็กในไซต์ที่เช่าหรือ บริษัท ใหญ่ที่มีไซต์ DR ถาวรหรือไม่ หากวันที่ 1 หนึ่งคุณมีไฟล์เซิร์ฟเวอร์หรือ SQL Server ทำงานนอกสถานที่
GBN

@gbn เราจำเป็นต้องปรับให้เหมาะสมสำหรับรายวันเต็มเราใช้องค์กร DR เป็นคนในพื้นที่ทั้งหมดที่มีคนกำลังถ่ายทำนอกสถานที่ จำเป็นต้องสำรองข้อมูลขนาดเล็กสำหรับ devs และนอกสถานที่ที่สองที่เรามี โปรดทราบ ... devs อยู่นอกสถานที่ในประเทศอื่นที่มีแบนด์วิดท์ จำกัด เราต้องการขนาดการถ่ายโอนที่น้อยที่สุดจากเซิร์ฟเวอร์ใน NY ไปยัง (ตัวอย่าง) ออสเตรเลีย เราซิงค์ทุก ๆ สองสามเดือน
Sam Saffron

1
สำหรับทุกคนที่ไม่ได้ตระหนักถึงสิ่งนี้นี่คือทีม SO ที่เหมาะสม;)
jcolebrand

1
@ Sam Saffron: ข้อเสนอแนะใด ๆ โปรดว่าคุณนำบางสิ่งบางอย่างเช่นคำแนะนำของฉัน?
gbn

@gbn ... ยังคงตัดสินใจว่าจะทำอย่างไรฉันคิดว่า "ปกติ" - สิ่งที่กลับไปที่งานโอเรกอนเป็นไปได้ด้วยวิธีแก้ปัญหาที่คุณแนะนำ อย่างไรก็ตาม "แซมต้องการดาวน์โหลด SO db เดือนละครั้งยังคงเป็นปัญหาที่เจ็บปวดมากฉันต้องย้าย 22gigs ไปออสเตรเลีย - เมื่อความจริงก็คือว่าข้อมูล" ของจริง "สามารถพอดีกับ 10 กิ๊ก"
Sam Saffron

คำตอบ:


22

ความคิดแรกขึ้นอยู่กับความคิดเห็น ...

ใช้การสำรองข้อมูลที่แตกต่างกันทุก ๆ 6 ชั่วโมงเพื่อลดขนาด / เวลาของการสำรองข้อมูล + FTP จากนั้นลดการสำรองข้อมูลทั้งหมด + FTP ให้สุดสัปดาห์เท่านั้น สิ่งนี้จะช่วยหลีกเลี่ยงความซับซ้อนของการจัดส่งบันทึกทำง่ายและเพิ่มความซับซ้อนเล็กน้อยให้กับ DR

ฉันรู้สึกว่าการสำรองข้อมูลส่วนต่างนั้นถูกมองข้าม ... ฉันแนะนำให้ใช้ก่อนหน้านี้:

แก้ไข: หลังจากความคิดเห็นของ jcolebrand ฉันจะพยายามอธิบายเพิ่มเติม

การสำรองข้อมูลส่วนต่างจะใช้หน้าเว็บที่มีการเปลี่ยนแปลงเท่านั้น นอกเหนือจากการบำรุงรักษาดัชนี (ซึ่งอาจส่งผลกระทบต่อฐานข้อมูลจำนวนมาก) จะมีการเปลี่ยนแปลงเพียงไม่กี่% ของหน้าในระหว่างวัน ดังนั้นการสำรองข้อมูลส่วนต่างจะเล็กกว่าการสำรองข้อมูลเต็มจำนวนมากก่อนการบีบอัดใด ๆ

หากคุณมีการสำรองข้อมูลเต็มรูปแบบพูดทุกสัปดาห์คุณสามารถทำผลต่างรายวันและส่งออกนอกไซต์ได้ การสำรองข้อมูลเต็มรูปแบบรายวันพร้อมส่วนต่างยังคงต้องการไฟล์ทั้งสองนอกไซต์

สิ่งนี้ควรแก้ปัญหาในการรับข้อมูลจาก A ถึง B, C และ D อย่างรวดเร็ว

คุณอาจจำเป็นต้องกู้คืนทั้งส่วนต่างและข้อมูลล่าสุดเพื่อรับข้อมูลล่าสุด แต่คุณสามารถแก้ไขได้ด้วย NORECOVERY และไฟล์ STANDBY (ฉันไม่ได้ทดลองกับ diff restore เป็นเวลาหลายปีนับตั้งแต่ฉันใช้ DBA บริสุทธิ์ งาน).

โบนัสเพิ่มเติมคือการสำรองข้อมูลต่างไม่เกี่ยวข้องกับการสำรองข้อมูลบันทึกอย่างต่อเนื่องเพื่อให้คุณสามารถแยกข้อกำหนดความพร้อมใช้งานสูง / DR ใด ๆ จากข้อกำหนด "รับข้อมูลไปยังรหัสลิง"

ฉันเห็นปัญหาบางอย่างถ้าคุณมีการสำรองข้อมูลเต็มรูปแบบทุกวันตามนโยบายหรือการตรวจสอบ แต่การคืนค่า diff สามารถนำไปใช้ก่อนที่บันทึกใด ๆ จะกู้คืนเพื่อลดระยะเวลาการกู้คืน แตกต่างจากการสำรองข้อมูล diff และการคืนค่าล็อกจะโต้ตอบ

หวังว่าฉันจะครอบคลุมฐานมากที่สุด ...


Hyperbac เป็นเครื่องมือบีบอัดข้อมูลที่ชาญฉลาดซึ่งอนุญาตให้บีบอัดข้อมูลสำรองและออกจากแผนการบำรุงรักษาและงานไม่เปลี่ยนแปลงเนื่องจากจัดการไฟล์ในระดับระบบปฏิบัติการ หากพวกเขาไม่ต้องการเปลี่ยนแปลงอะไร แต่เพียงเพิ่มเครื่องมือใหม่ลงในกล่องพวกเขาควรให้ช็อตแน่นอน ฉันรู้ว่าฉันได้ใช้มันและชอบมันสำหรับ SQL 2005 แต่สำหรับการบีบอัดที่มากขึ้นพวกเขายังคงต้องใช้แรงงานคนด้วยตนเอง ...
Marian

@Marian ฉัน ... ค่อนข้างแน่ใจว่า Brent O เป็นเพียงที่ปรึกษาที่ต้องการ
jcolebrand

@Marian: มีข้อ จำกัด ในการบีบอัดและการบีบอัดเพิ่มเติม = CPU เพิ่มเติม / ครั้ง การสำรองข้อมูลที่น้อยที่สุดจะเป็นข้อมูลที่มีการป้อนข้อมูลน้อย = ความแตกต่าง ลิงก์เกี่ยวกับเวลา / อัตราส่วนที่หนึ่ง : คุณสามารถบีบอัดไฟล์ได้มาก แต่ใช้เวลานานและไฟล์บีบอัด 30 GB อาจใช้เวลานานกว่า FTP ...
gbn

ฉันเห็นด้วยกับคุณว่าสิ่งที่เป็นเครื่องมือเชิงพาณิชย์มีอัตราการบีบอัดที่ดีกว่า MS หนึ่งและพวกเขาสามารถกำหนดค่าได้ (โดยไม่มีการจัดสรรซีพียูเพื่อการดำเนินงาน) พวกเขามีการเข้ารหัส .. และคุณสมบัติอื่น ๆ ฉันไม่จำเป็นต้องสรรเสริญพวกเขา (พวกเขาไม่ได้ราคาถูกมาก) ฉันเพิ่งบอกว่าบางคนสามารถใช้ร่วมกับการสำรองข้อมูลปัจจุบันของ SQL Server (เต็มแตกต่างบันทึก) โดยไม่ต้องเปลี่ยนสภาพแวดล้อมซึ่งพวกดูเหมือนว่า ความต้องการ / ความต้องการของคุณ @ jcolebrand: เข้าใจแล้วขอบคุณ!
แมเรียน

13

มีผลิตภัณฑ์เชิงพาณิชย์ที่สามารถช่วยคุณบีบอัดข้อมูลสำรองได้ดีกว่าการบีบอัดข้อมูลดั้งเดิม 2008 ตัวอย่างเช่นการสำรองข้อมูล RedGate , Hyperbac , Idera SQL การสำรองข้อมูล , LiteSpeed การสำรองข้อมูล

พวกเขามาพร้อมกับค่าใช้จ่ายเพิ่มเติมของ CPU สูงและประเภทไฟล์ที่จะต้องมีการจัดการกับเครื่องมือนอก MS คนส่ง สิ่งนี้ยกเว้นการบีบอัดHyperbac (ตอนนี้ได้รับจาก Redgate) ซึ่งจัดการไฟล์อย่างโปร่งใสและอนุญาตให้สร้างไฟล์ที่เข้ากันได้กับ zip (และไม่ต้องการเครื่องมือของบุคคลที่สาม)

แต่ไม่มีเครื่องมือที่จะให้ไฟล์ขนาดที่คุณจะได้รับจากการล้างข้อมูลด้วยตนเอง โปรดอ่านบทความของ Brent Ozar: วิธีบีบอัดข้อมูลสำรอง SQL Server ของคุณจริงๆเขาจะแนะนำให้ทำตามขั้นตอนเดียวกับที่คุณมี ณ จุดที่ไม่มี 2


RedGate FTW !!!!
โฮแกน

@ โฮแกน: ถ้าคุณไม่สามารถเอาชนะพวกเขาซื้อพวกเขา มันเป็นตัวอย่างที่ดีมาก :-) อย่างไรก็ตามทั้งสองผลิตภัณฑ์ที่ตอนนี้เป็นส่วนหนึ่งของ Redgate และจัดการการบีบอัดฐานข้อมูลสามารถอยู่ร่วมกันได้สำเร็จ
Marian

12

คำถามที่ 1: มีผลิตภัณฑ์สำรองข้อมูลเชิงพาณิชย์ที่จะให้ขนาดสำรองใกล้เคียงกับการดึงข้อมูลที่ไม่จำเป็นเช่นดัชนีออกจากฐานข้อมูลหรือไม่

ไม่มีผลิตภัณฑ์บีบอัดข้อมูลสำรองจำนวนมากออกมา (Quest LiteSpeed, การสำรองข้อมูล Red Gate SQL, Idera SQLSafe, Hyperbac ฯลฯ ) แต่ผลิตภัณฑ์ทั้งหมดทำงานได้โดยเพียงแค่บีบอัดเอาต์พุตของกระบวนการสำรองข้อมูลปกติของ SQL Server บางคนทำด้วยวิธีที่ยุ่งยาก - ตัวเลือก Engine ของ HyperBac และ LiteSpeed ​​เป็นตัวกรองตัวกรองระบบไฟล์ซึ่งหมายความว่าพวกเขากำลังดักเอาท์พุทระหว่างทางไปยังดิสก์ - แต่ผลลัพธ์สุดท้ายของผลิตภัณฑ์เหล่านี้ทั้งหมดเป็นเพียงเอาต์พุตสำรองข้อมูลที่บีบอัด

คำถามที่ 2 มีสคริปต์ที่ครอบคลุมออกมีเพื่อถ่ายโอนข้อมูลพิเศษทั้งหมดนี้หรือไม่

เมื่อเวลาผ่านไปในขณะที่คุณเก็บประวัติมากขึ้นในฐานข้อมูล (4, 5, 8, 10 ปี) คุณจะไม่ต้องการดึงข้อมูลดัชนีทั้งหมดและสร้างมันขึ้นมาใหม่ในอีกด้านหนึ่งของ WAN แต่คุณต้องการเพียงถ่ายโอนข้อมูลที่แก้ไขและนั่นคือสิ่งที่บันทึกการจัดส่งมา

คุณไม่ควรทำสิ่งนี้

แต่ถ้าคุณอยากทำสิ่งนี้จริงๆ (และไม่ฉันจะไม่ช่วยคุณ) คุณสามารถทำได้ด้วยการสำรองไฟล์ของกลุ่ม ตั้งค่ากลุ่มไฟล์ฐานข้อมูลของคุณเช่นนี้:

  • กลุ่มไฟล์หลัก (จำเป็น แต่ไม่ต้องเว้นว่างไว้)
  • ClusteredIndex filegroup (ใส่ดัชนีคลัสเตอร์ของคุณที่นี่)
  • ExtraneousCrap Filegroup (ใส่ทุกอย่างไว้ที่นี่)

เริ่มทำการสำรองข้อมูลกลุ่มไฟล์แบบบีบอัดเพียงสองข้อแรกและคัดลอกไฟล์ที่มีขนาดเล็กลงไปยังเซิร์ฟเวอร์ DR ของคุณ คุณสามารถใช้การสำรองข้อมูลกลุ่มไฟล์ของ SQL Server 2008 และความสามารถในการกู้คืนเพื่อเพียงเรียกคืนกลุ่มไฟล์หลักและ ClusteredIndex จากนั้นจะสามารถใช้การสอบถามได้ทันที พวกเขาจะไม่สามารถทำงานได้จนกว่าคุณจะได้รับกลุ่มไฟล์ ExtraneousCrap ออนไลน์ แต่ก็มีเคล็ดลับที่น่ารังเกียจเช่นนั้น - ในหนังสือMVP Deep Divesมีบทเกี่ยวกับการแก้ไขตารางระบบเพื่อสร้างกลุ่มไฟล์ ExtraneousCrap และทั้งหมด ของดัชนีที่เกี่ยวข้องหายไป เคล็ดลับนี้เป็นอันตรายไม่ได้รับการสนับสนุนอย่างสมบูรณ์และเป็นความคิดที่เลว แต่คุณขอมา


10

ฉันแนะนำให้เปลี่ยนไปใช้บางอย่างเช่นบันทึกการจัดส่ง โดยพื้นฐานแล้วหากคุณมีทางเลือกในการส่ง 30 Gigs มากกว่า 24 ชั่วโมงเทียบกับการส่ง ณ สิ้นวันภายในช่วงเวลาที่สั้นลงความเร็วเครือข่ายจะลดลงสำหรับคุณ

ผู้พัฒนาซอฟต์แวร์ของคุณบนเครือข่ายที่ช้าจะสามารถดาวน์โหลดไฟล์ที่มีขนาดสะดวกยิ่งขึ้นผ่านทาง FTP หรือกระบวนการใดก็ตามที่คุณมี พวกเขายังสามารถตั้งค่างานที่ดาวน์โหลดได้ตลอดทั้งวัน

นอกจากการบีบอัดเซิร์ฟเวอร์ sql คุณสามารถใช้เครื่องมือของบุคคลที่สามซึ่งมีการบีบอัดที่สูงขึ้นเช่น litespeed หรือ redgate sqlbackup

นอกจากนี้ในด้านเครือข่ายคุณสามารถติดตั้งอุปกรณ์เครือข่ายที่สามารถเพิ่มประสิทธิภาพของปริมาณงานของคุณไปยังไซต์ DR ก่อนหน้านี้ฉันใช้ Riverbed Appliance สำเร็จเพื่อรับการสำรองข้อมูล 90GB จาก FL ไปยัง VA ในเวลาน้อยกว่า 3 ชั่วโมง

ตัวเลือกอื่นคือการสำรองกลุ่มไฟล์เฉพาะไม่รวมดัชนี ฯลฯ แต่คุณยังคงติดอยู่กับดัชนีกลุ่มและขึ้นอยู่กับโครงสร้างฐานข้อมูลของคุณคุณอาจได้รับค่าใช้จ่าย / ความยุ่งยากมากกว่าประโยชน์จากวิธีการนั้น

ขอบคุณ


7

หากคุณมีเงินสำหรับมันและสถาปัตยกรรมของคุณอนุญาตให้ตรวจสอบบางอย่างเช่นเทคโนโลยี Riverbed (http://www.riverbed.com/us/) เครื่องใช้ไฟฟ้าเช่นนี้ประกอบกับการจำลองสถานการณ์หรือบันทึกการจัดส่งอาจเป็นทางออกที่ดีที่สุดของคุณ

ถ้าไม่เช่นนั้นคำถามสองสามข้อ หากคุณต้องรีเฟรชทุก ๆ เดือนทำไมต้องกังวลเรื่องแบนด์วิดธ์? ครั้งเดียวที่คุณต้องกังวลเกี่ยวกับการถ่ายโอนคือครั้งเดียวรับการสำรองข้อมูลเต็มรูปแบบที่นั่นเพื่อทำการกู้คืนภายในเครื่องหรือฉันเข้าใจผิดว่าเป็นค่าติดตั้งของคุณหรือไม่

ความเป็นไปได้อีกอย่างก็คือแทนที่จะกังวลว่าจะนำข้อมูลทั้งหมดไปให้พวกเขาตั้งค่าสภาพแวดล้อม Citrix และให้พวกเขาอยู่ห่างไกลจากคุณ ด้วย Citrix คุณมีข้อกำหนดแบนด์วิดธ์น้อยที่สุดระหว่างไคลเอนต์ / โฮสต์และคุณมีความสามารถในการทำสิ่งที่คุณต้องการในพื้นที่และไม่ต้องกังวลกับการทำซ้ำการเปลี่ยนแปลงเหล่านั้นที่อื่น แค่ $ 0.02 ของฉัน


คุณสามารถอธิบายเกี่ยวกับสิ่งนี้ได้อีกหรือไม่? ฉันรู้ว่านี่เป็นของทีม StackExchange ที่เหมาะสมดังนั้นฉันแน่ใจว่าพวกเขาจะชอบคำแนะนำแบบลึกมากขึ้น;)
jcolebrand

ฮ่าฮ่ามีเรื่องให้พิจารณามากมาย จุดไหนที่คุณต้องการให้ฉันอธิบาย
SQLChicken

จัดส่งการจำลองแบบ / log คือสิ่งที่ผมมีอยู่ในใจ แต่นั่นก็เป็นเหมือนสองสัปดาห์ที่ผ่านมาดังนั้นฉันสงสัยมันเป็นเป็นสำคัญในขณะนี้ นอกจากนี้ฉันเพิ่งอ่านใหม่และเห็นส่วนเกี่ยวกับ Citrix และฉันสามารถบอกคุณได้แล้ว (ตอนนี้) ว่าพวกเขาไม่ทำเช่นนั้น พวกเขาทำการพัฒนาในท้องถิ่นโดยใช้โครงสร้างพื้นฐาน DVCS และต้องการข้อมูลสำหรับการทดสอบ / เล่นด้วย / ยืนยัน อาจจะเป็นเพราะการทิ้งข้อมูล
jcolebrand

Gotcha จากนั้นตามที่คนอื่นพูดแล้วผู้ขายบุคคลที่สามเช่น Redgate และ Quest มีเครื่องมือบีบอัดข้อมูลสำรองที่ดีมากเพื่อช่วยให้คุณตอบสนองความต้องการของพวกเขา โซลูชันอื่นที่อาจเกิดขึ้นคือ SQL Azure ขณะนี้ขีด จำกัด ขนาดของฐานข้อมูลคือ 50GB แต่พวกเขาได้ยกค่าธรรมเนียมสำหรับการโหลดข้อมูลใด ๆ ดังนั้นจึงอาจเป็นโซลูชันที่คุ้มค่า
SQLChicken

4

ฉันจะใช้การจำลองแบบของทรานแซคชัน SQL การโหลดครั้งแรกของคุณจะใช้เวลาสักครู่ แต่เมื่อคุณเริ่มทำงานคุณจะสามารถส่งข้อมูลที่ต้องการได้เท่านั้น ตัวอย่างเช่นหากคุณมีเพียง 3 หรือ 4 ตารางที่ได้รับการอัพเดตคุณสามารถส่งได้เพียง 3 หรือ 4 ตารางเท่านั้น

คุณสามารถเลือกสิ่งที่คุณต้องการจัดส่งได้ ดัชนี FK, คลัสเตอร์ / ที่ไม่ใช่คลัสเตอร์, ตารางพาร์ทิชันของตาราง, procs ที่เก็บไว้และ TONS เพิ่มเติม

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 มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.