PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tổng quan về Amazon RDS &Cung cấp Aurora cho PostgreSQL

Các dịch vụ AWS PostgreSQL thuộc ô RDS, là dịch vụ DaaS của Amazon cung cấp cho tất cả các công cụ cơ sở dữ liệu đã biết.

Các dịch vụ cơ sở dữ liệu được quản lý mang lại những lợi thế nhất định hấp dẫn khách hàng đang tìm kiếm sự độc lập khỏi bảo trì cơ sở hạ tầng và các cấu hình có tính khả dụng cao. Như mọi khi, không có một kích thước phù hợp với tất cả các giải pháp. Các tùy chọn hiện có sẵn được đánh dấu bên dưới:

Aurora PostgreSQL

Trang Câu hỏi thường gặp của Amazon Aurora cung cấp các chi tiết quan trọng cần được xem xét trước khi tìm hiểu sản phẩm. Ví dụ:chúng ta biết rằng lớp lưu trữ được ảo hóa và nằm trên một hệ thống lưu trữ ảo hóa độc quyền được sao lưu bởi SSD.

Định giá

Về giá cả, cần lưu ý rằng Aurora PostgreSQL không có sẵn trong Bậc miễn phí của AWS.

Khả năng tương thích

Trang Câu hỏi thường gặp tương tự làm rõ rằng Amazon không tuyên bố 100% khả năng tương thích với PostgreSQL. Hầu hết (nhấn mạnh của tôi) về các ứng dụng sẽ ổn, ví dụ:hương vị AWS PostgreSQL tương thích với dây với PostgreSQL 9.6. Do đó, Wireshark PostgreSQL Dissector sẽ hoạt động tốt.

Hiệu suất

Hiệu suất cũng được liên kết với loại phiên bản, chẳng hạn như số lượng kết nối tối đa theo mặc định được định cấu hình dựa trên kích thước phiên bản.

Cũng quan trọng khi nói đến khả năng tương thích là kích thước trang đã được giữ ở 8KiB, là kích thước trang mặc định của PostgreSQL. Nói về các trang, bạn nên trích dẫn Câu hỏi thường gặp:“ Không giống như các công cụ cơ sở dữ liệu truyền thống, Amazon Aurora không bao giờ đẩy các trang cơ sở dữ liệu đã sửa đổi vào lớp lưu trữ, dẫn đến tiết kiệm tiêu thụ IO hơn nữa. ”Điều này có thể thực hiện được vì Amazon đã thay đổi cách quản lý bộ đệm ẩn của trang, cho phép nó vẫn ở trong bộ nhớ trong trường hợp cơ sở dữ liệu bị lỗi. Tính năng này cũng mang lại lợi ích cho việc khởi động lại cơ sở dữ liệu sau sự cố, cho phép quá trình khôi phục diễn ra nhanh hơn nhiều so với phương pháp truyền thống là phát lại nhật ký.

Theo Câu hỏi thường gặp được tham chiếu ở trên, Aurora PostgreSQL mang lại hiệu suất gấp ba lần PostgreSQL trên các hoạt động CHỌN và CẬP NHẬT. Theo Sách trắng về điểm chuẩn PostgreSQL của Amazon, các công cụ được sử dụng để đo lường hiệu suất là pgbench và sysbench. Đáng chú ý là hiệu suất phụ thuộc vào loại phiên bản, lựa chọn khu vực và hiệu suất mạng. Bạn thắc mắc tại sao INSERT không được đề cập? Đó là do tuân thủ ACID của PostgreSQL (chữ “C”) yêu cầu một bản ghi cập nhật được tạo bằng cách sử dụng thao tác xóa, sau đó là chèn.

Để tận dụng tối đa các cải tiến về hiệu suất, Amazon khuyến nghị rằng các ứng dụng được thiết kế để tương tác với cơ sở dữ liệu bằng cách sử dụng số lượng lớn các truy vấn và giao dịch đồng thời . Yếu tố quan trọng này thường bị bỏ qua dẫn đến việc thực hiện kém hiệu quả.

Giới hạn

Có một số hạn chế cần được xem xét khi lập kế hoạch di chuyển:

  • Không thể sửa đổi trang khổng lồ, tuy nhiên nó được bật theo mặc định:

    template1=> select aurora_version();
     aurora_version
    ----------------
     1.0.11
    (1 row)
    
    template1=> show huge_pages ;
     huge_pages
    ------------
     on
    (1 row)
  • pg_hba không thể được sử dụng vì nó yêu cầu khởi động lại máy chủ. Lưu ý thêm, đó phải là lỗi đánh máy trong tài liệu của Amazon, vì chỉ cần tải lại PostgreSQL. Thay vì dựa vào pg_hba, quản trị viên sẽ cần sử dụng Nhóm bảo mật AWS và PostgreSQL GRANT.
  • Mức độ chi tiết của PITR là 5 phút.
  • Tính năng sao chép giữa các vùng hiện không khả dụng cho PostgreSQL.
  • Kích thước tối đa của bảng là 64TiB
  • Lên đến 15 bản sao đã đọc

Khả năng mở rộng

Mở rộng quy mô lên và xuống phiên bản cơ sở dữ liệu hiện là một quy trình thủ công, có thể được thực hiện thông qua Bảng điều khiển AWS hoặc CLI, mặc dù quy mô tự động đang hoạt động, tuy nhiên, theo Câu hỏi thường gặp của Amazon Aurora, nó sẽ chỉ khả dụng cho MySQL.

Tài nguyên tính toán mở rộng nhật ký sự kiện

Để mở rộng quy mô theo chiều ngang, các ứng dụng phải tận dụng các API AWS SDK, chẳng hạn như để đạt được chuyển đổi dự phòng nhanh chóng.

Tính khả dụng cao

Chuyển sang tính khả dụng cao, trong trường hợp nút chính bị lỗi, Aurora PostgreSQL cung cấp điểm cuối cụm dưới dạng bản ghi DNS A, được cập nhật tự động nội bộ để trỏ đến bản sao được chọn để trở thành bản chính.

Bản sao lưu

Đáng nói là nếu cơ sở dữ liệu bị xóa, mọi ảnh chụp nhanh sao lưu thủ công sẽ được giữ lại, trong khi ảnh chụp nhanh tự động sẽ bị xóa.

Nhân rộng

Vì các bản sao chia sẻ cùng một bộ nhớ cơ bản như bản sao chính, về lý thuyết, độ trễ của bản sao là trong khoảng mili giây.

Amazon khuyến nghị đọc các bản sao để giảm thời gian chuyển đổi dự phòng. Với một bản sao đã đọc ở chế độ chờ, quá trình chuyển đổi dự phòng mất khoảng 30 giây, trong khi không có bản sao có thể lên đến 15 phút.

Tin tốt khác là tính năng sao chép lôgic cũng được hỗ trợ, như được hiển thị trên trang 22.

Mặc dù Câu hỏi thường gặp về Amazon Aurora không cung cấp chi tiết về sao chép như đối với MySQL, nhưng Các phương pháp hay nhất về Aurora PostgreSQL cung cấp một truy vấn hữu ích để xác minh trạng thái sao chép:

select server_id, session_id, highest_lsn_rcvd,
cur_replay_latency_in_usec, now(), last_update_timestamp from
aurora_replica_status();

Truy vấn trên mang lại:

-[ RECORD 1 ]--------------+-------------------------------------
server_id                  | testdb
session_id                 | 9e268c62-9392-11e8-87fc-a926fa8340fe
highest_lsn_rcvd           | 46640889
cur_replay_latency_in_usec | 8830
now                        | 2018-07-29 20:14:55.434701-07
last_update_timestamp      | 2018-07-29 20:14:54-07
-[ RECORD 2 ]--------------+-------------------------------------
server_id                  | testdb-us-east-1b
session_id                 | MASTER_SESSION_ID
highest_lsn_rcvd           |
cur_replay_latency_in_usec |
now                        | 2018-07-29 20:14:55.434701-07
last_update_timestamp      | 2018-07-29 20:14:55-07

Vì sao chép là một chủ đề quan trọng như vậy, nên cần thiết lập bài kiểm tra pgbench như được nêu trong sách trắng điểm chuẩn được tham chiếu ở trên:

[[email protected] ~]$ whoami
ec2-user

[[email protected] ~]$ tail -n 2 .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
export PATH=$PATH:/usr/local/pgsql/bin/

[[email protected] ~]$ which pgbench
/usr/local/pgsql/bin/pgbench
[[email protected] ~]$ pgbench --version
pgbench (PostgreSQL) 9.6.8

Gợi ý: Tránh nhập không cần thiết bằng cách tạo tệp pgpass và xuất các biến máy chủ, cơ sở dữ liệu và môi trường người dùng, ví dụ:

[[email protected] ~]#  tail -n 3 ~/.bashrc export
PGUSER=dbadmin
export PGHOST=c1.cluster-ctfirtyhadgr.us-east-1.rds.amazonaws.com
export PGDATABASE=template1

[[email protected] ~]# cat ~/.pgpass
*:*:*:dbadmin:password

Chạy lệnh khởi tạo dữ liệu:

[[email protected] ~]$ pgbench -i --fillfactor=90 --scale=10000 postgres

Trong khi khởi tạo dữ liệu đang chạy, hãy nắm bắt độ trễ sao chép bằng cách sử dụng SQL ở trên được gọi từ trong tập lệnh sau:

while : ; do
   psql -t -q \
      -c 'select server_id, session_id, highest_lsn_rcvd,
                 cur_replay_latency_in_usec, now(), last_update_timestamp
                 from aurora_replica_status();' postgres
   sleep 1
done

Lọc đầu ra nhật ký màn hình thông qua lệnh sau:

[[email protected] ~]# awk -F '|' '{print $4,$5,$6}' screenlog.2 | sort -k1,1 -n | tail
                     513116   2018-07-30 04:30:44.394729+00   2018-07-30 04:30:43+00
                     529294   2018-07-30 04:20:54.261741+00   2018-07-30 04:20:53+00
                     544139   2018-07-30 04:41:57.538566+00   2018-07-30 04:41:57+00
                    1001902   2018-07-30 04:42:54.80136+00   2018-07-30 04:42:53+00
                    2376951   2018-07-30 04:38:06.621681+00   2018-07-30 04:38:06+00
                    2376951   2018-07-30 04:38:07.672919+00   2018-07-30 04:38:07+00
                    5365719   2018-07-30 04:36:51.608983+00   2018-07-30 04:36:50+00
                    5365719   2018-07-30 04:36:52.912731+00   2018-07-30 04:36:51+00
                    6308586   2018-07-30 04:45:22.951966+00   2018-07-30 04:45:21+00
                    8210986   2018-07-30 04:46:14.575385+00   2018-07-30 04:46:13+00

Hóa ra quá trình sao chép bị trễ tới 8 giây!

Một lưu ý liên quan, chỉ số AWS CloudWatch AuroraReplicaLagMaximum không đồng ý với kết quả từ lệnh SQL ở trên. Tôi muốn biết lý do tại sao, vì vậy phản hồi được đánh giá cao.

Biểu đồ độ trễ bản sao tối đa của RDS CloudWatch

Bảo mật

  • Mã hóa có sẵn và nó phải được bật khi tạo cơ sở dữ liệu, vì nó không thể thay đổi sau đó.

Khắc phục sự cố

Phần ngắn này là một phần quan trọng Đảm bảo rằng PostgreSQL work_mem được điều chỉnh thích hợp để các hoạt động sắp xếp không ghi dữ liệu vào đĩa.

Thiết lập

Chỉ cần làm theo hướng dẫn thiết lập trong Bảng điều khiển AWS:

  1. Mở Amazon RDS bảng điều khiển quản lý.

    Bảng điều khiển quản lý RDS
  2. Chọn Amazon Aurora PostgreSQL ấn bản.

    Trình hướng dẫn Aurora PostgreSQL
  3. Chỉ định chi tiết DB và lưu ý các giới hạn mật khẩu Aurora PostgreSQL:

    Master Password must be at least eight characters long, as in
    "mypassword". Can be any printable ASCII character except "/", """, or "@".
    Chi tiết cơ sở dữ liệu thuật sĩ Aurora PostgreSQL
  4. Định cấu hình các tùy chọn cơ sở dữ liệu:

    • Kể từ khi viết bài này, chỉ có PostgreSQL 9.6 khả dụng. Sử dụng PostgreSQL trên Amazon RDS nếu bạn cần hỗ trợ cho các phiên bản mới hơn, bao gồm cả bản xem trước beta.
  5. Định cấu hình ưu tiên chuyển đổi dự phòng và chọn số lượng bản sao.

    Mô tả ảnh
  6. Đặt thời gian lưu giữ bản sao lưu (tối đa là 35 ngày).

    Giữ lại bản sao lưu trình hướng dẫn Aurora PostgreSQL
  7. Chọn lịch bảo trì. Có thể tự động nâng cấp phiên bản nhỏ, tuy nhiên, điều quan trọng là phải xác minh với bộ phận hỗ trợ AWS xem lịch vá của họ có thể được xử lý nhanh hay không trong trường hợp dự án PostgreSQL phát hành bất kỳ bản cập nhật khẩn cấp nào. Ví dụ:mất hơn hai tháng để AWS đẩy các bản cập nhật 2018-05-10.

    Lịch bảo trì trình hướng dẫn Aurora PostgreSQL
  8. Nếu cơ sở dữ liệu đã được tạo thành công, một liên kết đến hướng dẫn về cách kết nối với nó sẽ được hiển thị:

    Hoàn tất thiết lập trình hướng dẫn Aurora PostgreSQL

Kết nối với cơ sở dữ liệu

Xem lại hướng dẫn chi tiết về các tùy chọn kết nối khả dụng, dựa trên thiết lập cơ sở hạ tầng. Trong trường hợp đơn giản nhất, kết nối được thực hiện thông qua một phiên bản EC2 công khai.

Lưu ý:Máy khách phải tương thích với PostgreSQL 9.6.3 trở lên.

[[email protected] ~]# psql -U dbadmin -h c1.cluster-ctfirtyhadgr.us-east-1.rds.amazonaws.com template1
Password for user dbadmin:
psql (9.6.8, server 9.6.3)
SSL connection (protocol: TLSv1.2, cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

Giám sát

Amazon cung cấp các số liệu khác nhau để theo dõi cơ sở dữ liệu, ví dụ bên dưới hiển thị các số liệu phiên bản:

Số liệu phiên bản RDSTải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng quy mô PostgreSQLTải xuống báo cáo chính thức

RDS cho PostgreSQL

Đây là một sản phẩm cho phép chi tiết hơn về các lựa chọn cấu hình. Ví dụ:trái ngược với Aurora sử dụng hệ thống lưu trữ độc quyền, RDS cung cấp bộ nhớ có thể định cấu hình bằng cách sử dụng khối lượng EBS có thể là SSD Mục đích Chung (GP2) hoặc IOPS được cấp phép hoặc từ tính (không được khuyến nghị).

Để hỗ trợ các cài đặt lớn, yêu cầu tùy chỉnh không có sẵn trong dịch vụ Aurora, Amazon gần đây đã đưa ra các đề xuất về Phương pháp hay nhất, chỉ khả dụng cho RDS.

Tính khả dụng cao phải được định cấu hình theo cách thủ công (hoặc tự động bằng bất kỳ công cụ AWS nào đã biết) và bạn nên thiết lập triển khai Multi-AZ.

Bản sao được thực hiện bằng cách sử dụng bản sao gốc PostgreSQL.

Có một số giới hạn cho các phiên bản PostgreSQL DB cần được xem xét.

Với những lưu ý ở trên, đây là hướng dẫn để thiết lập môi trường RDS PostgreSQL Multi-AZ:

  1. Từ Bảng điều khiển quản lý RDS khởi động trình hướng dẫn

    Trình hướng dẫn RDS PostgreSQL
  2. Chọn giữa thiết lập sản xuất và phát triển.

    Lựa chọn trường hợp sử dụng cơ sở dữ liệu thuật sĩ RDS PostgreSQL
  3. Nhập chi tiết về cụm cơ sở dữ liệu mới của bạn.

    Chi tiết về cơ sở dữ liệu thuật sĩ RDS PostgreSQL Cài đặt cơ sở dữ liệu thuật sĩ RDS PostgreSQL
  4. Trên trang tiếp theo, thiết lập mạng, bảo mật và lịch bảo trì:

    Cài đặt nâng cao trình hướng dẫn RDS PostgreSQL Bảo mật và bảo trì thuật sĩ RDS PostgreSQL

Kết luận

Dịch vụ Amazon RDS cho PostgreSQL bao gồm RDS PostgreSQL và Aurora PostgreSQL, cả hai đều được quản lý các dịch vụ DaaS. Được đóng gói với nhiều tính năng và bộ nhớ phụ trợ vững chắc, chúng có một số hạn chế so với thiết lập truyền thống, tuy nhiên, với việc lập kế hoạch cẩn thận, các dịch vụ này có thể cung cấp tỷ lệ chi phí-chức năng cân bằng. Amazon RDS cho PostgreSQL được nhắm mục tiêu đến những người dùng yêu cầu nhiều tùy chọn hơn để định cấu hình môi trường của họ và thường đắt hơn. Đa số người dùng sẽ được hưởng lợi khi bắt đầu với Aurora PostgreSQL và làm việc theo cách của họ với các cấu hình phức tạp hơn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Việc gọi hàm hoặc thủ tục đã lưu trữ sẽ không chèn và vẫn tiếp tục các thay đổi

  2. trình tự thoát cho gạch nối (-) trong PostgreSQL là gì

  3. Nâng cấp tự động gần như bằng không thời gian ngừng hoạt động của các cụm PostgreSQL trong đám mây (Phần II)

  4. Sử dụng PgBouncer Connection Pooler cho PostgreSQL với ClusterControl 1.8.2

  5. Khắc phục “LỖI:mỗi truy vấn NGOẠI LỆ phải có cùng số cột” trong PostgreSQL