สคีมาเปลี่ยนกลุ่ม "สถานะว่าง" หรือพวกมันถูกจัดการอย่างโปร่งใสหรือไม่?


11

องค์กรของฉันวางแผนที่จะนำกลุ่มความพร้อมใช้งานของ SQL Server 2012 มาใช้และฉันพยายามที่จะเข้าใจว่าจะมีผลกระทบอย่างไร (ถ้ามี) ในกระบวนการอัปเกรดแอปพลิเคชันของเรา

เราปล่อยการอัปเดตแอปพลิเคชันในรอบ 8 สัปดาห์และการเปิดตัวใด ๆ อาจรวมถึงการเปลี่ยนแปลงสคีมาและ / หรือการย้ายข้อมูล

สิ่งที่ฉันพยายามทำความเข้าใจคือว่าโซลูชัน HA / DR จะจัดการกับการเปลี่ยนแปลง schema อย่างโปร่งใสหรือไม่ (คอลัมน์ใหม่, ดัชนีเพิ่มเข้ากับ Secondaries) หรือเป็นการแทรกแซงด้วยตนเองที่จำเป็นในการสร้าง schema ในแต่ละอินสแตนซ์

ส่วนการโยกย้ายข้อมูลที่ฉันสมมติว่ามีการจัดการอย่างโปร่งใส แต่ต้องการยืนยันเช่นกัน

ฉันเดาว่าฉันกำลังสร้างสมมุติฐานแบบครอบคลุมว่าพฤติกรรมเหล่านี้ไม่แตกต่างกันไปตามการกำหนดค่ากลุ่มความพร้อมใช้งานซึ่งอาจเป็นเท็จเช่นกัน โปรดแจ้งให้เราทราบ

โดยสังเขป; ในแอปพลิเคชันของฉันที่ระบุฉันสามารถเปลี่ยนตารางที่มีขนาดใหญ่มาก (10s ถึง 100s ของเรคคอร์ด) โดยการเพิ่มคอลัมน์ลงไป บางคอลัมน์อาจเป็น "ใหม่สุทธิ" เพื่อให้สามารถใช้ประโยชน์จากฟังก์ชันการเปลี่ยนแปลงแบบแผนของ Enterprise Online ได้ คอลัมน์อื่นอาจเป็นการ refactoring ของคอลัมน์ที่มีอยู่ (FullName ได้รับการแบ่งเป็น FirstName และนามสกุล) และการโยกย้ายจะถูกเรียกใช้สำหรับแต่ละแถวในตารางเพื่อเติมฟิลด์เหล่านี้ พฤติกรรมใด ๆ เหล่านี้ต้องใช้ DBA เพื่อเปลี่ยนการกำหนดค่า AlwaysOn หรือสิ่งนี้จัดการโดยค่าเริ่มต้นและสิ่งที่สองทั้งหมดได้รับข้อความ DDL และ DML "ฟรี" หรือไม่

ขอบคุณสำหรับความชัดเจนใด ๆ ที่คุณสามารถให้ได้


ข้อมูลเพิ่มเติมที่นี่จาก Remus, dba.stackexchange.com/questions/179402/…

คำตอบ:


9

การเปลี่ยนแปลงสคีมาและการเปลี่ยนแปลงข้อมูลนั้นเหมือนกัน มันทำงานเหมือนการมิเรอร์แบบดั้งเดิมในวันนี้: สิ่งที่เกิดขึ้นในบันทึกบนหลักที่เกิดขึ้นในที่สอง ไม่ใช่ทุกสิ่งที่เกิดขึ้นในเวกัสต้องอยู่ในเวกัส :-)

ที่ที่คุณอาจต้องระวังคือเมื่อคุณมีแอปพลิเคชันที่ชี้ไปที่หลักและคุณอัปเดตให้ตรงกับการเปลี่ยนแปลงสคีมา แต่คุณอาจมีแอปพลิเคชันอื่นที่ชี้ไปที่รอง (เช่นด้วยเจตนาแบบอ่านอย่างเดียว) และการเปลี่ยนแปลงแอปนั้นจะต้องทำข้อมูลให้ตรงกันเช่นกัน

gotcha ที่เป็นไปได้อีกอย่างหนึ่งคือเมื่อฐานข้อมูลของคุณที่เป็นส่วนหนึ่งของกลุ่มสภาพพร้อมใช้งานมีการอ้างอิงถึงวัตถุในฐานข้อมูลอื่น (เช่นตารางค้นหาแบบคงที่ที่เก็บอยู่ในฐานข้อมูลยูทิลิตี้) หากการเปลี่ยนแปลงเหล่านั้นและ AG ขึ้นอยู่กับวัตถุเหล่านั้นคุณจะต้องผลักดันการเปลี่ยนแปลงเหล่านั้นด้วยตนเอง เช่นเดียวกับงานการล็อกอินระดับเซิร์ฟเวอร์เซิร์ฟเวอร์ที่เชื่อมโยง ฯลฯ - สิ่งใดก็ตามที่อยู่ภายนอกฐานข้อมูลและ / หรือไม่สามารถทำธุรกรรมได้ ผู้ใช้ฐานข้อมูลสามารถรับ orphaned (มีผู้ใช้ร่วมกัน) ฉันรู้ว่านี่อาจชัดเจน แต่ต้องการแสดงรายการเพื่อความสมบูรณ์


การเข้าสู่ระบบที่มีอยู่ควรดำเนินการกับฐานข้อมูลถูกต้องหรือไม่ (ฉันถือว่าคุณหมายถึงการเข้าสู่ระบบเซิร์ฟเวอร์)
Jon Seigel

1
@JonSeigel มีผู้ใช้งานใช่ ไม่มีสิ่งใดเช่นการเข้าสู่ระบบที่มีอยู่ ไม่จู้จี้จุกจิกเพียงต้องการให้แน่ใจว่าความคาดหวังนั้นถูกต้อง แน่นอนว่าต้องมีการเปิดใช้งานโหนดทั้งหมดที่มีการรับรองความถูกต้องของฐานข้อมูลและตั้งค่าเป็น CONTAINMENT = PARTIAL
Aaron Bertrand

อ่าผมเห็นตอนนี้ ขอบคุณฉันไม่ได้ทำงานกับสารพัด 2012 ใหม่มากนัก
Jon Seigel

@JonSeigel ฉันอัพเดทคำตอบเพื่อเรียกสิ่งเหล่านั้นออกมาอย่างชัดเจน
Aaron Bertrand

ขอบคุณแอรอน มีข้อกังวลบางอย่างเกิดขึ้นเกี่ยวกับการเปลี่ยนแปลงของ schema ที่ทำให้การเรพลิเคทหยุดชะงักและฉันต้องการยืนยันว่า AlwaysOn (การทำมิรเรอร์ตามที่คุณอธิบาย) ไม่แสดงพฤติกรรมดังกล่าว ฉันเดาว่านี่เป็นความเข้าใจผิดหรือเกี่ยวข้องกับการจำลองแบบโดยเฉพาะ
Matt O'Brien

0

คำตอบเพิ่มเติมจากรีมัสผู้ใช้อาจขอให้ลบคิวรีแบบจำลองรองและตรวจสอบสถานะขนาดคิวการทำซ้ำในตาราง: sys.dm_hadr_database_replica_states AlwaysOn การเปลี่ยนแปลง DDL และ Schema

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