Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

เพิ่ม Articles และ Reinitialize SQL Server Transactional Replication จาก Backup

ในบล็อกก่อนหน้า ผมได้อธิบายวิธี Initialize Replication สำหรับฐานข้อมูลขนาดใหญ่โดยใช้ Database Backup ตอนนี้จะพูดถึงวิธีเพิ่ม Articles ใหม่และ Reinitialize Subscriber ที่มีอยู่แล้วของ SQL Server Transactional Replication ที่ตั้งค่าผ่าน Backup

บทนำ

โดยทั่วไป ผู้ใช้มักใช้ Snapshot Agent ในการเพิ่ม Articles ใหม่เข้าสู่ Publication หรือ Reinitialize Subscriber แต่ในสถานการณ์นี้ Transactional Replication ได้ถูกตั้งค่าโดยใช้ Database Backup แล้ว ขั้นตอนโดยละเอียดมีดังนี้:

  1. เพิ่ม Articles ใหม่เข้าสู่ Publication ที่ Initialize ด้วย Backup แล้ว
  2. Reinitialize Subscriber ที่ Initialize ด้วย Backup แล้ว

สถานการณ์ 1: วิธีเพิ่ม Articles ใหม่เข้าสู่ Publication ที่ Initialize ด้วย Backup

ในสถานการณ์ของเรา Transactional Replication ได้ถูกตั้งค่าโดยใช้ไฟล์ Backup ดังนี้:

Publisher + Distributor: Node1
Subscriber: Node2
Publisher Database: ABC_Pub
Subscriber Database: ABC_Sub
Publication: ABC_Pub_Bkp
Subscription: ABC_Sub_Bkp
Articles: Cars, Bikes

การเพิ่ม Articles ใหม่เข้าสู่ Publication ที่มีอยู่สามารถทำได้โดยการ Synchronize ข้อมูลด้วยตนเอง (ซึ่งเราจะอภิปรายพร้อมขั้นตอนโดยละเอียด) ระหว่าง Publisher และ Subscriber

ภาพรวมขั้นตอนกระบวนการ:

  1. Synchronize ข้อมูลสำหรับ Articles ใหม่จาก Publisher ไป Subscriber โดยใช้วิธี Import/Export ใดๆ ที่นิยม
  • เพิ่มตารางใหม่ใน Publisher Database และเพิ่มแถวข้อมูลเล็กน้อย
  • สคริปต์คำสั่ง Create สำหรับตารางใหม่และรันบน Subscriber Database
  • ใช้วิธี Export/Import เพื่อ Sync ข้อมูลระหว่าง Publisher และ Subscriber
  1. หยุด Log Reader และ Distributor Agent Jobs
  2. เพิ่ม Articles ใหม่เข้าสู่ Publication โดยใช้ GUI เพื่อเสร็จสิ้นการตั้งค่า
  3. เปิดใช้งานและเริ่ม Log Reader และ Distributor Agent Jobs
  4. เพิ่มข้อมูลใหม่บน Publisher
  5. ตรวจสอบข้อมูลบน Subscriber

ขั้นตอน 1: Synchronize ข้อมูลสำหรับ Articles ใหม่จาก Publisher ไป Subscriber โดยใช้วิธี Import/Export

ใน Replication ที่มีอยู่ มี Articles 2 ตัว และผมจะสร้างตารางอีก 2 ตารางสำหรับ Publisher Database แล้วเพิ่มเข้า Replication

Articles ใน Replication ที่มีอยู่:

ผมสร้างตารางใหม่ 2 ตารางใน Publisher Database และเพิ่มแถวข้อมูลเล็กน้อยในแต่ละตาราง ตอนนี้สคริปต์คำสั่ง Create Definition สำหรับทั้งสองตารางและรันบน Subscriber Database

สร้างตารางใหม่ 2 ตารางบน Publisher Database:

สร้างตารางบน Subscriber โดยใช้ Definition จาก Publisher:

ตอนนี้มา Sync ข้อมูลระหว่าง Publisher และ Subscriber โดยใช้วิธี Import/Export:

คลิกขวาที่ Publisher Database -> เลือก Export Data -> ตาม Wizard เพื่อใส่ข้อมูลที่จำเป็น

เลือก Source Server (Publisher) และ Database Name:

ขั้นตอนถัดไป เลือก Destination Server (Subscriber) และ Database Name:

เลือกชื่อตารางที่จะโอนข้อมูลและคลิก Next:

ขั้นตอนถัดไป Export สำเร็จ:

ตรวจสอบข้อมูล: ตามที่เห็น ข้อมูลได้ Sync ระหว่าง Publisher และ Subscriber แล้ว

2. หยุด Log Reader และ Distributor Agent Jobs

การหยุด Replication Agents เป็นแนวทางปฏิบัติที่ดีที่สุดก่อนทำการดำเนินการใดๆ กับ Articles

3. เพิ่ม Articles ใหม่เข้าสู่ Publication โดยใช้ GUI เพื่อเสร็จสิ้นการตั้งค่า

คลิกขวาที่ Publication ภายใต้โฟลเดอร์ Replication และเลือก Properties -> ไปที่หน้า Articles -> ยกเลิกการติ๊ก Show only checked articles in the list -> เลือก Articles ใหม่ 2 ตัวภายใต้ Objects to publish คือ Country และ Customer ในกรณีนี้ และคลิก OK เพื่อเสร็จสิ้นการตั้งค่า

4. เปิดใช้งานและเริ่ม Log Reader และ Distributor Agent Jobs

เมื่อ Agent ถูกเปิดใช้งานและเริ่มต้นแล้ว ข้อมูลที่เพิ่มใหม่ควรถูกจับโดย Log Reader และ Replicate ไปยัง Subscriber โดย Distributor Agent ในขั้นตอนถัดไป จะตรวจสอบข้อมูล

5. เพิ่มข้อมูลใหม่บน Publisher

ตอนนี้ผมจะเพิ่มข้อมูลบนตาราง Publisher ทั้งสอง เพิ่ม 5 เรคคอร์ดเพิ่มเติมในแต่ละตาราง

6. ตรวจสอบข้อมูลบน Subscriber:

หลังตรวจสอบข้อมูล คุณจะเห็นว่า 5 เรคคอร์ดใหม่ถูกเพิ่ม (รวม 10 แถว) บนทั้งสองตาราง ข้อมูลเดียวกันถูก Replicate ไปยัง Subscriber

สถานะสุขภาพ Replication:

สถานการณ์ 2: วิธี Reinitialize Subscriber ที่ Initialize ด้วย Backup แล้ว

ไปสู่สถานการณ์ที่สอง ซึ่งบางครั้งเราเหลือตัวเลือกสุดท้ายในการแก้ไขปัญหาการ Synchronize ของ Replication โดยการ Reinitialize Subscriber

ในกรณีของเรา Replication ถูก Initialize ผ่าน Backup และขั้นตอนกระบวนการในการ Reinitialize Subscriber มีดังนี้:

  1. หยุด Log Reader, Distributor Agent และ Distributor Cleanup Jobs
  2. สร้าง Full Backup สำหรับ Publisher Database และปิดใช้งาน T-Log Backup Job
  3. Restore Database บน Subscriber Database ด้วย Replace
  4. ตรวจสอบข้อมูล
  5. รัน sp_addsubscription
  6. เปิดใช้งาน Log Reader และ Distributor Jobs เพิ่มเรคคอร์ดใหม่บน Publisher Database และตรวจสอบข้อมูลบน Subscriber

1. หยุด Log Reader และ Distributor Agent Jobs

การหยุด Replication Agents เป็นแนวทางปฏิบัติที่ดีที่สุดก่อนทำการดำเนินการใดๆ กับ Articles

2. สร้าง Full Backup สำหรับ Publisher Database และปิดใช้งาน T-Log Backup Job

Trigger Full Backup สำหรับ Database ABC_Pub บน Publisher Server และปิดใช้งาน T-Log Backup Job หากมี

3. Restore Database บน Subscriber Database ด้วย Replace และ NoRecovery

Restore Subscriber Database ABC_Sub ด้วย Replace:

4. ตรวจสอบข้อมูลระหว่าง Publisher และ Subscriber Database

ข้อมูลได้รับการตรวจสอบแล้ว และตามภาพถ่ายหน้าจอ ตาราง Cars และ Bikes มี 5 เรคคอร์ดแต่ละตาราง และตาราง Country และ Customer มี 10 เรคคอร์ดแต่ละตาราง

5. รัน sp_addsubscription:

ตอนนี้รัน Stored Procedure ต่อไปนี้พร้อมพารามิเตอร์ที่จำเป็นเพื่อ Reinitialize Subscriber

6. เปิดใช้งาน Log Reader, Distributor Agent และ Cleanup Jobs เพิ่มเรคคอร์ดใหม่บน Publisher Database และตรวจสอบข้อมูลบน Subscriber

เปิดใช้งานและเริ่ม Replication Agent Jobs:

เพิ่ม 5 เรคคอร์ดเพิ่มเติมบนตาราง Replicated ต่อไปนี้:

ตรวจสอบข้อมูลตอนนี้บน Subscriber Database:

การตรวจสอบเสร็จสิ้น 5 เรคคอร์ดที่เพิ่งเพิ่มถูก Replicate ไปยัง Subscriber และทุกตารางตอนนี้มี 10 เรคคอร์ดแต่ละตาราง

Health Check สำหรับ Replication:

สรุป

หวังว่าสองสถานการณ์ที่อภิปรายข้างต้นจะมีประโยชน์สำหรับการเพิ่ม Articles ใหม่และ Reinitialize Subscriber ที่ Initialize ผ่าน Backup แล้ว

ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถเริ่มสนทนากับเราได้