ทำไมTO DISK = N’NUL’
?
ฉันไม่เข้าใจว่าทำไมคุณถึงใช้TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
หากคุณทำเช่นนั้นการสำรองข้อมูลจะถูกบันทึกลงในNUL
, (เช่น. = ไม่มีที่ไหนเลย / ไม่มีอะไร) และไม่สามารถใช้ได้เนื่องจากไม่มีไฟล์อยู่
แม้ว่าNUL
จะสามารถใช้เป็นปลายทางสำหรับการสำรองข้อมูล LOG แต่ก็ไม่ควรใช้อย่างใดอย่างหนึ่งโดยเฉพาะอย่างยิ่งบนเซิร์ฟเวอร์ Prod เนื่องจากบันทึกจะหายไปและการสำรองข้อมูลจะเสียหาย (~ คล้ายกับSHRINKFILE
)
สำรองข้อมูล LOG
ก่อนเพิ่มฐานข้อมูลลงในกลุ่มคุณต้องเตรียมมันก่อน เมื่อคุณต้องการเตรียมฐานข้อมูลรองคุณต้องสำรองและเรียกคืนอย่างน้อย 1 รายการบันทึกธุรกรรม มิเรอร์ใช้เพื่อระบุว่าธุรกรรมใดได้รับการซิงค์บนฐานข้อมูลรองแล้วและธุรกรรมใดที่ยังไม่ได้ซิงค์กับฐานข้อมูลหลัก
ดังนั้นคุณต้องสำรองข้อมูลล็อกธุรกรรมบนฐานข้อมูลหลัก:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
COPY_ONLY
ตัวเลือกที่จะต้องใช้ ทำให้แน่ใจว่าบันทึกจะไม่ถูกตัดทอนเมื่อสิ้นสุดการสำรองข้อมูล LOG
เชนสำรอง DB หลัก
อย่างไรก็ตามคุณไม่สามารถกู้คืนไฟล์บันทึกได้เพียงอย่างเดียวซึ่งหมายความว่าไม่มีเชนสำรอง (ดูคำตอบ Kin ด้วย) ซึ่งหมายความว่าการสำรองข้อมูลบันทึกธุรกรรมจะต้องดำเนินการหลังจากการสำรองฐานข้อมูลแบบเต็ม (+ ความแตกต่างที่เป็นตัวเลือกหากจำเป็น) ได้รับการดำเนินการ
เนื่องจากCOPY_ONLY
ตัวเลือกไม่ได้ทำลายห่วงโซ่การสำรองจึงไม่สร้างห่วงโซ่การสำรอง COPY_ONLY
ตัวเลือกที่ไม่สามารถนำมาใช้สำหรับการสำรองฐานข้อมูล
สำรองตามลำดับ:
- การสำรองฐานข้อมูลแบบเต็มโดยไม่มี
COPY_ONLY
ตัวเลือก
- การสำรองข้อมูลส่วนต่างที่ไม่จำเป็น
- 1 การสำรองข้อมูลเข้าสู่ระบบด้วย
COPY_ONLY
ตัวเลือก
- การสำรองข้อมูล LOG อื่น (หรือมากกว่า) หากจำเป็น ...
กู้คืนฐานข้อมูลรอง
ดังนั้นการสำรองฐานข้อมูลจะต้องกู้คืน (+ ดิฟเฟอเรนเชียล) ที่สอง
จะต้องถูกกู้คืนด้วยNORECOVERY
ตัวเลือกเนื่องจากคุณต้องการกู้คืนการสำรองข้อมูล LOG เมื่อการสำรองข้อมูลแบบเต็มได้รับการกู้คืนแล้ว
ขั้นสุดท้ายคุณจะคืนค่าข้อมูลสำรองของ LOG คุณยังคงต้องใช้NORECOVERY
ตัวเลือกนี้เนื่องจากมิเรอร์จะทำการกู้คืนการทำธุรกรรมครั้งเดียว
- กู้คืนการสำรองข้อมูลทั้งหมดด้วย
NORECOVERY
ตัวเลือก
- กู้คืนการสำรองข้อมูล DIFF ด้วย
NORECOVERY
ตัวเลือก
- เรียกคืนการสำรองข้อมูล LOG ทั้งหมดตามลำดับ
NORECOVERY
ตัวเลือก
มารวมเข้าด้วยกัน (ปรับให้เข้ากับ env ของคุณ)
ในการเรียกใช้เซิร์ฟเวอร์หลัก:
USE master
Go
BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
GO
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
GO
ในการเรียกใช้เซิร์ฟเวอร์รอง:
USE master
Go
RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
จากนั้นคุณสามารถดำเนินการเพิ่มฐานข้อมูลรองใหม่ลงในกลุ่มความพร้อมใช้งานได้ ...
การกระทำที่เป็นตัวเลือก
- เป็นการดีกว่าที่จะตั้งค่าตัวเลือก DISK เป็นโฟลเดอร์ที่ใช้ร่วมกันที่พร้อมใช้งานจากเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์รอง
- นอกจากนี้ยังเป็นการดีกว่าที่จะเก็บไฟล์ DB บนดิสก์และตำแหน่งที่คล้ายคลึงกันบนทั้งเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์รอง