Thứ Năm, 27 tháng 7, 2023

Load Balancing, High Availability và Failover với PostgreSQL

Khi hệ thống càng lớn, càng đòi hỏi cơ sở dữ liệu cần được duy trì ở trạng thái ổn định và sẵn sàng, dữ liệu phải đảm bảo được sao lưu một cách an toàn.

Một số yêu cầu để phục vụ tính ổn định đó:

  • Load Balancing
  • High Availability
  • Self Healing and Automated Reconstruction
  • Backups and recovery

Toàn bộ yêu cầu xử lý tập trung vào một database server sẽ khiến rủi ro rất cao, quá tải và phụ thuộc. Scale sẽ giảm áp lực cho database chính và tăng khả năng chịu tải của hệ thống. Mặc dù vậy, scale cũng đặt ra một số vấn đề như dữ liệu không đồng nhất giữa các database scale, khiến dữ liệu bị sai lệch giữa các lần truy cập, việc insert dữ liệu xảy ra đồng thời giữa các database server, khiến việc conflict dẫn đến gây lỗi và dữ liệu không đồng nhất. Ngoài ra, quản lý các database scale không hiệu quả sẽ lãng phí và khiến hiệu suất giảm thiểu.

Để giảm quyết vấn đề đó, mô hình master-slave được sử dụng với một database chính là master - đóng vai trò thực hiện xử lý câu lệnh insert, update, delete. Các database slave được đồng bộ dữ liệu từ master, slave đóng vai trò read-only, chỉ thực hiện được câu lệnh select ở slave.

Khi ấy, các câu lệnh truy vấn select sẽ được chia đều ra các slave + master, giảm áp lực đến database master. Bởi dữ liệu chỉ insert, update, delete vào một master duy nhất, nên việc insert đồng thời giữa các database không còn, đảm bảo không bị conflict data. Các slave sẽ kết nối đến master, chuyển WAL (Transaction log) từ node Master tới slave, sau đó slave phản ánh lại nội dung WAL vào dữ liệu.

 

PostDock giúp việc triển khai một cluster các database dễ dàng, với các thành phần chính là: 

  • PGPool
  • PostgreSQL 
  • Barman

Trong đó: 

PGPool có thể quản lý multiple PostgreSQL servers, sử dụng câu lệnh replication cho phép tạo các bản backup real-time trên các node vật ký khác.

Giữ kết nối đến database server, và tái sử dụng khi các kết nối có cùng thuộc tính

PGPool cũng chia tải các truy vấn với câu lênh Select được thực hiện ở cả master-slave và đảm bảo insert, delete, update ở master.

Ngoài ra, pgpool cũng giới hạn số lượng kết nối đồng thời, đảm bảo database không quá tải.

 

Barman giúp quản lý backup và recovery các PostgreSQL server, đảm bảo dữ liệu tồn tại khi một trong các node xảy ra sự cố.

PostDock cũng giúp database luôn sẵn sàng, khi master bị shutdown, một trong các slave sẽ được promote lên thành master và thực hiện đầy đủ chức năng như master cũ.

Trong đó, CLUSTER_NODE_NETWORK_NAME phải được đặt đúng theo tên node thực tế, và PARTNER_NODES phải được liệt kê đầy đủ các service sẽ tham gia vào cluster.

Pgpool sẽ kết nối đến các slave và master thông qua mạng nội bộ và port 5432 internal. Port 5440, 5441, 5442 để expose ra host, phục vụ mục đích kiểm tra.

Triển khai ứng dịch vụ trong chế độ swarm

Kiểm tra

Trong đó:

Một master database xử lý các câu lệnh insert, update, delete. 2 database pgslave1 và pgslave2 thuộc role standby.

Thực hiện câu lệnh create table kiểm tra master và slave

 

 

Kiểm tra việc chia tải câu lệnh select lên các database slave thông qua câu lệnh select địa chỉ host, mỗi lần select, trả về một địa chỉ host của các slave master, điều đó cho thấy, câu lệnh đã được chia đều ra các slave, nhằm giảm tải đến master chính

 

Kiểm tra khả năng tự đề cử slave lên thành master sau khi node master bị shutdown.

Sau đó vài giây, một slave sẽ được đề cử trở thành master

Việc truy vấn ngay sau đó diễn ra bình thường, không ảnh hưởng đến dữ liệu ban đầu

 

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Load Balancing, High Availability và Failover với PostgreSQL, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master