1. Giới thiệu WAL
Một trong số bộ phận quan trọng nhất vô PostgreSQL cơ là Write-ahead Log (WAL). WAL đáp ứng cho tới mục tiêu khôi phục lại database Khi PostgreSQL bị shutdown đột ngột (máy công ty bị rơi rụng năng lượng điện, process postmaster bị kill,…)
Bạn đang xem: wal là gì
Trong nội dung bài viết này, tôi tiếp tục lý giải cho tới chúng ta chân thành và ý nghĩa của WAL tệp tin.
Tôi từng thao tác với thật nhiều hệ cai quản trị Trung tâm tài liệu mối quan hệ (RDBMS) và nhận ra đa số RDBMS nào là cũng đều có định nghĩa tương tự với WAL vô PostgreSQL.
WAL (trong PostgreSQL) hoặc transaction log (trong SQL Server) hoặc Redo log (trong Oracle) đều là những tệp tin tàng trữ vấn đề mô miêu tả sự thay cho đổi vô database.
2. Ví dụ về sự việc quan trọng của WAL
1. Ví dụ
Tôi có một ví dụ rõ ràng thế này: Khi các bạn update 1 độ quý hiếm A trở nên độ quý hiếm B, thì độ quý hiếm mới nhất (B) không được ghi trực tiếp xuống ổ đĩa đâu.
Nguyên nhân là bởi: Trong 1 khối hệ thống có khá nhiều thay cho thay đổi, nếu như từng phen thay cho thay đổi đang được ghi xuống đĩa luôn luôn như vậy, thì ko khối hệ thống nào là đầy đủ tài năng xử lý được.
Cách thực hiện đảm bảo chất lượng rộng lớn là lúc với thay cho thay đổi thì chỉ thay cho thay đổi độ quý hiếm A trở nên độ quý hiếm B phía trên Memory thôi, tuy nhiên ko ghi xuống đĩa tức thì.
Gom rất nhiều lần thay cho thay đổi lại rồi mới nhất ghi xuống đĩa. Như vậy tiếp tục hạn chế số phen request và dung tích ghi xuống đĩa rộng lớn.
Tuy nhiên, nó lại phát sinh 1 yếu tố khác: Giá trị B tuy nhiên tôi đang được thay cho thay đổi, tuy nhiên nó mới nhất phía trên Memory, vậy nếu như đúng vào lúc cơ bị mất điện thì sao?
Các các bạn đều đã biết Memory là bộ lưu trữ lưu trữ tạm thời thời, nếu như rơi rụng năng lượng điện sever thì tài liệu bên trên này cũng sẽ ảnh hưởng xóa không còn, vậy độ quý hiếm B của tôi cũng trở nên mất!
Và cơ là nơi cần thiết sự nhập cuộc của WAL.
2. Cơ chế thực hiện
Cơ chế thời điểm hiện tại tiếp tục như sau: Khi các bạn thay cho thay đổi A trở nên B, B tiếp tục thay cho thế A nằm ở vị trí bên trên Memory, song PostgreSQL sẽ tạo nên rời khỏi 1 mẩu vấn đề tế bào miêu tả về thay cho thay đổi cơ, và nó sẽ tiến hành lưu vô 1 tệp tin phía trên đĩa, đó là WAL.
Dữ liệu A hoặc B hoàn toàn có thể rộng lớn, tuy nhiên vấn đề tế bào miêu tả về thay cho thay đổi tiếp tục đặc biệt bé bỏng, nên lựa lựa chọn lưu xuống tệp tin WAL tiếp tục thời gian nhanh rất nhiều đối với lựa lựa chọn các bạn lưu tài liệu rất đầy đủ (như A hoặc B).
Vậy, Khi sever bị rơi rụng năng lượng điện thì tài liệu bên trên Memory tiếp tục bị xóa sạch. Khi database phát động quay về, tài liệu ở bên dưới đĩa vẫn chính là dữ liệu cũ (dữ liệu A). Tuy nhiên, nó sẽ bị gọi những vấn đề thay cho thay đổi ở vô WAL tệp tin và phân phát hiện nay thấy A đang được thay cho thay đổi trở nên B. Như vậy nó sẽ bị biết rất cần được triển khai recover nhằm khôi phục lại tài liệu B.
3. Đặc điểm của WAL file
Như tôi đang được rằng phía trên, WAL tệp tin là một trong những tệp tin nằm bên trên đĩa cứng. Quý khách hàng hoàn toàn có thể nhìn thấy nó vô folder pg_wal (từ phiên bản PostgreSQL 10 trở cút, trước này đó là folder pg_xlog). Thư mục này vô data directory (hay folder lưu tài liệu của PostgreSQL)
Vị trí của folder pg_wal
Kích thước đem quyết định của WAL tệp tin là 16MB. Bạn hoàn toàn hoàn toàn có thể điều chỉnh độ cao thấp của WAL tệp tin trải qua thông số max_wal_size.
Kiểm tra độ cao thấp của WAL tệp tin lúc này vì chưng câu lệnh:
show max_wal_size; max_wal_size -------------- 16M (1 row)
Sau Khi dùng không còn 16MB, khối hệ thống tiếp tục sinh rời khỏi 1 WAL tệp tin mới nhất, và cứ kế tiếp như vậy. Số lượng những WAL file hoàn toàn có thể được kiểm soát cũng vì chưng thông số wal_keep_segments.
show wal_keep_segments; wal_keep_segments ------------------- 128 (1 row)
Các WAL file
Mỗi Khi với thay cho thay đổi bên trên database, một phiên bản ghi vấn đề tế bào miêu tả thay cho thay đổi sẽ tiến hành sinh rời khỏi và ghi nối vô WAL tệp tin lúc này. Mỗi phiên bản ghi này sẽ tiến hành ghi cùng theo với số trật tự của chính nó hoặc còn gọi Log Sequence Number (LSN). Số LSN cũng sẽ tiến hành ghi lại vô control tệp tin mọi khi checkpoint xẩy ra.
Xem thêm: moodle là gì
Khi cần dùng WAL tệp tin nhằm phục sinh, khối hệ thống tiếp tục đối chiếu LSN lúc này (VD: LSN_n) với LSN được lưu vô control tệp tin (VD: LSN_1). Nếu LSN_n > LSN_1 thì nó hiểu rằng rằng khối hệ thống tiếp tục rất cần được recover bằng phương pháp lấy những phiên bản ghi vô WAL tệp tin kể từ LSN_1 cho tới LSN_n.
4. Tham số thông số kỹ thuật wal_level
Tham số wal_level quy quyết định bao nhiêu vấn đề sẽ tiến hành ghi lại vô WAL. Nó hoàn toàn có thể nhận những giá bán trị: minimum, replica, logical, bố trí cường độ cụ thể tăng dần dần.
[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] Ở cường độ minimum, WAL chỉ chứa chấp vấn đề ít nhất đầy đủ nhằm phục sinh database cluster vô tình huống bị crash đột ngột thôi.[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] Ở cường độ replica, WAL bao hàm những vấn đề ở tại mức chừng minimum, kèm cặp Từ đó là những vấn đề đầy đủ nhằm tương hỗ cho những tác dụng như archive log mode, streaming replication.[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] Cuối nằm trong, ở tại mức chừng logical, WAL bao hàm những vấn đề ở tại mức chừng replica, kèm cặp Từ đó là những vấn đề nhằm tương hỗ tác dụng logical replication.
Mặc quyết định, wal_level = replica.
postgres=# show wal_level; wal_level ----------- replica (1 row)
WAL level càng tốt thì sẽ càng tương hỗ nhiều tác dụng rộng lớn, song, khoáng sản dùng cũng nhiều hơn thế nữa. Chúng tớ tiếp tục rất cần được suy nghĩ điều này lúc đặt độ quý hiếm cho tới thông số wal_level.
5. Các hiệu quả của WAL
[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] Đầu tiên, như tế bào miêu tả phía trên nội dung bài viết, WAL tệp tin nhằm phục sinh khối hệ thống Khi có vấn đề đột ngột.[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] WAL tương hỗ tác dụng backup online và point-in-time recovery của PostgreSQL[wp-svg-icons icon=”arrow-right-2″ wrap=”i”] WAL tương hỗ cho những tác dụng đồng hóa tài liệu (Log shipping, Replication)
Hi vọng sau nội dung bài viết này, chúng ta đang được hiểu rộng lớn về WAL, chân thành và ý nghĩa và ứng dụng của chính nó vô PostgreSQL. Hẹn hội ngộ chúng ta ở những nội dung bài viết sau.
Nguồn: https://huba.org.vn/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để vấn đề ở phía trên, để khách hàng nào quan hoài về lịch học cũng như chương trình học có thể theo đuổi dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 2: ADMIN 1 + DATA GUARD
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời các bạn coi bên trên đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy nhập cuộc group “Kho tư liệu kỹ năng và kiến thức database” nhằm nằm trong học hỏi và chia sẻ và share nhé.
Xem thêm: bereal là gì
Bình luận