SQL Server 2014 schema มีการเปลี่ยนแปลงในสภาพแวดล้อมที่ผู้ใช้หลายคนตลอด 24 ชั่วโมงทุกวัน


12

เราติดตั้ง SQL Server 2014 Enterprise เพื่อเรียกใช้ฐานข้อมูลซึ่งควรมีให้บริการตลอด 24 ชั่วโมงทุกวัน ฐานข้อมูลของเราใหญ่พอ (200gb +) นอกจากนี้เรายังมีบริการมากมายที่เข้าถึงฐานข้อมูลของเราทุกนาทีเพื่ออ่านอัปเดตหรือแทรกข้อมูลใหม่ เราต้องการมอบคุณสมบัติการปรับใช้งานที่ "ร้อนแรง" สำหรับลูกค้าของเราและทำให้การอัปเดตรายวัน (.net และการปรับปรุงสคีมา) ของเราโปร่งใสสำหรับลูกค้า เราพบวิธีแก้ไขปัญหาตามคลัสเตอร์ที่มี load balancer เพื่ออัปเดตไบนารีของแอปของเรา แต่เรายังคงมีความเข้าใจผิดเกี่ยวกับฐานข้อมูล 'ปรับปรุงกระบวนการปรับใช้และสิ่งที่เป็นแนวทางปฏิบัติที่ดีที่สุดในการแก้ปัญหานี้

สำหรับการเปลี่ยนแปลงสคีมาให้นำเซิร์ฟเวอร์หนึ่งตัวลงใช้การเปลี่ยนแปลงสคีมานำมาสำรองและใช้การเปลี่ยนแปลงแบบเดียวกันกับอินสแตนซ์ที่สอง สามารถใช้เครื่องมือ SQL Server ได้หรือไม่และนี่เป็นวิธีการทั่วไปหรือไม่ ซิงค์ข้อมูลหลังจากเซิร์ฟเวอร์ได้รับการสำรองอย่างไร หรือฉันกำลังคิดผิดไปอย่างสิ้นเชิงและมีวิธีแก้ปัญหาที่ดีกว่าหรือไม่?

การเปลี่ยนแปลงแบบแผนทั่วไปของเรา: เพิ่ม / ลดลงคอลัมน์เพิ่ม / ลบขั้นตอนการจัดเก็บ


เค้าโครงปัจจุบันของ SQL ของคุณคืออะไร คลัสเตอร์? AlwaysOn? มิร์เรอร์? ตัวอย่างเดียว
LowlyDBA

ทุกวันนี้เรามีอินสแตนซ์เดียว แต่เราสามารถเปลี่ยนได้ตามความต้องการเพิ่มเซิร์ฟเวอร์ใหม่และอื่น ๆ
Shmitov Michael

4
คุณควรปฏิบัติตามแนวทางสีน้ำเงินเขียวด้วยวิธีนี้คุณสามารถมีระบบสด (สีเขียว) และทำการอัพเกรดบนเวที (สีน้ำเงิน) แล้วสลับบทบาท นี่คือสิ่งที่เราได้นำไปใช้งานโดยใช้ AlwaysON และใช้งานได้กับเรา - สถานการณ์เดียวกัน มันต้องมีการวางแผนการใช้งานและการทดสอบที่เหมาะสม
Kin Shah

คุณจะให้สถานการณ์ที่มีรายละเอียดมากขึ้นกับฉันได้ไหมตัวอย่างเช่นการเปลี่ยนแปลงโครงสร้างการลบคอลัมน์
Shmitov Michael

คำอธิบายของความคิดเห็นก่อนหน้านี้ฉันเปลี่ยนโหนดหลัก (S1) / รอง (S2) โหนดในโครงสร้างพื้นฐาน AlwaysOn จากนั้นฉันตัดสินใจที่จะลบคอลัมน์บางส่วนออกจากสคีมาบน Replica (S1 เป็นหลักก่อนสวิตช์) แต่ฉันยังคงได้รับข้อมูลการจำลองบางอย่าง จาก S2 พร้อมคอลัมน์นั้นในตาราง .... ฉันจะจัดการกับปัญหานี้ได้อย่างไร
Shmitov Michael

คำตอบ:


1

ด้านล่างจะต้องใช้การวางแผนและการทดสอบอีกเล็กน้อย


แนวคิดสีน้ำเงิน - เขียว:


ส่วนสำคัญของแนวคิด Blue-Green คือการแบ่งการผลิตของคุณเป็น 2 สภาพแวดล้อมและพวกเขาเหมือนกันทุกครั้ง (การประสานข้อมูล) ในนั้น

  1. The Blue (ปัจจุบัน) จะมี schema / build หรือผลิตภัณฑ์เวอร์ชันปัจจุบันและจะเป็นสภาพแวดล้อม "สด" ของคุณ

  2. ในเวลาเดียวกันกรีนจะเป็นสภาพแวดล้อมการจัดเตรียม / ทดสอบซึ่งคุณจะอัพเกรดสคีมา / บิลด์หรือผลิตภัณฑ์เป็นรุ่นถัดไปทำการทดสอบการถดถอยเต็มรูปแบบและลงนามโดยผู้ใช้ทางธุรกิจของคุณ เมื่อมีความสุขในช่วงเวลาตัดผ่านคุณจะเลื่อนตำแหน่งสีเขียวเป็นสภาพแวดล้อม "สด" ของคุณและลดระดับสีน้ำเงินให้เป็น preprod / การแสดงละครหรือการทดสอบสำหรับรุ่นถัดไป

ด้วยวิธีนี้คุณมีเวลาหยุดทำงานน้อยลงและความเสี่ยงของความล้มเหลวในการปรับใช้บนระบบจริง (ซึ่งอยู่ในช่วงเวลาการบำรุงรักษาเนื่องจากคุณทำการอัพเกรด) จะลดลงอย่างมาก นอกจากนี้เมื่อใช้วิธี Blue-Green คุณจะได้รับการสั่นระหว่างรุ่น LIVE และรุ่นก่อนหน้าซึ่งจะจัดเตรียมสำหรับเวอร์ชันถัดไป

สิ่งนี้จะต้องใช้ฮาร์ดแวร์ / สิทธิ์ใช้งานเพิ่มเติมรวมถึงการวางแผนและทดสอบ

ขั้นตอนส่วนใหญ่สามารถทำได้โดยอัตโนมัติโดยใช้ DACPACs และ PowerShell นอกจากนี้หากคุณกำลังติดตั้งหลายอินสแตนซ์บนเซิร์ฟเวอร์เดียวตรวจสอบให้แน่ใจว่าได้ปรับสมดุลการตั้งค่าหน่วยความจำใหม่เมื่อสลับระหว่างสีน้ำเงินและเขียว สภาพแวดล้อมสดได้รับหน่วยความจำมากกว่าสภาพแวดล้อมแบบพาสซีฟ

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

ป้อนคำอธิบายรูปภาพที่นี่ (แหล่งรูปภาพ)

โปรดอ้างถึงบทความของ Grant Fritchey เกี่ยวกับการแก้ไขปัญหาการย้อนกลับและการกู้คืน ความท้าทายและกลยุทธ์


0

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

มิฉะนั้นหากมีข้อ จำกัด หรือดัชนีอยู่ในนั้นให้ระมัดระวัง

ADD/DELETEขั้นตอนเพียงแค่จะมีผลกับรันตัวเอง คำแนะนำคือก่อนที่จะมีการเปลี่ยนแปลงใด ๆ

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