Max_allowed_packet trong MySQL ở đâu?

Ghi chú. Biến hệ thống, slave_max_allowed_packet chỉ xác định kích thước gói lớn nhất mà nô lệ có thể đọc từ chủ. Do đó, sửa đổi giá trị này không giải quyết được lỗi

Tham khảo bảng sau để biết danh sách các cập nhật chính được thực hiện cho trang này

Ngày phát hànhMô tả thay đổiSep-05-2022NAMang lại trang này trong thư mục Tài liệu nguồn tương ứng. Sep-09-20211. 71Tài liệu mới

Để kiểm tra giá trị hiện tại của max_allowed_packet là gì, lệnh show biến được sử dụng. Nó được đưa ra như sau -

mysql> show variables like 'max_allowed_packet';

Sau đây là đầu ra

+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.04 sec)

Giá trị của max_allowed_packet có thể được thay đổi trong 'my. ini' ở phía máy khách. Truy vấn cho điều đó được đưa ra như sau -

Nếu giá trị không được áp dụng và cũng để nó không được đặt lại sau khi khởi động lại máy chủ MySQL, hãy thêm vào tệp cấu hình

[mysqld]
max_allowed_packet=128M

Và khởi động lại máy chủ MySQL

service mysql restart

Máy khách MySQL có giá trị riêng, có thể thay đổi giá trị này, chẳng hạn như khi khởi động máy khách MySQL

Có một số cách để thay đổi giá trị max_allowed_packet. Nó chủ yếu được đặt thành giá trị mặc định, là 16MB

Để thay đổi nó, hãy làm theo điều này
$> mysql --max_allowed_packet=32M

Điều này sẽ đặt giá trị của máy khách thành 32 MB. Bạn có thể thay đổi giá trị theo yêu cầu của bạn

Thay đổi giá trị máy chủ cũng rất quan trọng, đặc biệt khi bạn đang xử lý các truy vấn lớn. Thông thường, giá trị mặc định của máy chủ là 16 MB
Hãy nhân đôi giá trị của máy chủ, như chúng ta đã làm với chương trình của máy khách
$> mysqld --max_allowed_packet=32M

Cuối cùng, bạn cũng có thể đặt giá trị bằng tệp cấu hình. Đây là cách nó được thực hiện
[mysqld]
max_allowed_packet=32M

Điều này sẽ thay đổi kích thước máy chủ thành 32 MB, do đó cho phép máy chủ chuyển các truy vấn lớn hơn mà không gặp bất kỳ lỗi nào

  1. DZone
  2. Kỹ thuật dữ liệu
  3. cơ sở dữ liệu
  4. max_allowed_packet và lỗi nhật ký nhị phân trong MySQL

max_allowed_packet và lỗi nhật ký nhị phân trong MySQL

qua

Pyotr Zaitsev

·

Tháng 4. 13, 15 · Phỏng vấn

Giống

Nhận xét

Tiết kiệm

tiếng riu ríu

Chia sẻ

13. 02K Lượt xem

Tham gia cộng đồng DZone và có được trải nghiệm thành viên đầy đủ

Tham gia miễn phí

[Bài viết này được viết bởi Miguel Angel Nieto]

The combination of  variable and replication in MySQL is a common source of headaches. In a nutshell, max_allowed_packet is the maximum size of a MySQL network protocol packet that the server can create or read. It has a default value of 1MB (<= 5.6.5) or 4MB (>= 5.6.6) and a maximum size of 1GB. This adds some constraints in our replication environment:

  • Máy chủ chính không nên ghi các sự kiện vào nhật ký nhị phân lớn hơn max_allowed_packet
  • Tất cả các nô lệ trong chuỗi sao chép phải có cùng max_allowed_packet với máy chủ chính

Đôi khi, ngay cả khi tuân theo hai quy tắc cơ bản đó, chúng ta vẫn có thể gặp vấn đề

Ví dụ: có những tình huống (còn gọi là lỗi) trong đó thiết bị chính ghi nhiều dữ liệu hơn giới hạn max_allowed_packet khiến các thiết bị phụ ngừng hoạt động. Để sửa lỗi này, Oracle đã tạo một biến mới có tên là slave_max_allowed_packet. Biến cấu hình mới này có sẵn từ 5. 1. 64, 5. 5. 26 và 5. 6. 6 ghi đè giá trị max_allowed_packet cho chuỗi nô lệ. Do đó, bất kể giá trị max_allowed_packet là bao nhiêu, các luồng của nô lệ sẽ có giới hạn 1GB, giá trị mặc định của Slave_max_allowed_packet. Thủ thuật hay hoạt động như mong đợi

Đôi khi, ngay cả với cách giải quyết đó, chúng tôi có thể gặp lỗi max_allowed_packet trong các máy chủ nô lệ. Điều đó có nghĩa là có một gói lớn hơn 1GB, điều không nên xảy ra trong tình huống bình thường. Tại sao? . Hãy xem ví dụ sau

Slave ngừng hoạt động với thông báo sau

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'

Phần quan trọng là "có lỗi nghiêm trọng 1236 từ chủ". Master không thể đọc sự kiện mà nó đã ghi vào nhật ký nhị phân vài giây trước. Để kiểm tra vấn đề chúng ta có thể

  • Sử dụng mysqlbinlog để đọc nhật ký nhị phân từ vị trí không thành công với –start-position

Đây là một ví dụ được lấy từ Diễn đàn Percona của chúng tôi

#121003 5:22:26 server id 1 end_log_pos 398528
# Unknown event
# at 398528
#960218 6:48:44 server id 1813111337 end_log_pos 1835008
# Unknown event
ERROR: Error in Log_event::read_log_event(): 'Event too big', data_len: 1953066613, event_type: 8
DELIMITER ;
# End of log file

Kiểm tra kích thước của sự kiện, 1953066613 byte. Hoặc thông báo “Sự kiện không xác định”. Một cái gì đó rõ ràng là sai ở đó. Một điều thông thường khác cần kiểm tra là id máy chủ đôi khi không tương ứng với giá trị thực. Trong ví dụ này, người đã đăng sự kiện nhật ký nhị phân đã xác nhận rằng id máy chủ đã sai

  • Kiểm tra nhật ký lỗi của chủ

[ERROR] Error in Log_event::read_log_event(): 'Event too big', data_len: 1953066613, event_type: 8

Một lần nữa, sự kiện lớn hơn dự kiến. Không có cách nào mà chủ và nô lệ có thể đọc/ghi nó, vì vậy giải pháp là bỏ qua sự kiện đó trong nô lệ và xoay nhật ký trên chủ. Sau đó, sử dụng pt-table-checksum để kiểm tra tính nhất quán của dữ liệu

mysql 5. 6 bao gồm tổng kiểm tra sao chép để tránh các sự cố với hỏng nhật ký. Bạn có thể đọc thêm về điều này trong bài đăng trên blog của Stephan

Phần kết luận

Lỗi trên máy chủ nô lệ về max_allowed_packet có thể do nhiều nguyên nhân khác nhau. Mặc dù lỗi nhật ký nhị phân không phổ biến, nhưng đây là điều đáng để kiểm tra khi bạn cạn kiệt ý tưởng

Làm cách nào để tìm max_allowed_packet trong MySQL?

Đặt max_allowed_packet .
Mở "của tôi. ini" trong thư mục cài đặt máy chủ MySQL
Tìm kiếm thông số "max_allowed_packet". Nếu file chưa có thì thêm tham số vào file
Đặt giá trị khi cần. .
Khởi động lại máy chủ MySQL

max_allowed_packet trong MySQL là gì?

Max_allowed_packet là kích thước tối đa của giao thức mạng MySQL mà máy chủ có thể đọc hoặc tạo . Tham số đi kèm với các giá trị mặc định, tối thiểu và tối đa mà bạn có thể thay đổi theo yêu cầu của mình.

Làm cách nào để đặt max_allowed_packet trong RDS?

Đi tới RDS, chọn Nhóm thông số và tạo nhóm mới/chỉnh sửa nhóm hiện có. Tìm kiếm max_allowed_packet và nhập giá trị mới cho nó. Đính kèm nhóm tham số này vào phiên bản RDS .

Làm cách nào để kiểm tra các biến toàn cục trong MySQL?

HIỂN THỊ BIẾN chấp nhận công cụ sửa đổi phạm vi biến GLOBAL hoặc SESSION tùy chọn. Với công cụ sửa đổi TOÀN CẦU, câu lệnh hiển thị các giá trị biến hệ thống toàn cầu. Đây là các giá trị được sử dụng để khởi tạo các biến phiên tương ứng cho các kết nối mới tới MySQL. Nếu một biến không có giá trị toàn cầu, không có giá trị nào được hiển thị.