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

Thay đổi trên Bảng lớn trong RDS Giải pháp cho bảng đầy đủ Lỗi

Thay đổi trên Big Table trong RDS Giải pháp cho bảng đầy đủ Lỗi. Hãy lấy một ví dụ, Bảng có kích thước rất lớn (~> 100GB đến 600GB). Thực hiện thay đổi trên các bảng lớn như vậy là tác vụ tốn nhiều bộ nhớ và CPU. Khi bạn cố gắng thay đổi truy vấn trên một trong các bảng, nó đã đưa ra “ ERROR 1114 (HY000):bảng đầy ”Lỗi…

Tại sao sự cố này lại xảy ra mặc dù dung lượng bộ nhớ Amazon Aurora sẽ tự động tăng lên đến 64TB.?

Trước tiên, chúng ta sẽ hiểu về bộ nhớ trong RDS Aurora. Có 2 loại lưu trữ trong Aurora. Cửa hàng phiên bản là bộ nhớ cục bộ nơi các đối tượng tạm thời được lưu trữ và bộ nhớ chính cho dữ liệu. Do đó, khi bạn chạy ALTER trên một bảng, nó sẽ tạo ra một bảng tạm thời và RDS aurora sẽ sử dụng bộ lưu trữ cá thể để lưu trữ bảng tạm thời. Đối với phiên bản của bạn là phiên bản db.r3.large, nó có 1 × 32 GB bộ nhớ cục bộ, vì vậy nếu các đối tượng tạm thời của bạn trên phiên bản này lớn hơn kích thước này, bạn sẽ gặp lỗi "table full". Ngoài ra, giới hạn bộ nhớ cục bộ khác với tổng số dung lượng bộ nhớ có sẵn cho phiên bản Aurora của bạn và dựa trên việc sử dụng cơ sở dữ liệu của bạn, dung lượng lưu trữ Amazon Aurora của bạn sẽ tự động tăng lên, lên đến 64 TB, với gia số 10GB.

Thay thế trên bàn lớn trong RDS giải pháp cho toàn bảng Lỗi

  1. Để khắc phục sự cố, bạn có thể mở rộng phiên bản để có thêm bộ nhớ cục bộ để chạy ALTER của bạn, thay đổi bảng sau đó giảm tỷ lệ loại phiên bản. Điều này dẫn đến có một số thời gian ngừng hoạt động trong khi loại phiên bản nâng cấp / hạ cấp.
  2. Bạn cũng có thể sử dụng lệnh:“pt-online-schema-change”, nếu bạn sử dụng lệnh này, nó làm cho bảng gốc vẫn có sẵn để sử dụng mà không có thời gian chết hoặc không có khóa bàn.
Nếu bạn không thể có bất kỳ thời gian chết nào trong hệ thống, thì hãy sử dụng lệnh pt-online-schema-change thay vì mở rộng phiên bản. Tuy nhiên, tài liệu về pt-online-schema-change nói, chúng ta nên sao lưu trước khi chạy lệnh này. Do đó, để tránh bất kỳ khóa bảng và lỗi nào trong quá trình thay đổi bảng sản xuất, bạn có thể kiểm tra lệnh này trên bản sao chính xác của cơ sở dữ liệu ứng dụng, với cùng loại phiên bản RDS. Ngoài ra, hãy thử thêm một khối lượng ghi lớn lên bảng để bắt chước lưu lượng truy cập . Để đạt được điều này, hãy tạo một tập lệnh bash liên tục chèn một hàng mới vào bảng. Để có một bản sao chính xác nhanh chóng của DB hiện tại của bạn, hãy chụp nhanh RDS DB và khôi phục nó từ ảnh chụp nhanh để thử nghiệm. Trước khi chạy lệnh này, chúng ta cần đặt log_bin_trust_ Chức năng_creators thành 1 trong nhóm tham số RDS DB. Sau khi thực hiện xong quy trình ALTER, bạn có thể thay đổi lại biến thành “0”.
Kết quả:
Nếu bạn đang thay đổi bảng bằng pt -online-schema-change lệnh trên một bảng có kích thước 35-40GB thì có thể mất gần 30 giờ.

Tại sao sử dụng lệnh pt-online-schema-change và tại sao nên bật “log_bin_trust_osystem_creators“ trong nhóm tham số DB? ?

pt-online-schema-change không khóa bàn. Lệnh này tạo các trình kích hoạt trên bảng gốc. Nhưng đối với điều này, nó cần các đặc quyền của người dùng siêu cấp. khi bạn đang sử dụng thủ tục lưu trữ, bạn sẽ gặp lỗi:
# 1419 - Bạn không có đặc quyền SUPER và ghi nhật ký nhị phân được bật (bạn * có thể * muốn sử dụng biến log_bin_trust_ Chức năng_creators ít an toàn hơn.
Lý do: Lỗi này xảy ra trên các trường hợp RDS khi bạn cố gắng sử dụng "Thủ tục đã lưu trữ". Bạn sẽ sớm nhận ra rằng việc cấp siêu đặc quyền cho người dùng sẽ không hoạt động. Vì vậy, cách duy nhất để làm cho mọi thứ hoạt động là đặt log_bin_trust_osystem_creators thành 1. Theo tài liệu Percona: Điểm mấu chốt là việc tạo trình kích hoạt trên máy chủ có bật nhật ký nhị phân yêu cầu người dùng có SUPER đặc quyền (điều này là không thể trong Amazon RDS). Thông báo lỗi chỉ định cách giải quyết. Chúng ta cần bật biến trong nhóm tham số DB “log_bin_trust_ Chức năng_creators”. Kích hoạt nó giống như nói với máy chủ: “Tôi tin tưởng các chức năng và trình kích hoạt của người dùng thông thường và chúng sẽ không gây ra sự cố, vì vậy hãy cho phép người dùng của tôi tạo chúng.” Vì chức năng cơ sở dữ liệu sẽ không thay đổi, nên vấn đề tin tưởng người dùng của bạn sẽ là vấn đề. log_bin_trust_ Chức năng_creators là một biến toàn cục có thể được thay đổi động. Cố gắng tìm thêm chi tiết về “Super_priv”, Khi bạn kiểm tra quyền của người dùng trong bảng người dùng của cơ sở dữ liệu MySQL. bạn có thể thấy rằng Super_priv không được đặt cho bất kỳ ai ngoại trừ người dùng rdsadmin.
MySQL> select User,Super_priv from user;
+-----------+------------+
| User | Super_priv |
+-----------+------------+
| rdsadmin | Y |
| root | N |
| dbuser | N |
+-----------+------------+
3 rows in set (0.00 sec)

Ở đây “root” là người dùng Chính và “dbuser” là người dùng DB, những người dùng này do chúng tôi tạo ra và người dùng “rdsadmin” được AWS tạo tự động mà chúng tôi không có quyền truy cập vào người dùng này. Người dùng rdsadmin MySQL được Amazon sử dụng cho công việc quản lý và bảo trì.

Đây là phần cuối của hướng dẫn, cách Thay đổi trên Big Table trong RDS Giải pháp cho toàn bộ Lỗi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để Thực thi Thủ tục Đã Lưu trữ trong Nhà phát triển SQL?

  2. Cách di chuyển cơ sở dữ liệu vào máy chủ người bán lại của bạn

  3. Hekaton với một bước ngoặt:TVP trong bộ nhớ - Phần 1

  4. Tìm hiểu cách sử dụng câu lệnh CASE trong SQL

  5. Phân vùng ngân sách