WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Tôi khuyên bạn nên đọc bản ghi của báo cáo đầu năm 2020 của Georgy Rylov “WAL-G: cơ hội mới và mở rộng cộng đồng”

Những người bảo trì nguồn mở phải đối mặt với nhiều thách thức khi họ phát triển. Làm cách nào để viết ngày càng nhiều tính năng cần thiết, khắc phục ngày càng nhiều sự cố và quản lý để xem ngày càng nhiều yêu cầu kéo? Sử dụng WAL-G (công cụ sao lưu cho PostgreSQL) làm ví dụ, tôi sẽ cho bạn biết cách chúng tôi giải quyết những vấn đề này bằng cách triển khai một khóa học về phát triển Nguồn mở tại trường đại học, những gì chúng tôi đã đạt được và nơi chúng tôi sẽ chuyển tiếp tiếp theo.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Xin chào mọi người một lần nữa! Tôi là nhà phát triển Yandex đến từ Yekaterinburg. Và hôm nay tôi sẽ nói về WAL-G.

Tiêu đề của báo cáo không nói rằng đó là vấn đề về sao lưu. Có ai biết WAL-G là gì không? Hay mọi người đều biết? Hãy giơ tay nếu bạn không biết. Chết tiệt, bạn đã xem bản báo cáo và không biết nó nói về cái gì.

Hãy để tôi kể cho bạn nghe điều gì sẽ xảy ra ngày hôm nay. Điều đó xảy ra là nhóm của chúng tôi đã thực hiện sao lưu được một thời gian. Và đây là một báo cáo khác trong loạt bài mà chúng tôi nói về cách chúng tôi lưu trữ dữ liệu một cách an toàn, bảo mật, thuận tiện và hiệu quả.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Trong loạt bài trước đã có nhiều báo cáo của Andrei Borodin và Vladimir Leskov. Có rất nhiều người trong chúng tôi. Và chúng ta đã nói về WAL-G trong nhiều năm.

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

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

Báo cáo này sẽ khác một chút so với các báo cáo khác ở chỗ nó thiên về phần kỹ thuật hơn, nhưng ở đây tôi sẽ nói về cách chúng tôi gặp phải các vấn đề liên quan đến sự phát triển của cộng đồng. Và cách chúng tôi nảy ra một ý tưởng nhỏ giúp chúng tôi giải quyết vấn đề này.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Vài năm trước, WAL-G là một dự án khá nhỏ mà chúng tôi nhận được từ Citus Data. Và chúng tôi chỉ lấy nó. Và nó được phát triển bởi một người.

Và chỉ có WAL-G là không có:

  • Sao lưu từ một bản sao.
  • Không có bản sao lưu gia tăng.
  • Không có bản sao lưu WAL-Delta.
  • Và vẫn còn thiếu rất nhiều thứ.

Trong vài năm qua, WAL-G đã phát triển rất nhiều.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Và đến năm 2020, tất cả những điều trên đã xuất hiện. Và điều này đã được thêm vào những gì chúng ta hiện có:

  • Hơn 1 sao trên GitHub.
  • 150 cái nĩa.
  • Khoảng 15 PR mở.
  • Và nhiều cộng tác viên khác.
  • Và các vấn đề mở mọi lúc. Và điều này bất chấp thực tế là chúng tôi thực sự đến đó hàng ngày và làm điều gì đó về nó.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Và chúng tôi đi đến kết luận rằng dự án này đòi hỏi chúng tôi phải chú ý nhiều hơn, ngay cả khi bản thân chúng tôi không cần triển khai bất kỳ điều gì cho dịch vụ Cơ sở dữ liệu được quản lý của mình trong Yandex.

Và đâu đó vào mùa thu năm 2018, một ý tưởng đã nảy ra trong đầu chúng tôi. Thông thường nhóm có một số cách để phát triển một số tính năng hoặc sửa lỗi nếu bạn không đủ tay. Ví dụ: bạn có thể thuê một nhà phát triển khác và trả tiền cho anh ta. Hoặc bạn có thể nhận một thực tập sinh trong một thời gian và trả lương cho anh ta. Nhưng vẫn còn một nhóm người khá lớn, một số người trong số họ đã thực sự biết cách viết mã. Bạn không phải lúc nào cũng biết chất lượng của mã.

Chúng tôi đã suy nghĩ về điều đó và quyết định cố gắng thu hút sinh viên. Nhưng học sinh sẽ không tham gia vào mọi việc cùng chúng tôi. Họ sẽ chỉ làm một phần công việc. Và chẳng hạn, họ sẽ viết bài kiểm tra, sửa lỗi, triển khai các tính năng không ảnh hưởng đến chức năng chính. Chức năng chính là tạo bản sao lưu và khôi phục bản sao lưu. Nếu chúng tôi mắc lỗi trong việc tạo bản sao lưu, chúng tôi sẽ bị mất dữ liệu. Và tất nhiên không ai muốn điều này. Mọi người đều muốn mọi thứ phải thật an toàn. Vì vậy, tất nhiên, chúng tôi không muốn để mã mà chúng tôi ít tin tưởng hơn mã của mình. Nghĩa là, bất kỳ mã không quan trọng nào đều là những gì chúng tôi muốn nhận được từ các nhân viên bổ sung của mình.

PR sinh viên được chấp nhận trong những điều kiện nào?

  • Họ được yêu cầu phải kiểm tra mã của mình. Mọi thứ sẽ diễn ra trong CI.
  • Và chúng ta cũng trải qua 2 lượt đánh giá. Một của Andrey Borodin và một của tôi.
  • Ngoài ra, để kiểm tra xem điều này có phá vỡ bất kỳ điều gì trong dịch vụ của chúng tôi hay không, tôi tải riêng tập hợp với cam kết này lên. Và chúng tôi kiểm tra các bài kiểm tra từ đầu đến cuối và không có gì thất bại.

Khóa học đặc biệt về Nguồn Mở

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Một chút về lý do tại sao điều này là cần thiết và tại sao điều này, đối với tôi, có vẻ là một ý tưởng hay.

Đối với chúng tôi, lợi nhuận là hiển nhiên:

  • Chúng tôi có thêm bàn tay.
  • Và chúng tôi đang tìm kiếm những ứng viên cho đội gồm những sinh viên thông minh viết mã thông minh.

Lợi ích cho sinh viên là gì?

Chúng có thể ít rõ ràng hơn, bởi vì ở mức tối thiểu, sinh viên không nhận được tiền cho mã họ viết mà chỉ nhận được điểm cho hồ sơ học sinh của họ.

Tôi đã hỏi họ về điều này. Và theo lời của họ:

  • Trải nghiệm của người đóng góp trong Nguồn mở.
  • Nhận một dòng trong CV của bạn.
  • Hãy chứng tỏ bản thân và vượt qua cuộc phỏng vấn trên Yandex.
  • Trở thành thành viên GSoC.
  • +1 khóa học đặc biệt dành cho những ai muốn viết code.

Tôi sẽ không nói về cách cấu trúc khóa học. Tôi sẽ chỉ nói rằng WAL-G là dự án chính. Chúng tôi cũng đưa các dự án như Odyssey, PostgreSQL và ClickHouse vào khóa học này.

Và họ không chỉ đưa ra các bài toán trong khóa học này mà còn đưa ra các bằng cấp và bài tập.

Còn lợi ích cho người dùng thì sao?

Bây giờ hãy chuyển sang phần mà bạn quan tâm nhất. Điều này có ích gì cho bạn? Vấn đề là các sinh viên đã sửa rất nhiều lỗi. Và chúng tôi đã thực hiện các tính năng yêu cầu mà bạn yêu cầu chúng tôi thực hiện.

Và hãy để tôi kể cho bạn nghe về những điều bạn mong muốn từ lâu và đã thực hiện được.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Hỗ trợ không gian bảng. Các không gian bảng trong WAL-G có lẽ đã được mong đợi kể từ khi WAL-G phát hành, bởi vì WAL-G là công cụ kế thừa cho một công cụ sao lưu khác WAL-E, nơi hỗ trợ sao lưu cơ sở dữ liệu với các không gian bảng.

Hãy để tôi nhắc ngắn gọn cho bạn biết nó là gì và tại sao nó lại cần thiết. Thông thường, tất cả dữ liệu Postgres của bạn chiếm một thư mục trên hệ thống tệp, được gọi là cơ sở. Và thư mục này đã chứa tất cả các file và thư mục con mà Postgres yêu cầu.

Không gian bảng là các thư mục chứa dữ liệu Postgres, nhưng chúng không nằm ngoài thư mục cơ sở. Trang trình bày cho thấy các không gian bảng nằm bên ngoài thư mục cơ sở.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Điều này trông như thế nào đối với chính Postgres? Có một thư mục con pg_tblspc riêng biệt trong thư mục cơ sở. Và nó chứa các liên kết tượng trưng đến các thư mục thực sự chứa dữ liệu Postgres bên ngoài thư mục cơ sở.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Khi bạn sử dụng tất cả những thứ này, thì đối với bạn, các lệnh này có thể trông giống như thế này. Nghĩa là, bạn tạo một bảng trong một số vùng bảng được chỉ định và xem nó hiện ở đâu. Đây là hai dòng cuối cùng, hai lệnh cuối cùng được gọi. Và ở đó rõ ràng là có một số cách. Nhưng trên thực tế, đây không phải là cách thực sự. Đây là đường dẫn tiền tố từ thư mục cơ sở tới vùng bảng. Và từ đó nó được khớp với một liên kết tượng trưng dẫn đến dữ liệu thực của bạn.

Chúng tôi không sử dụng tất cả những thứ này trong nhóm của mình nhưng nó đã được sử dụng bởi nhiều người dùng WAL-E khác, những người đã viết thư cho chúng tôi rằng họ muốn chuyển sang WAL-G, nhưng điều này đã ngăn cản họ. Điều này hiện đã được hỗ trợ.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Một tính năng khác mà khóa học đặc biệt mang lại cho chúng tôi là tính năng bắt kịp. Những người có lẽ đã làm việc với Oracle nhiều hơn Postgres đều biết về việc bắt kịp.

Nói ngắn gọn về nó là gì. Cấu trúc liên kết cụm trong dịch vụ của chúng tôi thường có thể trông giống như thế này. Chúng tôi có một bậc thầy. Có một bản sao truyền phát nhật ký ghi trước từ nó. Và bản sao sẽ cho master biết LSN hiện đang ở đâu. Và ở đâu đó song song với điều này, nhật ký có thể được lưu trữ. Và ngoài việc lưu trữ nhật ký, các bản sao lưu còn được gửi lên đám mây. Và bản sao lưu delta được gửi.

Điều gì có thể là vấn đề? Khi bạn có một cơ sở dữ liệu khá lớn, có thể bản sao của bạn bắt đầu tụt hậu rất xa so với bản gốc. Và cô ấy tụt lại phía sau rất xa đến nỗi cô ấy không bao giờ có thể bắt kịp anh ấy. Vấn đề này thường cần phải được giải quyết bằng cách nào đó.

Và cách dễ nhất là xóa bản sao và tải lại lên, vì nó sẽ không bao giờ bắt kịp và vấn đề cần được giải quyết. Nhưng đây là một khoảng thời gian khá dài, bởi vì việc khôi phục toàn bộ bản sao lưu cơ sở dữ liệu 10 TB là một khoảng thời gian rất dài. Và chúng tôi muốn thực hiện tất cả những điều này càng nhanh càng tốt nếu những vấn đề như vậy phát sinh. Và đó chính xác là mục đích của việc bắt kịp.

Catchup cho phép bạn sử dụng các bản sao lưu delta, được lưu trữ trên đám mây theo cách này. Bạn cho biết LSN nào mà bản sao trễ hiện đang bật và chỉ định nó trong lệnh bắt kịp để tạo bản sao lưu delta giữa LSN đó và LSN mà cụm của bạn hiện đang nằm trên đó. Và sau đó bạn khôi phục bản sao lưu này về bản sao bị tụt lại phía sau.

Các căn cứ khác

Các sinh viên cũng mang đến cho chúng tôi rất nhiều tính năng cùng một lúc. Vì tại Yandex, chúng tôi không chỉ cung cấp Postgres mà còn có MySQL, MongoDB, Redis, ClickHouse, nên tại một thời điểm nào đó, chúng tôi cần có khả năng tạo bản sao lưu với tính năng khôi phục tại thời điểm cho MySQL và để có cơ hội tải lên chúng lên đám mây.

Và chúng tôi muốn thực hiện điều đó theo cách tương tự như những gì WAL-G làm. Và chúng tôi quyết định thử nghiệm và xem mọi thứ sẽ trông như thế nào.

Và lúc đầu, không chia sẻ logic này theo bất kỳ cách nào, họ đã viết mã trong fork. Họ thấy rằng chúng tôi có một số loại mô hình hoạt động được và nó có thể bay. Sau đó, chúng tôi nghĩ rằng cộng đồng chính của chúng tôi là những người theo chủ nghĩa hậu đăng, họ sử dụng WAL-G. Và do đó chúng ta cần phải tách biệt những phần này bằng cách nào đó. Nghĩa là, khi chúng tôi chỉnh sửa mã cho Postgres, chúng tôi không phá vỡ MySQL; khi chúng tôi chỉnh sửa MySQL, chúng tôi không phá vỡ Postgres.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Ý tưởng đầu tiên về cách tách biệt điều này là ý tưởng sử dụng cách tiếp cận tương tự được sử dụng trong các phần mở rộng PostgreSQL. Và trên thực tế, để tạo bản sao lưu MySQL, bạn phải cài đặt một số loại thư viện động.

Nhưng ở đây sự bất đối xứng của phương pháp này có thể thấy ngay. Khi bạn sao lưu Postgres, bạn đặt một bản sao lưu bình thường cho Postgres vào đó và mọi thứ đều ổn. Và đối với MySQL, hóa ra bạn cài đặt bản sao lưu cho Postgres và cũng cài đặt thư viện động cho MySQL cho nó. Nghe có vẻ lạ lùng. Chúng tôi cũng nghĩ như vậy và quyết định rằng đây không phải là giải pháp chúng tôi cần.

Các bản dựng khác nhau cho Postgres, MySQL, MongoDB, Redis

Nhưng đối với chúng tôi, điều này dường như đã cho phép chúng tôi đi đến quyết định đúng đắn - phân bổ các tổ hợp khác nhau cho các căn cứ khác nhau. Điều này giúp có thể tách biệt logic gắn với các bản sao lưu của nhiều cơ sở dữ liệu khác nhau sẽ truy cập API chung mà WAL-G triển khai.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Đây là phần chúng tôi tự viết - trước khi giao bài cho học sinh. Nghĩa là, đây chính xác là phần mà họ có thể làm sai điều gì đó, vì vậy chúng tôi quyết định rằng tốt hơn hết chúng ta nên làm điều gì đó như thế này và mọi thứ sẽ ổn thôi.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Sau đó chúng tôi đã đưa ra vấn đề. Chúng ngay lập tức bị tháo dỡ. Học sinh được yêu cầu hỗ trợ ba căn cứ.

Đây là MySQL mà chúng tôi đã sao lưu bằng WAL-G theo cách này trong hơn một năm.

Và bây giờ MongoDB đang tiến tới quá trình sản xuất, nơi họ đang hoàn thiện nó bằng một tệp. Trên thực tế, chúng tôi đã viết khuôn khổ cho tất cả những điều này. Sau đó, các sinh viên đã viết một số điều có thể thực hiện được. Và sau đó chúng tôi đưa chúng đến trạng thái mà chúng tôi có thể chấp nhận trong sản xuất.

Những vấn đề này có vẻ như sinh viên không cần phải viết các công cụ sao lưu hoàn chỉnh cho từng cơ sở dữ liệu này. Chúng tôi không gặp phải vấn đề như vậy. Vấn đề của chúng tôi là chúng tôi muốn khôi phục tại thời điểm và chúng tôi muốn sao lưu lên đám mây. Và họ yêu cầu sinh viên viết một số đoạn mã để giải quyết vấn đề này. Các sinh viên đã sử dụng các công cụ sao lưu hiện có, bằng cách nào đó thực hiện các bản sao lưu và sau đó dán tất cả lại với nhau bằng WAL-G, công cụ này sẽ chuyển tiếp tất cả lên đám mây. Và họ cũng đã bổ sung tính năng phục hồi tại thời điểm này.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Các sinh viên đã mang theo những gì khác? Họ đã hỗ trợ mã hóa Libsodium cho WAL-G.

Chúng tôi cũng có chính sách lưu trữ dự phòng. Bây giờ các bản sao lưu có thể được đánh dấu là vĩnh viễn. Và bằng cách nào đó, dịch vụ của bạn sẽ thuận tiện hơn khi tự động hóa quá trình lưu trữ chúng.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Kết quả của thí nghiệm này là gì?

Ban đầu có hơn 100 người đăng ký khóa học. Lúc đầu tôi không nói rằng trường đại học ở Yekaterinburg là Đại học Liên bang Ural. Chúng tôi đã công bố mọi thứ ở đó. 100 người đăng ký. Trên thực tế, số người bắt đầu làm điều gì đó ít hơn nhiều, khoảng 30 người.

Thậm chí còn ít người hoàn thành khóa học hơn vì cần phải viết bài kiểm tra cho các mã đã tồn tại. Và cũng sửa một số lỗi hoặc tạo một số tính năng. Và một số học viên vẫn đóng cửa khóa học.

Hiện tại, trong khóa học này, các học viên đã sửa được khoảng 14 vấn đề và làm được 10 tính năng với nhiều kích cỡ khác nhau. Và đối với tôi, có vẻ như đây là sự thay thế chính thức của một hoặc hai nhà phát triển.

Trong số những thứ khác, chúng tôi đã cấp bằng tốt nghiệp và các khóa học. Và 12 người đã nhận được bằng tốt nghiệp. 6 người trong số họ đã tự bảo vệ mình ở mức “5”. Những người ở lại vẫn chưa được bảo vệ, nhưng tôi nghĩ rằng mọi thứ cũng sẽ ổn với họ.

Kế hoạch cho tương lai

Chúng ta có kế hoạch gì cho tương lai?

Ít nhất là những yêu cầu về tính năng mà chúng tôi đã nghe được từ người dùng và muốn thực hiện. Cái này:

  • Giám sát tính chính xác của việc theo dõi dòng thời gian trong kho lưu trữ sao lưu cụm HA. Bạn có thể làm điều này với WAL-G. Và tôi nghĩ chúng ta sẽ có những sinh viên đảm nhận vấn đề này.
  • Chúng tôi đã có người chịu trách nhiệm chuyển các bản sao lưu và WAL giữa các đám mây.
  • Và gần đây chúng tôi đã xuất bản một ý tưởng rằng chúng tôi có thể tăng tốc WAL-G hơn nữa bằng cách giải nén các bản sao lưu gia tăng mà không cần viết lại trang và tối ưu hóa các kho lưu trữ mà chúng tôi gửi đến đó.

Bạn có thể chia sẻ chúng ở đây

Báo cáo này dùng để làm gì? Hơn nữa, hiện nay ngoài 4 người hỗ trợ dự án này, chúng tôi còn có thêm những người hỗ trợ, trong đó khá nhiều. Đặc biệt nếu bạn viết thư cho họ bằng tin nhắn cá nhân. Và nếu bạn sao lưu dữ liệu của mình và thực hiện bằng WAL-G hoặc muốn chuyển sang WAL-G, thì chúng tôi có thể dễ dàng đáp ứng mong muốn của bạn.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

Đây là mã QR và một liên kết. Bạn có thể đi qua chúng và viết tất cả mong muốn của bạn. Ví dụ: chúng tôi không sửa một số lỗi. Hoặc bạn thực sự muốn một số tính năng nhưng vì lý do nào đó mà nó chưa có trong bất kỳ bản sao lưu nào, kể cả của chúng tôi. Hãy chắc chắn để viết về điều này.

WAL-G: tính năng mới và mở rộng cộng đồng. Georgy Rylov

câu hỏi

Xin chào! Cảm ơn vì đã báo cáo! Câu hỏi về WAL-G, nhưng không phải về Postgres. WAL-G sao lưu MySQL và gọi một bản sao lưu bổ sung. Nếu chúng tôi thực hiện cài đặt hiện đại trên CentOS và nếu bạn cài đặt MySQL, MariDB sẽ được cài đặt. Từ phiên bản 10.3, bản sao lưu bổ sung không được hỗ trợ, bản sao lưu MariDB được hỗ trợ. Bạn đang làm gì với điều này?

Hiện tại chúng tôi chưa thử sao lưu MariDB. Chúng tôi đã có yêu cầu hỗ trợ FoundationDB, nhưng nói chung, nếu có yêu cầu như vậy thì chúng tôi có thể tìm những người sẽ thực hiện việc đó. Nó không dài và khó như tôi nghĩ.

Chào buổi chiều Cảm ơn vì đã báo cáo! Câu hỏi về các tính năng mới tiềm năng. Bạn đã sẵn sàng làm cho WAL-G hoạt động với băng để có thể sao lưu vào băng chưa?

Sao lưu trên băng lưu trữ rõ ràng có nghĩa là gì?

Vâng.

Có Andrei Borodin, người có thể trả lời câu hỏi này tốt hơn tôi.

(Andrey) Vâng, cảm ơn vì câu hỏi! Chúng tôi đã có yêu cầu chuyển bản sao lưu sang băng từ bộ lưu trữ đám mây. Và vì điều này cưa chuyển giữa các đám mây. Bởi vì truyền từ đám mây sang đám mây là phiên bản tổng quát của truyền băng từ. Ngoài ra, chúng tôi có kiến ​​trúc có thể mở rộng về Kho lưu trữ. Nhân tiện, nhiều Storoges được viết bởi sinh viên. Và nếu bạn viết Storage cho băng thì tất nhiên nó sẽ được hỗ trợ. Chúng tôi sẵn sàng xem xét các yêu cầu kéo. Ở đó bạn cần viết một tập tin, đọc một tập tin. Nếu bạn làm những việc này trong Go, bạn thường kết thúc với 50 dòng mã. Và sau đó băng sẽ được hỗ trợ trong WAL-G.

Cảm ơn vì đã báo cáo! Quá trình phát triển thú vị. Sao lưu là một phần chức năng quan trọng cần được kiểm tra kỹ lưỡng. Khi bạn triển khai chức năng cho cơ sở dữ liệu mới, học sinh có viết bài kiểm tra hay bạn tự viết bài kiểm tra rồi đưa phần triển khai cho học sinh?

Học sinh cũng viết bài kiểm tra. Nhưng sinh viên viết nhiều hơn cho các tính năng như cơ sở dữ liệu mới. Họ đã viết bài kiểm tra tích hợp. Và họ đã viết bài kiểm tra đơn vị. Nếu quá trình tích hợp thành công, tức là tại thời điểm này, đây là tập lệnh mà bạn thực thi theo cách thủ công hoặc bạn có cron thực hiện việc đó chẳng hạn. Tức là kịch bản ở đó rất rõ ràng.

Sinh viên chưa có nhiều kinh nghiệm. Việc xem xét có mất nhiều thời gian không?

Có, việc đánh giá mất khá nhiều thời gian. Đó là, thông thường, khi một số người đi cùng đến và nói rằng tôi đã làm điều này, tôi đã làm điều đó, thì bạn cần phải suy nghĩ và dành khoảng nửa ngày để tìm hiểu xem họ viết gì ở đó. Bởi vì mã phải được đọc cẩn thận. Họ không có một cuộc phỏng vấn. Chúng tôi không biết rõ về họ nên phải mất một khoảng thời gian đáng kể.

Cảm ơn vì đã báo cáo! Trước đây, Andrey Borodin đã tuyên bố rằng archive_command trong WAL-G nên được gọi trực tiếp. Nhưng trong trường hợp của một số loại hộp mực cụm, chúng tôi cần logic bổ sung để xác định nút gửi trục từ đó. Bạn tự giải quyết vấn đề này bằng cách nào?

Vấn đề của bạn ở đây là gì? Giả sử bạn có một bản sao đồng bộ mà bạn đang tạo bản sao lưu? Hay cái gì?

(Andrey) Thực tế là WAL-G thực sự được thiết kế để sử dụng mà không cần các tập lệnh shell. Nếu thiếu thứ gì đó, hãy thêm logic lẽ ra phải có trong WAL-G. Về việc lưu trữ nên đến từ đâu, chúng tôi tin rằng việc lưu trữ phải đến từ chủ hiện tại trong cụm. Lưu trữ từ một bản sao là một ý tưởng tồi. Có nhiều tình huống có thể xảy ra với các vấn đề. Đặc biệt là các vấn đề về thời gian lưu trữ và bất kỳ thông tin bổ sung nào. Cảm ơn vì câu hỏi!

(Làm rõ: Chúng tôi đã loại bỏ các tập lệnh shell trong vấn đề này)

Buổi tối vui vẻ! Cảm ơn vì đã báo cáo! Tôi quan tâm đến tính năng bắt kịp mà bạn đã nói đến. Chúng tôi phải đối mặt với tình huống có bản sao ở phía sau và không thể bắt kịp. Và tôi không tìm thấy mô tả về tính năng này trong tài liệu WAL-G.

Catchup xuất hiện theo đúng nghĩa đen vào ngày 20 tháng 2020 năm XNUMX. Các tài liệu có thể cần thêm một số công việc. Chúng tôi tự viết nó và chúng tôi viết nó không hay lắm. Và có lẽ chúng ta nên bắt đầu yêu cầu học sinh viết nó.

Nó đã được phát hành chưa?

Yêu cầu kéo đã chết, tức là tôi đã kiểm tra nó. Tôi đã thử điều này trên một cụm thử nghiệm. Cho đến nay chúng tôi chưa có tình huống nào có thể kiểm tra điều này trong một ví dụ chiến đấu.

Khi nào nên mong đợi?

Tôi không biết. Đợi một tháng, chúng tôi sẽ kiểm tra chắc chắn.

Nguồn: www.habr.com

Thêm một lời nhận xét