WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

ฉันขอแนะนำให้คุณอ่านสำเนารายงานต้นปี 2020 โดย Georgy Rylov “WAL-G: โอกาสใหม่และการขยายตัวของชุมชน”

ผู้ดูแลโอเพ่นซอร์สเผชิญกับความท้าทายมากมายเมื่อพวกเขาเติบโตขึ้น จะเขียนฟีเจอร์ที่จำเป็นมากขึ้นเรื่อยๆ แก้ไขปัญหามากขึ้นเรื่อยๆ และจัดการเพื่อดูคำขอดึงข้อมูลมากขึ้นได้อย่างไร เมื่อใช้ WAL-G (เครื่องมือสำรองข้อมูลสำหรับ PostgreSQL) เป็นตัวอย่าง ฉันจะบอกคุณว่าเราแก้ไขปัญหาเหล่านี้ได้อย่างไรโดยการเปิดตัวหลักสูตรเกี่ยวกับการพัฒนาโอเพ่นซอร์สที่มหาวิทยาลัย สิ่งที่เราประสบความสำเร็จและสิ่งที่เราจะก้าวต่อไป

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

สวัสดีทุกคนอีกครั้ง! ฉันเป็นนักพัฒนา Yandex จาก Yekaterinburg และวันนี้ผมจะมาพูดถึง WAL-G

ชื่อของรายงานไม่ได้บอกว่าเป็นเรื่องเกี่ยวกับการสำรองข้อมูล มีใครรู้บ้างว่า WAL-G คืออะไร? หรือทุกคนจะรู้? ยกมือขึ้นถ้าไม่รู้ ให้ตายเถอะ คุณมาถึงรายงานแล้วและไม่รู้ว่ามันเกี่ยวกับอะไร

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

ในซีรีส์ก่อนหน้านี้มีรายงานหลายฉบับของ Andrei Borodin และ Vladimir Leskov พวกเราหลายคน และเรากำลังพูดถึง WAL-G มาหลายปีแล้ว

cck.ru/F8ioz — https://www.highload.ru/moscow/2018/abstracts/3964

cck.ru/Ln8Qw — https://www.highload.ru/moscow/2019/abstracts/5981

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

ไม่กี่ปีที่ผ่านมา WAL-G เป็นโครงการเล็กๆ ที่เราได้รับจาก Citus Data และเราก็รับมันไป และมันถูกพัฒนาโดยคนคนหนึ่ง

และมีเพียง WAL-G เท่านั้นที่ไม่มี:

  • การสำรองข้อมูลจากแบบจำลอง
  • ไม่มีการสำรองข้อมูลเพิ่มเติม
  • ไม่มีการสำรองข้อมูล WAL-Delta
  • และยังขาดอีกมาก

ในช่วงไม่กี่ปีที่ผ่านมา WAL-G เติบโตขึ้นอย่างมาก

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

และภายในปี 2020 สิ่งที่กล่าวมาทั้งหมดก็ปรากฏขึ้นแล้ว และนี่คือสิ่งที่เรามีเพิ่มเติม:

  • มากกว่า 1 ดาวบน GitHub
  • ส้อม 150 อัน.
  • PR ที่เปิดอยู่ประมาณ 15 คน
  • และผู้ร่วมสมทบอีกมากมาย
  • และเปิดประเด็นอยู่ตลอดเวลา และแม้ว่าเราจะไปที่นั่นทุกวันและทำอะไรบางอย่างเกี่ยวกับเรื่องนี้ก็ตาม

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

และเราได้ข้อสรุปว่าโครงการนี้ต้องการความสนใจของเรามากขึ้น แม้ว่าตัวเราเองไม่จำเป็นต้องดำเนินการใดๆ สำหรับบริการฐานข้อมูลที่ได้รับการจัดการของเราใน Yandex ก็ตาม

และที่ไหนสักแห่งในฤดูใบไม้ร่วงปี 2018 ความคิดก็เข้ามาในใจเรา โดยปกติแล้วทีมงานจะมีหลายวิธีในการพัฒนาคุณสมบัติบางอย่างหรือแก้ไขข้อบกพร่องหากคุณมีมือไม่เพียงพอ ตัวอย่างเช่น คุณสามารถจ้างนักพัฒนารายอื่นและจ่ายเงินให้เขาได้ หรือคุณสามารถฝึกงานได้ระยะหนึ่งและจ่ายเงินเดือนให้เขาด้วย แต่ก็ยังมีคนกลุ่มใหญ่อยู่บ้าง ซึ่งบางคนก็รู้วิธีเขียนโค้ดดีอยู่แล้ว คุณไม่รู้เสมอไปว่าโค้ดนั้นมีคุณภาพแค่ไหน

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

PR ของนักเรียนยอมรับภายใต้เงื่อนไขใดบ้าง

  • พวกเขาจำเป็นต้องครอบคลุมโค้ดด้วยการทดสอบ ทุกอย่างควรเกิดขึ้นใน CI
  • และเรายังรีวิว 2 รายการอีกด้วย คนหนึ่งโดย Andrey Borodin และอีกคนโดยฉัน
  • นอกจากนี้ เพื่อตรวจสอบว่าสิ่งนี้จะไม่ทำให้บริการของเราเสียหาย ฉันจึงอัปโหลดชุดประกอบด้วยคอมมิตนี้แยกกัน และเราตรวจสอบการทดสอบแบบ end-to-end ว่าไม่มีอะไรล้มเหลว

หลักสูตรพิเศษเกี่ยวกับโอเพ่นซอร์ส

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

เล็กน้อยเกี่ยวกับสาเหตุที่จำเป็นและเหตุใดจึงดูเหมือนว่าเป็นแนวคิดที่ยอดเยี่ยม

สำหรับเรา กำไรชัดเจน:

  • เราได้รับมือพิเศษ
  • และเรากำลังมองหาผู้สมัครเข้าทีมในกลุ่มนักเรียนที่เก่งและเขียนโค้ดอัจฉริยะ

นักศึกษาจะได้รับประโยชน์อะไร?

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

ฉันถามพวกเขาเกี่ยวกับเรื่องนี้ และในคำพูดของพวกเขา:

  • ประสบการณ์ผู้ร่วมให้ข้อมูลใน Open Source
  • รับบรรทัดใน CV ของคุณ
  • พิสูจน์ตัวเองและผ่านการสัมภาษณ์ใน Yandex
  • สมัครสมาชิก GSoC
  • +1 หลักสูตรพิเศษสำหรับผู้ที่ต้องการเขียนโค้ด

ฉันจะไม่พูดถึงว่าหลักสูตรมีโครงสร้างอย่างไร ฉันจะบอกว่า WAL-G เป็นโปรเจ็กต์หลัก นอกจากนี้เรายังรวมโครงการต่างๆ เช่น Odyssey, PostgreSQL และ ClickHouse ไว้ในหลักสูตรนี้ด้วย

และพวกเขาไม่เพียงแต่ให้ปัญหาในหลักสูตรนี้เท่านั้น แต่ยังแจกประกาศนียบัตรและรายวิชาอีกด้วย

แล้วประโยชน์สำหรับผู้ใช้ล่ะ?

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

ข้าพเจ้าขอเล่าให้ท่านฟังถึงสิ่งที่ท่านปรารถนามานานแล้วและได้สำเร็จแล้ว

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

รองรับพื้นที่ตาราง คาดว่าจะมี Tablespaces ใน WAL-G นับตั้งแต่เปิดตัว WAL-G เนื่องจาก WAL-G เป็นผู้สืบทอดต่อจากเครื่องมือสำรองข้อมูลอื่น WAL-E ซึ่งรองรับการสำรองฐานข้อมูลด้วย tablespaces

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

Tablespaces คือไดเร็กทอรีที่มีข้อมูล Postgres แต่ไม่ได้อยู่นอกไดเร็กทอรีฐาน สไลด์แสดงให้เห็นว่า Tablespaces ตั้งอยู่นอกไดเร็กทอรีฐาน

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

สิ่งนี้มีลักษณะอย่างไรสำหรับ Postgres เอง มีไดเร็กทอรีย่อย pg_tblspc แยกต่างหากในไดเร็กทอรีฐาน และมีลิงก์ไปยังไดเร็กทอรีที่มีข้อมูล Postgres อยู่นอกไดเร็กทอรีฐาน

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

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

เราไม่ได้ใช้ทั้งหมดนี้ในทีมของเรา แต่ถูกใช้โดยผู้ใช้ WAL-E อื่นๆ จำนวนมากที่เขียนถึงเราว่าพวกเขาต้องการย้ายไปยัง WAL-G แต่สิ่งนี้กำลังหยุดพวกเขา ขณะนี้ได้รับการสนับสนุนแล้ว

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 เสียหาย

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

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

แต่ที่นี่ความไม่สมดุลของแนวทางนี้มองเห็นได้ทันที เมื่อคุณสำรองข้อมูล Postgres คุณจะต้องสำรองข้อมูลปกติสำหรับ Postgres และทุกอย่างเรียบร้อยดี และสำหรับ MySQL ปรากฎว่าคุณติดตั้งการสำรองข้อมูลสำหรับ Postgres และติดตั้งไลบรารีแบบไดนามิกสำหรับ MySQL ด้วย มันฟังดูแปลกๆ เราก็คิดเช่นนั้นเช่นกันและตัดสินใจว่านี่ไม่ใช่วิธีแก้ปัญหาที่เราต้องการ

บิลด์ต่างๆ สำหรับ Postgres, MySQL, MongoDB, Redis

แต่สิ่งนี้ทำให้เราสามารถตัดสินใจได้อย่างถูกต้อง - เพื่อจัดสรรชุดประกอบที่แตกต่างกันสำหรับฐานที่แตกต่างกัน ซึ่งทำให้สามารถแยกตรรกะที่เชื่อมโยงกับการสำรองข้อมูลฐานข้อมูลต่างๆ ที่จะเข้าถึง API ทั่วไปที่ WAL-G นำไปใช้ได้

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

หลังจากนั้นเราก็แจกแจงปัญหา พวกเขาถูกรื้อถอนทันที นักเรียนจะต้องสนับสนุนสามฐาน

นี่คือ MySQL ที่เราสำรองข้อมูลโดยใช้ WAL-G ในลักษณะนี้มานานกว่าหนึ่งปี

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

ปัญหาเหล่านี้ดูเหมือนนักเรียนไม่จำเป็นต้องเขียนเครื่องมือสำรองข้อมูลที่สมบูรณ์สำหรับฐานข้อมูลแต่ละฐานข้อมูล เราไม่มีปัญหาดังกล่าว ปัญหาของเราคือเราต้องการการกู้คืนแบบ point-in-time และเราต้องการสำรองข้อมูลไปยังระบบคลาวด์ และพวกเขาขอให้นักเรียนเขียนโค้ดที่จะแก้ปัญหานี้ นักเรียนใช้เครื่องมือสำรองข้อมูลที่มีอยู่แล้ว ซึ่งทำการสำรองข้อมูล จากนั้นจึงรวมข้อมูลทั้งหมดเข้าด้วยกันด้วย WAL-G ซึ่งส่งต่อข้อมูลทั้งหมดไปยังระบบคลาวด์ และพวกเขายังเพิ่มการกู้คืนแบบ point-in-time เข้าไปด้วย

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

นักเรียนนำอะไรมาอีกบ้าง? พวกเขานำการสนับสนุนการเข้ารหัส Libsodium มาสู่ WAL-G

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

ผลลัพธ์ของการทดลองนี้คืออะไร?

มีผู้ลงทะเบียนเข้าร่วมหลักสูตรนี้ตั้งแต่แรกแล้วมากกว่า 100 คน ตอนแรกฉันไม่ได้บอกว่ามหาวิทยาลัยในเยคาเตรินเบิร์กคือมหาวิทยาลัยสหพันธรัฐอูราล เราประกาศทุกอย่างที่นั่น ลงทะเบียน 100 คน. ในความเป็นจริง มีคนเริ่มทำอะไรบางอย่างน้อยลงมาก ประมาณ 30 คน

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

ปัจจุบัน ในระหว่างหลักสูตรนี้ นักเรียนได้แก้ไขปัญหาไปแล้วประมาณ 14 ประเด็น และสร้างฟีเจอร์ขนาดต่างๆ 10 ประการ และสำหรับฉันแล้วดูเหมือนว่านี่คือการแทนที่นักพัฒนาหนึ่งหรือสองคนอย่างเต็มรูปแบบ

เหนือสิ่งอื่นใด เราได้ออกประกาศนียบัตรและรายวิชาเรียน และได้รับประกาศนียบัตร 12 คน 6 คนในจำนวนนี้ป้องกันตัวเองที่ "5" แล้ว ผู้ที่เหลืออยู่ยังไม่มีความคุ้มครอง แต่ฉันคิดว่าทุกอย่างจะดีสำหรับพวกเขาเช่นกัน

แผนสำหรับอนาคต

เรามีแผนอะไรสำหรับอนาคต?

อย่างน้อยคำขอคุณลักษณะเหล่านั้นที่เราเคยได้ยินจากผู้ใช้และต้องการดำเนินการ นี้:

  • การตรวจสอบความถูกต้องของการติดตามไทม์ไลน์ในไฟล์สำรองข้อมูลคลัสเตอร์ HA คุณสามารถทำได้ด้วย WAL-G และผมคิดว่าเราจะมีนักเรียนที่จะเข้ามาดูแลเรื่องนี้
  • เรามีบุคคลที่รับผิดชอบในการถ่ายโอนข้อมูลสำรองและ WAL ระหว่างคลาวด์อยู่แล้ว
  • และเมื่อเร็วๆ นี้ เราได้เผยแพร่แนวคิดที่ว่าเราสามารถเพิ่มความเร็วให้กับ WAL-G ได้มากขึ้นไปอีกโดยการแตกไฟล์สำรองข้อมูลส่วนเพิ่มโดยไม่ต้องเขียนหน้าใหม่ และเพิ่มประสิทธิภาพไฟล์เก็บถาวรที่เราส่งไปที่นั่น

คุณสามารถแบ่งปันได้ที่นี่

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

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

WAL-G: คุณสมบัติใหม่และการขยายชุมชน จอร์จี ไรลอฟ

คำถาม

สวัสดี! ขอบคุณสำหรับรายงาน! คำถามเกี่ยวกับ WAL-G แต่ไม่เกี่ยวกับ Postgres WAL-G สำรองข้อมูล MySQL และเรียกใช้การสำรองข้อมูลเพิ่มเติม หากเราทำการติดตั้งสมัยใหม่บน CentOS และหากคุณทำการติดตั้ง MySQL MariDB จะถูกติดตั้ง ตั้งแต่เวอร์ชัน 10.3 ไม่รองรับการสำรองข้อมูลเพิ่มเติม รองรับการสำรองข้อมูล MariDB คุณเป็นยังไงบ้างกับเรื่องนี้?

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

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

การสำรองข้อมูลบนที่เก็บเทปหมายความว่าอย่างไร

ใช่

มี Andrei Borodin ที่สามารถตอบคำถามนี้ได้ดีกว่าฉัน

(อันเดรย์) ใช่ ขอบคุณสำหรับคำถาม! เรามีคำขอให้ถ่ายโอนข้อมูลสำรองไปยังเทปจากที่เก็บข้อมูลบนคลาวด์ และสำหรับสิ่งนี้ เลื่อย ถ่ายโอนระหว่างเมฆ เนื่องจากการถ่ายโอนจากคลาวด์สู่คลาวด์เป็นเวอร์ชันทั่วไปของการถ่ายโอนเทป นอกจากนี้เรายังมีสถาปัตยกรรมที่ขยายได้ในแง่ของพื้นที่จัดเก็บข้อมูล อย่างไรก็ตาม Storoges จำนวนมากเขียนโดยนักเรียน และถ้าคุณเขียน Storage สำหรับเทป แน่นอนว่ามันจะได้รับการสนับสนุน เราพร้อมที่จะพิจารณาคำขอดึง ที่นั่นคุณต้องเขียนไฟล์อ่านไฟล์ หากคุณทำสิ่งเหล่านี้ใน Go โดยปกติแล้วคุณจะได้โค้ดยาว 50 บรรทัด จากนั้นเทปจะได้รับการสนับสนุนใน WAL-G

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

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

นักเรียนไม่มีประสบการณ์มากนัก การทบทวนใช้เวลานานหรือไม่?

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

ขอบคุณสำหรับรายงาน! ก่อนหน้านี้ Andrey Borodin ระบุว่า ควรเรียก archive_command ใน WAL-G โดยตรง แต่ในกรณีของคลัสเตอร์คาร์ทริดจ์บางประเภท เราจำเป็นต้องมีตรรกะเพิ่มเติมเพื่อกำหนดโหนดที่จะส่งเพลา คุณจะแก้ไขปัญหานี้ด้วยตัวเองได้อย่างไร?

คุณมีปัญหาอะไรที่นี่? สมมติว่าคุณมีแบบจำลองซิงโครนัสที่คุณกำลังสำรองข้อมูลอยู่ หรืออะไร?

(Andrey) ความจริงก็คือ WAL-G นั้นมีจุดประสงค์เพื่อใช้โดยไม่มีเชลล์สคริปต์ หากมีบางอย่างขาดหายไป เรามาเพิ่มตรรกะที่ควรอยู่ภายใน WAL-G กันดีกว่า สำหรับแหล่งที่มาของการเก็บถาวร เราเชื่อว่าการเก็บถาวรควรมาจากต้นแบบปัจจุบันในคลัสเตอร์ การเก็บถาวรจากแบบจำลองถือเป็นความคิดที่ไม่ดี มีหลายสถานการณ์ที่เป็นไปได้ที่มีปัญหา โดยเฉพาะปัญหาในการเก็บถาวรไทม์ไลน์และข้อมูลเพิ่มเติมใดๆ ขอบคุณสำหรับคำถาม!

(คำชี้แจง: เรากำจัดเชลล์สคริปต์แล้ว ในฉบับนี้)

สวัสดีตอนเย็น! ขอบคุณสำหรับรายงาน! ฉันสนใจฟีเจอร์ติดตามผลที่คุณพูดถึง เรากำลังเผชิญกับสถานการณ์ที่มีแบบจำลองอยู่ข้างหลังและตามไม่ทัน และฉันไม่พบคำอธิบายของคุณสมบัตินี้ในเอกสาร WAL-G

Catchup ปรากฏอย่างแท้จริงในวันที่ 20 มกราคม 2020 เอกสารอาจต้องมีการปรับปรุงเพิ่มเติม เราเขียนเองแต่เขียนไม่เก่ง และบางทีเราควรเริ่มให้นักเรียนเขียนมัน

เปิดตัวแล้วใช่ไหม?

คำขอดึงนั้นตายแล้ว กล่าวคือ ฉันตรวจสอบแล้ว ฉันลองสิ่งนี้กับคลัสเตอร์ทดสอบ จนถึงตอนนี้เรายังไม่มีสถานการณ์ที่สามารถทดสอบสิ่งนี้ได้ในตัวอย่างการต่อสู้

คาดหวังได้เมื่อไหร่?

ฉันไม่รู้. รออีกเดือนเราจะตรวจสอบให้แน่ชัด

ที่มา: will.com

เพิ่มความคิดเห็น