Score:1

เป็นไปได้ไหมที่จะโอนย้ายระหว่างฟิสิคัลดิสก์สองแผ่นโดยไม่มีเวลาหยุดทำงาน (มาก)

ธง de

ฉันมีเซิร์ฟเวอร์ที่มีฐานข้อมูลขนาดกลางบนดิสก์ซึ่งกำลังจะเต็ม ณ จุดนี้ไม่มี LVM หรือ RAID หรืออะไรทำนองนั้น ฉันติดตั้งดิสก์ใหม่ในเซิร์ฟเวอร์แล้ว

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

ฉันมีแนวคิดสองสามข้อ และอยากทราบว่าแต่ละข้อมีความเป็นไปได้อย่างไร

  1. โยกย้ายไปยัง LVM หากเป็นไปได้ที่จะโอนย้ายพาร์ติชันเปล่าไปยัง LVM อันหนึ่ง (เหรอ!?) ก็เป็นเรื่องง่าย พีวีมูฟ เพื่อย้ายไปยังดิสก์ใหม่โดยไม่ต้องหยุดทำงานเลย ฉันกำลังเตะตัวเองที่ไม่ได้ใช้ LVM ในเวลานั้น :/

  2. ใช้ dm-raid เพื่อมิเรอร์จากดิสก์ที่มีอยู่ไปยังดิสก์ใหม่ รอการซิงค์ จากนั้นทำลายการโจมตีและโยนดิสก์เก่า ซึ่งต้องการเวลาหยุดทำงานเพียงพอที่จะติดตั้งระบบไฟล์อีกครั้งจากอุปกรณ์จริงไปยังอุปกรณ์ตัวแมปอุปกรณ์ "ปัญหา" ที่นี่คือฉันจะมีเลเยอร์ RAID ที่ฉันไม่ได้ใช้หลังจากพูดและทำเสร็จแล้ว ฉันยังไม่บรรลุความยืดหยุ่นของ LVM โดยใช้การตั้งค่านี้

อีกทางเลือกหนึ่งคือการตั้งค่าเซิร์ฟเวอร์ใหม่ (หรือแม้แต่บริการใหม่บนเซิร์ฟเวอร์เดียวกัน) และใช้ความสามารถในการจำลองแบบของฐานข้อมูล (ในกรณีนี้คือ PostgreSQL) แต่ดูเหมือนว่าจะทำงานมากเกินความจำเป็น

Mat avatar
cn flag
Mat
ทางเลือกในการจำลองแบบคือการตั้งค่าพื้นที่ตารางใหม่และย้ายวัตถุจากเก่าไปยังใหม่ (แต่ฉันไม่รู้จัก Postgres เพียงพอ - อาจมีการล็อกจำนวนมาก)
djdomi avatar
za flag
ไม่ควรคัดลอกฐานข้อมูลโดยตรงตราบเท่าที่มีการใช้งาน ฉันขอแนะนำให้หยุดทำงานในช่วงสุดสัปดาห์และใส่ฮาร์ดดิสก์ทั้งหมดและขยายในภายหลัง จำไว้ว่าในกรณีที่ไม่มีการจู่โจมและสำรองข้อมูลของคุณนั้นช่างงี่เง่าจริงๆ และได้รับผลกระทบมากกว่านี้
de flag
@djdomi ฉันไม่แนะนำให้คัดลอกข้อมูลจากใต้ฐานข้อมูลที่กำลังทำงานอยู่ ฉันกำลังมองหาตัวเลือกภายใต้ระบบไฟล์โดยเฉพาะที่นี่ การทดสอบการอ่าน/เขียนครั้งแรกของฉันใช้ `cp -r` เพื่อดูว่าจะใช้เวลานานเท่าใดเราพิจารณาว่าจะใช้ `rsync` สองครั้ง (ครั้งหนึ่งออนไลน์ หลังจากนั้นอีกครั้ง) แต่ตัดสินใจว่าความเร็วในการอ่านของไดรฟ์ตัวเก่าเป็นจุดคอขวด และเราจำเป็นต้องอ่านทั้งแหล่งที่มาและเป้าหมาย 100% เพื่อดำเนินการ rsync "ดิฟเฟอเรนเชียล" ในช่วงเวลาหยุดทำงาน ดังนั้นจึงไม่มีประโยชน์ที่แท้จริง
de flag
@Mat การย้ายวัตถุจากพื้นที่หนึ่งไปยังอีกที่หนึ่งอาจใช้งานได้ แต่แอปพลิเคชันที่ด้านบนของฐานข้อมูลไม่รองรับอะไรแบบนั้น และฉันไม่รู้จัก PostgreSQL ดีพอที่จะย้ายข้อมูลที่ใช้งานอยู่เช่นนั้น
A.B avatar
cl flag
A.B
ฉันจะใส่ลิงก์นี้กลับ ซึ่งฉันลังเลที่จะใส่ เพราะต้องใช้จาระบีมากในการทำให้ถูกต้อง: https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm -clone.html ข้อแม้: [การอัปเดตข้อมูลเมตาในดิสก์](https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/dm-clone.html#updating-on-disk-metadata) ต้องการเวลาหยุดทำงานสั้น ๆ เพื่อสลับอุปกรณ์พื้นฐานของ FS ด้วยจาระบีที่ข้อศอกมากขึ้น เป้าหมายอาจเป็น LVM PV/LV ที่เตรียมไว้ล่วงหน้า จากนั้นเมื่อย้ายข้อมูลทุกอย่างแล้ว การหยุดทำงานเล็กน้อยครั้งที่ 2 เพื่อปรับอีกครั้ง
de flag
@A.B `dm-clone` ดูเหมือนสิ่งที่ฉันกำลังมองหาคุณยืนยันได้ไหมว่าฉันจะ (1) หยุดบริการ/db ของฉัน ติดตั้ง fs ที่มีอยู่ใหม่แบบอ่านอย่างเดียว สร้าง dm-clone จากอุปกรณ์เก่า->ใหม่ เมานต์ใหม่เพื่อให้ทุกอย่างดูเหมือนเมื่อก่อน จากนั้น (2) รีสตาร์ท บริการและปล่อยให้การไล่น้ำเสร็จสิ้น จากนั้น (3) ณ จุดใด ๆ หลังจากการไล่น้ำให้เสร็จสิ้น ฉันสามารถถอดอุปกรณ์เก่าและ dm-clone fs ออก และเปลี่ยนไปใช้อุปกรณ์ใหม่ได้หรือไม่
A.B avatar
cl flag
A.B
คุณจะไม่เมานต์ fs ใหม่แบบอ่านอย่างเดียว คุณต้องเตรียมบล็อกใหม่ที่เป้าหมายด้วยลิงก์ (โดยใช้คุณสมบัติการโคลน) ไปยังอุปกรณ์บล็อกเก่า จากนั้นจะเมานต์ fs ที่ตำแหน่งใหม่โดยตรง การให้น้ำสามารถทำงานระหว่างการทำงานของฐานข้อมูล คุณอาจจัดการให้เป้าหมายใช้บล็อกที่แน่นอนของ LV ที่เตรียมไว้ล่วงหน้า ดังนั้นคุณจึงมีฟีเจอร์ LVM ในภายหลัง
de flag
@AB ฉันถามเกี่ยวกับการอ่านอย่างเดียวเพราะฉันไม่ต้องการให้ระบบไฟล์ต้นฉบับถูกแก้ไขระหว่างการคัดลอกที่ใช้งานอยู่ ฉันคิดว่ามันสามารถยกเลิกการต่อเชื่อมได้ทั้งหมด เนื่องจาก dm-clone จะทำงานในระดับบล็อกอยู่ดี
de flag
สำหรับเป้าหมาย LVM ฉันสามารถระบุบล็อคออฟเซ็ตของเป้าหมายเพื่อหลีกเลี่ยงการเขียนทับส่วนหัว LVM บนอุปกรณ์เป้าหมายได้หรือไม่ เสียงนั้นน่าสนใจอย่างแน่นอน ตามทฤษฎีแล้ว ฉันยังสามารถโคลนต้นทางไปยังเป้าหมายโดยที่เป้าหมายเป็นโลจิคัลวอลุ่ม LVM อยู่แล้ว เนื่องจากอุปกรณ์ต้นทางนั้นไม่มีอะไรเลยนอกจากระบบไฟล์และโลจิคัลวอลุ่มจะคล้ายกัน
A.B avatar
cl flag
A.B
ใช่โดยนัย: แหล่งที่มาเป็นแบบอ่านอย่างเดียวเมื่อไม่มีการใช้งาน เพื่อหลีกเลี่ยงข้อผิดพลาดในการจัดการ คุณสามารถบังคับให้อุปกรณ์บล็อกเป็นแบบอ่านอย่างเดียวด้วย `blockdev --setro` และใช่ คุณสามารถเลือก LV ให้เป็นส่วนปลายทางของการโคลน dm ได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา