ฉันขอแนะนำให้คุณอ่านสำเนารายงานต้นปี 2020 โดย Georgy Rylov “WAL-G: โอกาสใหม่และการขยายตัวของชุมชน”
ผู้ดูแลโอเพ่นซอร์สเผชิญกับความท้าทายมากมายเมื่อพวกเขาเติบโตขึ้น จะเขียนฟีเจอร์ที่จำเป็นมากขึ้นเรื่อยๆ แก้ไขปัญหามากขึ้นเรื่อยๆ และจัดการเพื่อดูคำขอดึงข้อมูลมากขึ้นได้อย่างไร เมื่อใช้ WAL-G (เครื่องมือสำรองข้อมูลสำหรับ PostgreSQL) เป็นตัวอย่าง ฉันจะบอกคุณว่าเราแก้ไขปัญหาเหล่านี้ได้อย่างไรโดยการเปิดตัวหลักสูตรเกี่ยวกับการพัฒนาโอเพ่นซอร์สที่มหาวิทยาลัย สิ่งที่เราประสบความสำเร็จและสิ่งที่เราจะก้าวต่อไป
สวัสดีทุกคนอีกครั้ง! ฉันเป็นนักพัฒนา Yandex จาก Yekaterinburg และวันนี้ผมจะมาพูดถึง WAL-G
ชื่อของรายงานไม่ได้บอกว่าเป็นเรื่องเกี่ยวกับการสำรองข้อมูล มีใครรู้บ้างว่า WAL-G คืออะไร? หรือทุกคนจะรู้? ยกมือขึ้นถ้าไม่รู้ ให้ตายเถอะ คุณมาถึงรายงานแล้วและไม่รู้ว่ามันเกี่ยวกับอะไร
ให้ฉันบอกคุณว่าวันนี้จะเกิดอะไรขึ้น มันบังเอิญว่าทีมของเราได้ทำการสำรองข้อมูลมาระยะหนึ่งแล้ว และนี่คือรายงานอีกฉบับในชุดที่เราพูดถึงวิธีการจัดเก็บข้อมูลอย่างปลอดภัย สะดวก และมีประสิทธิภาพ
ในซีรีส์ก่อนหน้านี้มีรายงานหลายฉบับของ Andrei Borodin และ Vladimir Leskov พวกเราหลายคน และเรากำลังพูดถึง WAL-G มาหลายปีแล้ว
cck.ru/F8ioz —
cck.ru/Ln8Qw —
รายงานนี้จะแตกต่างจากรายงานอื่นๆ เล็กน้อยตรงที่เป็นเรื่องเกี่ยวกับส่วนทางเทคนิคมากกว่า แต่ฉันจะพูดถึงวิธีที่เราพบปัญหาที่เกี่ยวข้องกับการเติบโตของชุมชน และเราได้แนวคิดเล็กๆ น้อยๆ ที่ช่วยเรารับมือกับเรื่องนี้ได้อย่างไร
ไม่กี่ปีที่ผ่านมา WAL-G เป็นโครงการเล็กๆ ที่เราได้รับจาก Citus Data และเราก็รับมันไป และมันถูกพัฒนาโดยคนคนหนึ่ง
และมีเพียง WAL-G เท่านั้นที่ไม่มี:
- การสำรองข้อมูลจากแบบจำลอง
- ไม่มีการสำรองข้อมูลเพิ่มเติม
- ไม่มีการสำรองข้อมูล WAL-Delta
- และยังขาดอีกมาก
ในช่วงไม่กี่ปีที่ผ่านมา WAL-G เติบโตขึ้นอย่างมาก
และภายในปี 2020 สิ่งที่กล่าวมาทั้งหมดก็ปรากฏขึ้นแล้ว และนี่คือสิ่งที่เรามีเพิ่มเติม:
- มากกว่า 1 ดาวบน GitHub
- ส้อม 150 อัน.
- PR ที่เปิดอยู่ประมาณ 15 คน
- และผู้ร่วมสมทบอีกมากมาย
- และเปิดประเด็นอยู่ตลอดเวลา และแม้ว่าเราจะไปที่นั่นทุกวันและทำอะไรบางอย่างเกี่ยวกับเรื่องนี้ก็ตาม
และเราได้ข้อสรุปว่าโครงการนี้ต้องการความสนใจของเรามากขึ้น แม้ว่าตัวเราเองไม่จำเป็นต้องดำเนินการใดๆ สำหรับบริการฐานข้อมูลที่ได้รับการจัดการของเราใน Yandex ก็ตาม
และที่ไหนสักแห่งในฤดูใบไม้ร่วงปี 2018 ความคิดก็เข้ามาในใจเรา โดยปกติแล้วทีมงานจะมีหลายวิธีในการพัฒนาคุณสมบัติบางอย่างหรือแก้ไขข้อบกพร่องหากคุณมีมือไม่เพียงพอ ตัวอย่างเช่น คุณสามารถจ้างนักพัฒนารายอื่นและจ่ายเงินให้เขาได้ หรือคุณสามารถฝึกงานได้ระยะหนึ่งและจ่ายเงินเดือนให้เขาด้วย แต่ก็ยังมีคนกลุ่มใหญ่อยู่บ้าง ซึ่งบางคนก็รู้วิธีเขียนโค้ดดีอยู่แล้ว คุณไม่รู้เสมอไปว่าโค้ดนั้นมีคุณภาพแค่ไหน
เราคิดเรื่องนี้แล้วจึงตัดสินใจพยายามดึงดูดนักเรียน แต่นักเรียนจะไม่เข้าร่วมทุกอย่างกับเรา พวกเขาจะทำงานเพียงบางส่วนเท่านั้น และพวกเขาจะทำเช่น เขียนการทดสอบ แก้ไขข้อบกพร่อง ใช้คุณสมบัติที่ไม่ส่งผลกระทบต่อฟังก์ชันการทำงานหลัก ฟังก์ชันหลักคือการสร้างการสำรองข้อมูลและการกู้คืนข้อมูลสำรอง หากเราทำผิดพลาดในการสร้างการสำรองข้อมูล เราจะพบว่าข้อมูลสูญหาย และแน่นอนว่าไม่มีใครต้องการสิ่งนี้ ทุกคนต้องการให้ทุกอย่างมีความปลอดภัยมาก ดังนั้นแน่นอนว่าเราไม่อยากให้โค้ดที่เราเชื่อถือน้อยกว่าของเราเอง นั่นคือโค้ดที่ไม่สำคัญคือสิ่งที่เราต้องการได้รับจากพนักงานเพิ่มเติมของเรา
PR ของนักเรียนยอมรับภายใต้เงื่อนไขใดบ้าง
- พวกเขาจำเป็นต้องครอบคลุมโค้ดด้วยการทดสอบ ทุกอย่างควรเกิดขึ้นใน CI
- และเรายังรีวิว 2 รายการอีกด้วย คนหนึ่งโดย Andrey Borodin และอีกคนโดยฉัน
- นอกจากนี้ เพื่อตรวจสอบว่าสิ่งนี้จะไม่ทำให้บริการของเราเสียหาย ฉันจึงอัปโหลดชุดประกอบด้วยคอมมิตนี้แยกกัน และเราตรวจสอบการทดสอบแบบ end-to-end ว่าไม่มีอะไรล้มเหลว
หลักสูตรพิเศษเกี่ยวกับโอเพ่นซอร์ส
เล็กน้อยเกี่ยวกับสาเหตุที่จำเป็นและเหตุใดจึงดูเหมือนว่าเป็นแนวคิดที่ยอดเยี่ยม
สำหรับเรา กำไรชัดเจน:
- เราได้รับมือพิเศษ
- และเรากำลังมองหาผู้สมัครเข้าทีมในกลุ่มนักเรียนที่เก่งและเขียนโค้ดอัจฉริยะ
นักศึกษาจะได้รับประโยชน์อะไร?
สิ่งเหล่านี้อาจไม่ชัดเจนนัก เนื่องจากอย่างน้อยที่สุด นักเรียนจะไม่ได้รับเงินสำหรับโค้ดที่พวกเขาเขียน แต่จะได้รับเฉพาะเกรดสำหรับบันทึกของนักเรียนเท่านั้น
ฉันถามพวกเขาเกี่ยวกับเรื่องนี้ และในคำพูดของพวกเขา:
- ประสบการณ์ผู้ร่วมให้ข้อมูลใน Open Source
- รับบรรทัดใน CV ของคุณ
- พิสูจน์ตัวเองและผ่านการสัมภาษณ์ใน Yandex
- สมัครสมาชิก GSoC
- +1 หลักสูตรพิเศษสำหรับผู้ที่ต้องการเขียนโค้ด
ฉันจะไม่พูดถึงว่าหลักสูตรมีโครงสร้างอย่างไร ฉันจะบอกว่า WAL-G เป็นโปรเจ็กต์หลัก นอกจากนี้เรายังรวมโครงการต่างๆ เช่น Odyssey, PostgreSQL และ ClickHouse ไว้ในหลักสูตรนี้ด้วย
และพวกเขาไม่เพียงแต่ให้ปัญหาในหลักสูตรนี้เท่านั้น แต่ยังแจกประกาศนียบัตรและรายวิชาอีกด้วย
แล้วประโยชน์สำหรับผู้ใช้ล่ะ?
ตอนนี้เรามาดูส่วนที่คุณสนใจมากที่สุดกันดีกว่า ทำแบบนี้คุณมีประโยชน์อะไร? ประเด็นก็คือนักเรียนได้แก้ไขข้อบกพร่องมากมาย และเราได้จัดทำคุณสมบัติคำขอที่คุณขอให้เราทำ
ข้าพเจ้าขอเล่าให้ท่านฟังถึงสิ่งที่ท่านปรารถนามานานแล้วและได้สำเร็จแล้ว
รองรับพื้นที่ตาราง คาดว่าจะมี Tablespaces ใน WAL-G นับตั้งแต่เปิดตัว WAL-G เนื่องจาก WAL-G เป็นผู้สืบทอดต่อจากเครื่องมือสำรองข้อมูลอื่น WAL-E ซึ่งรองรับการสำรองฐานข้อมูลด้วย tablespaces
ฉันขอเตือนคุณสั้นๆ ว่ามันคืออะไรและทำไมจึงจำเป็นทั้งหมด โดยทั่วไปแล้ว ข้อมูล Postgres ทั้งหมดของคุณจะครอบครองหนึ่งไดเร็กทอรีบนระบบไฟล์ที่เรียกว่าฐาน และไดเร็กทอรีนี้มีไฟล์และไดเร็กทอรีย่อยทั้งหมดที่ Postgres ต้องการอยู่แล้ว
Tablespaces คือไดเร็กทอรีที่มีข้อมูล Postgres แต่ไม่ได้อยู่นอกไดเร็กทอรีฐาน สไลด์แสดงให้เห็นว่า Tablespaces ตั้งอยู่นอกไดเร็กทอรีฐาน
สิ่งนี้มีลักษณะอย่างไรสำหรับ Postgres เอง มีไดเร็กทอรีย่อย pg_tblspc แยกต่างหากในไดเร็กทอรีฐาน และมีลิงก์ไปยังไดเร็กทอรีที่มีข้อมูล Postgres อยู่นอกไดเร็กทอรีฐาน
เมื่อคุณใช้ทั้งหมดนี้ คำสั่งเหล่านี้อาจมีลักษณะเช่นนี้สำหรับคุณ นั่นคือคุณสร้างตารางในพื้นที่ตารางที่ระบุและดูว่าตอนนี้อยู่ที่ไหน นี่คือสองบรรทัดสุดท้าย ซึ่งเป็นสองคำสั่งสุดท้ายที่ถูกเรียก และเห็นได้ชัดว่ามีวิธีบางอย่าง แต่ในความเป็นจริงนี่ไม่ใช่วิธีที่แท้จริง นี่คือเส้นทางนำหน้าจากไดเร็กทอรีฐานไปยังพื้นที่ตาราง จากนั้นจะจับคู่กับลิงก์สัญลักษณ์ที่นำไปสู่ข้อมูลจริงของคุณ
เราไม่ได้ใช้ทั้งหมดนี้ในทีมของเรา แต่ถูกใช้โดยผู้ใช้ WAL-E อื่นๆ จำนวนมากที่เขียนถึงเราว่าพวกเขาต้องการย้ายไปยัง WAL-G แต่สิ่งนี้กำลังหยุดพวกเขา ขณะนี้ได้รับการสนับสนุนแล้ว
คุณสมบัติอีกอย่างที่หลักสูตรพิเศษของเรานำมาให้เราก็คือการติดตาม ผู้ที่อาจเคยร่วมงานกับ Oracle มากกว่า Postgres จะรู้เรื่องการติดตาม
สั้น ๆ เกี่ยวกับว่ามันคืออะไร โทโพโลยีคลัสเตอร์ในบริการของเรามักจะมีลักษณะดังนี้ เรามีเจ้านาย มีแบบจำลองที่สตรีมบันทึกการเขียนล่วงหน้าจากนั้น และแบบจำลองจะบอกต้นแบบว่า LSN ใดที่ขณะนี้เปิดอยู่ และที่ใดที่หนึ่งควบคู่ไปกับสิ่งนี้สามารถเก็บถาวรบันทึกได้ และนอกเหนือจากการเก็บถาวรบันทึกแล้ว ข้อมูลสำรองยังถูกส่งไปยังระบบคลาวด์อีกด้วย และการสำรองข้อมูลเดลต้าจะถูกส่งไป
ปัญหาอาจเกิดจากอะไร? เมื่อคุณมีฐานข้อมูลที่ค่อนข้างใหญ่ อาจกลายเป็นว่าแบบจำลองของคุณเริ่มล้าหลังฐานข้อมูลหลักมาก และเธอก็ล้าหลังมากจนตามเขาไม่ทัน ปัญหานี้มักจะต้องได้รับการแก้ไขอย่างใด
และวิธีที่ง่ายที่สุดคือการลบตัวจำลองออกแล้วอัปโหลดใหม่ เพราะมันจะไม่ตามทัน และปัญหาจะต้องได้รับการจัดการ แต่นี่ค่อนข้างนาน เนื่องจากการกู้คืนข้อมูลสำรองฐานข้อมูลขนาด 10 TB ทั้งหมดนั้นใช้เวลานานมาก และเราต้องการดำเนินการทั้งหมดนี้โดยเร็วที่สุดหากเกิดปัญหาดังกล่าว และนั่นคือสิ่งที่มีไว้เพื่อการติดตาม
Catchup ช่วยให้คุณใช้การสำรองข้อมูลแบบเดลต้าซึ่งจัดเก็บไว้ในระบบคลาวด์ในลักษณะนี้ คุณบอกว่า LSN ใดที่แบบจำลองที่ล้าหลังเปิดอยู่ และระบุในคำสั่ง catchup เพื่อสร้างการสำรองข้อมูลเดลต้าระหว่าง LSN นั้นและ LSN ที่คลัสเตอร์ของคุณตั้งอยู่ในปัจจุบัน และหลังจากนั้น ให้คุณกู้คืนข้อมูลสำรองนี้ไปยังแบบจำลองที่ล้าหลัง
ฐานอื่นๆ
นักเรียนยังนำคุณสมบัติมากมายมาให้เราในคราวเดียว เนื่องจากที่ Yandex เราไม่เพียงแต่ทำอาหารใน Postgres เท่านั้น เรายังมี MySQL, MongoDB, Redis, ClickHouse อีกด้วย ในบางจุดเราจำเป็นต้องสำรองข้อมูลด้วยการกู้คืน ณ เวลาใดเวลาหนึ่งสำหรับ MySQL และเพื่อให้มีโอกาสอัปโหลด พวกเขาไปยังคลาวด์
และเราต้องการทำในลักษณะเดียวกันกับที่ WAL-G ทำ และเราตัดสินใจทดลองและดูว่าทุกอย่างจะออกมาเป็นอย่างไร
และในตอนแรก พวกเขาไม่ได้แบ่งปันตรรกะนี้แต่อย่างใด พวกเขาเขียนโค้ดไว้ในทางแยก พวกเขาเห็นว่าเรามีโมเดลการทำงานบางอย่างและมันบินได้ จากนั้นเราคิดว่าชุมชนหลักของเราคือกลุ่มหลังลัทธิ พวกเขาใช้ WAL-G ดังนั้นเราจึงจำเป็นต้องแยกส่วนเหล่านี้ออก นั่นคือ เมื่อเราแก้ไขโค้ดสำหรับ Postgres เราจะไม่ทำให้ MySQL เสียหาย เมื่อเราแก้ไข MySQL เราจะไม่ทำให้ Postgres เสียหาย
แนวคิดแรกเกี่ยวกับวิธีแยกสิ่งนี้คือแนวคิดในการใช้แนวทางเดียวกันกับที่ใช้ในส่วนขยาย PostgreSQL และในความเป็นจริง เพื่อทำการสำรองข้อมูล MySQL คุณต้องติดตั้งไดนามิกไลบรารีบางประเภท
แต่ที่นี่ความไม่สมดุลของแนวทางนี้มองเห็นได้ทันที เมื่อคุณสำรองข้อมูล Postgres คุณจะต้องสำรองข้อมูลปกติสำหรับ Postgres และทุกอย่างเรียบร้อยดี และสำหรับ MySQL ปรากฎว่าคุณติดตั้งการสำรองข้อมูลสำหรับ Postgres และติดตั้งไลบรารีแบบไดนามิกสำหรับ MySQL ด้วย มันฟังดูแปลกๆ เราก็คิดเช่นนั้นเช่นกันและตัดสินใจว่านี่ไม่ใช่วิธีแก้ปัญหาที่เราต้องการ
บิลด์ต่างๆ สำหรับ Postgres, MySQL, MongoDB, Redis
แต่สิ่งนี้ทำให้เราสามารถตัดสินใจได้อย่างถูกต้อง - เพื่อจัดสรรชุดประกอบที่แตกต่างกันสำหรับฐานที่แตกต่างกัน ซึ่งทำให้สามารถแยกตรรกะที่เชื่อมโยงกับการสำรองข้อมูลฐานข้อมูลต่างๆ ที่จะเข้าถึง API ทั่วไปที่ WAL-G นำไปใช้ได้
นี่คือส่วนที่เราเขียนเอง - ก่อนที่จะให้นักเรียนแก้โจทย์ นั่นคือนี่คือส่วนที่พวกเขาสามารถทำอะไรผิดได้ ดังนั้นเราจึงตัดสินใจว่าเราควรทำอะไรแบบนี้ดีกว่า แล้วทุกอย่างจะเรียบร้อยดี
หลังจากนั้นเราก็แจกแจงปัญหา พวกเขาถูกรื้อถอนทันที นักเรียนจะต้องสนับสนุนสามฐาน
นี่คือ MySQL ที่เราสำรองข้อมูลโดยใช้ WAL-G ในลักษณะนี้มานานกว่าหนึ่งปี
และตอนนี้ MongoDB กำลังเข้าใกล้การผลิต โดยที่พวกเขากำลังจบมันด้วยไฟล์ ที่จริงแล้ว เราได้เขียนกรอบการทำงานสำหรับทั้งหมดนี้ จากนั้นนักเรียนก็เขียนสิ่งที่ใช้การได้ แล้วเราก็นำมันไปสู่สถานะที่เราสามารถยอมรับได้ในการผลิต
ปัญหาเหล่านี้ดูเหมือนนักเรียนไม่จำเป็นต้องเขียนเครื่องมือสำรองข้อมูลที่สมบูรณ์สำหรับฐานข้อมูลแต่ละฐานข้อมูล เราไม่มีปัญหาดังกล่าว ปัญหาของเราคือเราต้องการการกู้คืนแบบ point-in-time และเราต้องการสำรองข้อมูลไปยังระบบคลาวด์ และพวกเขาขอให้นักเรียนเขียนโค้ดที่จะแก้ปัญหานี้ นักเรียนใช้เครื่องมือสำรองข้อมูลที่มีอยู่แล้ว ซึ่งทำการสำรองข้อมูล จากนั้นจึงรวมข้อมูลทั้งหมดเข้าด้วยกันด้วย WAL-G ซึ่งส่งต่อข้อมูลทั้งหมดไปยังระบบคลาวด์ และพวกเขายังเพิ่มการกู้คืนแบบ point-in-time เข้าไปด้วย
นักเรียนนำอะไรมาอีกบ้าง? พวกเขานำการสนับสนุนการเข้ารหัส Libsodium มาสู่ WAL-G
เรายังมีนโยบายการจัดเก็บข้อมูลสำรองอีกด้วย ขณะนี้การสำรองข้อมูลสามารถทำเครื่องหมายว่าถาวรได้ และจะสะดวกกว่าสำหรับบริการของคุณในการทำให้กระบวนการจัดเก็บเป็นไปโดยอัตโนมัติ
ผลลัพธ์ของการทดลองนี้คืออะไร?
มีผู้ลงทะเบียนเข้าร่วมหลักสูตรนี้ตั้งแต่แรกแล้วมากกว่า 100 คน ตอนแรกฉันไม่ได้บอกว่ามหาวิทยาลัยในเยคาเตรินเบิร์กคือมหาวิทยาลัยสหพันธรัฐอูราล เราประกาศทุกอย่างที่นั่น ลงทะเบียน 100 คน. ในความเป็นจริง มีคนเริ่มทำอะไรบางอย่างน้อยลงมาก ประมาณ 30 คน
ยิ่งมีคนเรียนจบหลักสูตรน้อยลงด้วยซ้ำ เนื่องจากจำเป็นต้องเขียนการทดสอบสำหรับโค้ดที่มีอยู่แล้ว และแก้ไขข้อบกพร่องหรือสร้างคุณสมบัติบางอย่างด้วย และนักเรียนบางส่วนยังคงปิดหลักสูตร
ปัจจุบัน ในระหว่างหลักสูตรนี้ นักเรียนได้แก้ไขปัญหาไปแล้วประมาณ 14 ประเด็น และสร้างฟีเจอร์ขนาดต่างๆ 10 ประการ และสำหรับฉันแล้วดูเหมือนว่านี่คือการแทนที่นักพัฒนาหนึ่งหรือสองคนอย่างเต็มรูปแบบ
เหนือสิ่งอื่นใด เราได้ออกประกาศนียบัตรและรายวิชาเรียน และได้รับประกาศนียบัตร 12 คน 6 คนในจำนวนนี้ป้องกันตัวเองที่ "5" แล้ว ผู้ที่เหลืออยู่ยังไม่มีความคุ้มครอง แต่ฉันคิดว่าทุกอย่างจะดีสำหรับพวกเขาเช่นกัน
แผนสำหรับอนาคต
เรามีแผนอะไรสำหรับอนาคต?
อย่างน้อยคำขอคุณลักษณะเหล่านั้นที่เราเคยได้ยินจากผู้ใช้และต้องการดำเนินการ นี้:
- การตรวจสอบความถูกต้องของการติดตามไทม์ไลน์ในไฟล์สำรองข้อมูลคลัสเตอร์ HA คุณสามารถทำได้ด้วย WAL-G และผมคิดว่าเราจะมีนักเรียนที่จะเข้ามาดูแลเรื่องนี้
- เรามีบุคคลที่รับผิดชอบในการถ่ายโอนข้อมูลสำรองและ WAL ระหว่างคลาวด์อยู่แล้ว
- และเมื่อเร็วๆ นี้ เราได้เผยแพร่แนวคิดที่ว่าเราสามารถเพิ่มความเร็วให้กับ WAL-G ได้มากขึ้นไปอีกโดยการแตกไฟล์สำรองข้อมูลส่วนเพิ่มโดยไม่ต้องเขียนหน้าใหม่ และเพิ่มประสิทธิภาพไฟล์เก็บถาวรที่เราส่งไปที่นั่น
คุณสามารถแบ่งปันได้ที่นี่
รายงานนี้มีไว้เพื่ออะไร? ยิ่งกว่านั้นตอนนี้นอกจาก 4 คนที่สนับสนุนโปรเจ็กต์นี้แล้ว เราก็ยังมีมือเพิ่มเติมซึ่งก็มีค่อนข้างมาก โดยเฉพาะอย่างยิ่งถ้าคุณเขียนถึงพวกเขาในข้อความส่วนตัว และหากคุณสำรองข้อมูลของคุณและดำเนินการโดยใช้ WAL-G หรือต้องการย้ายไปยัง WAL-G เราก็จะสามารถรองรับความต้องการของคุณได้อย่างง่ายดาย
นี่คือรหัส QR และลิงก์ คุณสามารถอ่านและเขียนความปรารถนาทั้งหมดของคุณ ตัวอย่างเช่น เราไม่ได้แก้ไขข้อบกพร่องบางอย่าง หรือคุณต้องการคุณสมบัติบางอย่างจริงๆ แต่ด้วยเหตุผลบางอย่าง มันจึงยังไม่มีการสำรองข้อมูลใดๆ รวมถึงของเราด้วย อย่าลืมเขียนเกี่ยวกับเรื่องนี้
คำถาม
สวัสดี! ขอบคุณสำหรับรายงาน! คำถามเกี่ยวกับ WAL-G แต่ไม่เกี่ยวกับ Postgres WAL-G สำรองข้อมูล MySQL และเรียกใช้การสำรองข้อมูลเพิ่มเติม หากเราทำการติดตั้งสมัยใหม่บน CentOS และหากคุณทำการติดตั้ง MySQL MariDB จะถูกติดตั้ง ตั้งแต่เวอร์ชัน 10.3 ไม่รองรับการสำรองข้อมูลเพิ่มเติม รองรับการสำรองข้อมูล MariDB คุณเป็นยังไงบ้างกับเรื่องนี้?
ในขณะนี้เรายังไม่ได้พยายามสำรองข้อมูล MariDB เรามีคำขอสำหรับการสนับสนุน FoundationDB แต่โดยทั่วไป หากมีคำขอดังกล่าว เราก็จะสามารถหาผู้ที่จะดำเนินการดังกล่าวได้ มันไม่ได้ยาวหรือยากอย่างที่คิด
สวัสดีตอนบ่าย ขอบคุณสำหรับรายงาน! คำถามเกี่ยวกับคุณสมบัติใหม่ที่เป็นไปได้ คุณพร้อมที่จะให้ WAL-G ทำงานกับเทปเพื่อสำรองข้อมูลลงในเทปแล้วหรือยัง?
การสำรองข้อมูลบนที่เก็บเทปหมายความว่าอย่างไร
ใช่
มี Andrei Borodin ที่สามารถตอบคำถามนี้ได้ดีกว่าฉัน
(อันเดรย์) ใช่ ขอบคุณสำหรับคำถาม! เรามีคำขอให้ถ่ายโอนข้อมูลสำรองไปยังเทปจากที่เก็บข้อมูลบนคลาวด์ และสำหรับสิ่งนี้
ขอบคุณสำหรับรายงาน! กระบวนการพัฒนาที่น่าสนใจ การสำรองข้อมูลเป็นฟังก์ชันการทำงานที่สำคัญซึ่งควรได้รับการทดสอบอย่างดี เมื่อคุณใช้ฟังก์ชันการทำงานสำหรับฐานข้อมูลใหม่ นักเรียนได้เขียนการทดสอบด้วย หรือคุณเขียนการทดสอบด้วยตัวเองแล้วจึงมอบการใช้งานให้กับนักเรียน
นักเรียนยังเขียนแบบทดสอบ แต่นักเรียนเขียนเพิ่มเติมเกี่ยวกับฟีเจอร์ต่างๆ เช่น ฐานข้อมูลใหม่ พวกเขาเขียนการทดสอบบูรณาการ และพวกเขาเขียนการทดสอบหน่วย หากการรวมผ่าน นั่นคือ ในขณะนี้ นี่คือสคริปต์ที่คุณดำเนินการด้วยตนเองหรือคุณให้ cron ทำ เป็นต้น นั่นคือสคริปต์มีความชัดเจนมาก
นักเรียนไม่มีประสบการณ์มากนัก การทบทวนใช้เวลานานหรือไม่?
ใช่ การตรวจสอบใช้เวลาค่อนข้างมาก โดยปกติแล้วเมื่อมีผู้มอบหมายงานหลายคนมาพร้อมกันและบอกว่าฉันทำสิ่งนี้ ฉันก็ทำอย่างนั้น คุณต้องคิดและเผื่อเวลาไว้ประมาณครึ่งวันเพื่อดูว่าพวกเขาเขียนอะไรอยู่ที่นั่น เพราะต้องอ่านโค้ดให้ละเอียด พวกเขาไม่มีการสัมภาษณ์ เราไม่รู้จักพวกเขาดีนัก ดังนั้นจึงต้องใช้เวลาพอสมควร
ขอบคุณสำหรับรายงาน! ก่อนหน้านี้ Andrey Borodin ระบุว่า ควรเรียก archive_command ใน WAL-G โดยตรง แต่ในกรณีของคลัสเตอร์คาร์ทริดจ์บางประเภท เราจำเป็นต้องมีตรรกะเพิ่มเติมเพื่อกำหนดโหนดที่จะส่งเพลา คุณจะแก้ไขปัญหานี้ด้วยตัวเองได้อย่างไร?
คุณมีปัญหาอะไรที่นี่? สมมติว่าคุณมีแบบจำลองซิงโครนัสที่คุณกำลังสำรองข้อมูลอยู่ หรืออะไร?
(Andrey) ความจริงก็คือ WAL-G นั้นมีจุดประสงค์เพื่อใช้โดยไม่มีเชลล์สคริปต์ หากมีบางอย่างขาดหายไป เรามาเพิ่มตรรกะที่ควรอยู่ภายใน WAL-G กันดีกว่า สำหรับแหล่งที่มาของการเก็บถาวร เราเชื่อว่าการเก็บถาวรควรมาจากต้นแบบปัจจุบันในคลัสเตอร์ การเก็บถาวรจากแบบจำลองถือเป็นความคิดที่ไม่ดี มีหลายสถานการณ์ที่เป็นไปได้ที่มีปัญหา โดยเฉพาะปัญหาในการเก็บถาวรไทม์ไลน์และข้อมูลเพิ่มเติมใดๆ ขอบคุณสำหรับคำถาม!
(คำชี้แจง: เรากำจัดเชลล์สคริปต์แล้ว
สวัสดีตอนเย็น! ขอบคุณสำหรับรายงาน! ฉันสนใจฟีเจอร์ติดตามผลที่คุณพูดถึง เรากำลังเผชิญกับสถานการณ์ที่มีแบบจำลองอยู่ข้างหลังและตามไม่ทัน และฉันไม่พบคำอธิบายของคุณสมบัตินี้ในเอกสาร WAL-G
Catchup ปรากฏอย่างแท้จริงในวันที่ 20 มกราคม 2020 เอกสารอาจต้องมีการปรับปรุงเพิ่มเติม เราเขียนเองแต่เขียนไม่เก่ง และบางทีเราควรเริ่มให้นักเรียนเขียนมัน
เปิดตัวแล้วใช่ไหม?
คำขอดึงนั้นตายแล้ว กล่าวคือ ฉันตรวจสอบแล้ว ฉันลองสิ่งนี้กับคลัสเตอร์ทดสอบ จนถึงตอนนี้เรายังไม่มีสถานการณ์ที่สามารถทดสอบสิ่งนี้ได้ในตัวอย่างการต่อสู้
คาดหวังได้เมื่อไหร่?
ฉันไม่รู้. รออีกเดือนเราจะตรวจสอบให้แน่ชัด
ที่มา: will.com