Tối ưu cấu hình my.cnf – Tối ưu MariaDB hoặc MySQL VPS

File my.cnf là gì?

my.cnf là một tệp cấu hình cho hệ thống quản lý cơ sở dữ liệu MariaDB hoặc MySQL. Tệp này chứa các cấu hình để tối ưu hóa hiệu suất của cơ sở dữ liệu, bao gồm các thông số như kích thước bộ đệm, số lượng kết nối tối đa, kích thước tệp nhật ký và nhiều hơn nữa. Bằng cách chỉnh sửa tệp my.cnf, bạn có thể tùy chỉnh cấu hình MariaDB hoặc MySQL để phù hợp với nhu cầu và tài nguyên của hệ thống VPS của bạn.

Tuy nhiên, việc chỉnh sửa tệp my.cnf cần phải được thực hiện cẩn thận và hiểu rõ các thông số để tránh gây ra các vấn đề về hiệu suất hoặc bảo mật.

Tối ưu my.cnf

Tối ưu hóa tệp cấu hình MySQL (my.cnf) cho VPS của bạn với 2 lõi và 8GB RAM bao gồm việc điều chỉnh nhiều cài đặt khác nhau để đảm bảo MySQL hoạt động hiệu quả và sử dụng tài nguyên máy chủ của bạn một cách hiệu quả. Dưới đây là các bước để tối ưu hóa cấu hình MySQL my.cnf của bạn:

Sao lưu my.cnf hiện có của bạn: Trước khi thực hiện bất kỳ thay đổi nào, điều cần thiết là sao lưu tệp my.cnf hiện tại của bạn. Bạn có thể làm điều này bằng cách chạy lệnh sau:

cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak

Điều này sẽ tạo bản sao lưu của tệp cấu hình hiện có của bạn.

Mở my.cnf để chỉnh sửa: Bạn có thể sử dụng trình soạn thảo văn bản để mở tệp cấu hình MySQL để chỉnh sửa. Thông thường, tệp my.cnf nằm trong thư mục /etc/mysql/. Bạn có thể sử dụng một lệnh như:

sudo nano /etc/mysql/my.cnf

Các thông số quan trọng trong my.cnf

Dưới đây là một số cài đặt được đề xuất để điều chỉnh trong tệp my.cnf của bạn:

InnoDB Buffer Pool Size: Vùng đệm là khu vực quan trọng đối với hiệu suất của công cụ lưu trữ InnoDB. Phân bổ một phần đáng kể RAM của bạn cho nó. Đối với máy chủ RAM 8GB, bạn có thể đặt ở mức khoảng 4GB trở lên, tùy thuộc vào khối lượng công việc của bạn.

Được đặt ở khoảng 75% RAM có sẵn.

Đây là cài đặt InnoDB quan trọng nhất. Nó chỉ định kích thước của bộ nhớ đệm mà InnoDB sử dụng để lưu trữ dữ liệu và chỉ mục của các bảng của nó. Bạn đặt giá trị này càng lớn thì càng cần ít I/O đĩa để truy cập dữ liệu trong bảng

Điều chỉnh dòng sau cho phù hợp:

innodb_buffer_pool_size = 4G

Query Cache: Bộ đệm truy vấn có thể cải thiện hiệu suất cho các truy vấn được thực hiện thường xuyên. Tuy nhiên, nó ít liên quan hơn trong MySQL 5.7 và các phiên bản mới hơn. Bạn có thể vô hiệu hóa nó:

query_cache_type = 0
query_cache_size = 0

Key Buffer Size: Nếu bạn đang sử dụng bảng MyISAM, bạn có thể phân bổ một số bộ nhớ cho bộ đệm chính:

key_buffer_size = 256M

Max Connections: Đặt số lượng kết nối đồng thời tối đa dựa trên lưu lượng truy cập dự kiến ​​của bạn. Hãy cẩn thận không đặt nó quá cao, vì nó có thể dẫn đến cạn kiệt tài nguyên.

max_connections = 100

Thread and Cache Settings: Đây là kích thước bộ đệm luồng. Nó lưu trữ các luồng đã được sử dụng cho kết nối khách hàng, giúp tăng tốc độ xử lý kết nối. Nên đặt giá trị này là 16 – 32. Ví dụ:

thread_cache_size = 16
table_open_cache = 256

Lưu và đóng tệp: Sau khi thực hiện những thay đổi này, hãy lưu tệp my.cnf và thoát khỏi trình soạn thảo văn bản.

Khởi động lại MySQL: Để áp dụng các thay đổi, hãy khởi động lại dịch vụ MySQL:

sudo service mysql restart

Nếu bạn dùng MariaDB có thể chạy lệnh

sudo service mariadb restart

Ở đây mình tóm tắt lại 2 cấu hình VPS thường hay sử dụng nhất bạn có thể copy nhanh.

1. Máy chủ VPS với 2 core và 4GB RAM (MariaDB với InnoDB)

innodb_buffer_pool_size = 2G
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
key_buffer_size = 256M
query_cache_type = 0
query_cache_size = 0
max_connections = 100
thread_cache_size = 8
table_open_cache = 512

2. Máy chủ VPS với 4 core và 8GB RAM (MariaDB với InnoDB)

innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
key_buffer_size = 512M
query_cache_type = 0
query_cache_size = 0
max_connections = 200
thread_cache_size = 16
table_open_cache = 1024

Các tùy chọn cấu hình này tương tự như cho MySQL, nhưng được điều chỉnh đặc biệt cho MariaDB với lưu trữ InnoDB. Hãy lưu ý rằng tùy chỉnh cụ thể của bạn có thể thay đổi dựa trên các yêu cầu cụ thể của ứng dụng và khối lượng công việc của bạn. Đảm bảo theo dõi hiệu suất của MariaDB và điều chỉnh cấu hình khi cần thiết để đảm bảo hiệu suất tốt nhất cho máy chủ của bạn.

Giám sát hiệu suất

Sau khi thực hiện những điều chỉnh này, hãy theo dõi hiệu suất máy chủ của bạn và hiệu suất của MySQL bằng các công cụ như top, htophoặc các công cụ giám sát hiệu suất tích hợp của MySQL.

Tinh chỉnh: Tùy thuộc vào khối lượng công việc cụ thể và yêu cầu ứng dụng, bạn có thể cần tinh chỉnh thêm cấu hình MySQL. Giám sát hiệu suất truy vấn và việc sử dụng tài nguyên máy chủ để thực hiện các điều chỉnh bổ sung nếu cần.

Kết luận

Lưu ý rằng tối ưu hóa MySQL là một quá trình liên tục. Khi khối lượng công việc và dữ liệu của bạn tăng lên, bạn có thể cần phải xem lại và điều chỉnh các cài đặt này định kỳ để đảm bảo của mình.

Ngoài ra bạn có thể sử dụng các công cụ như MySQL Tuner, MySQL Tuning-Primer.sh Percona Monitoring hoặc Management (PMM) để phân tích và tối ưu hóa cấu hình MariaDB và InnoDB thêm nữa.

Có 1 theo dõi và tự động tinh chỉnh file my.cnf mà bạn có thể tìm hiểu đó là công cụ Releem nếu bạn có VPS có thể tại tài khoản tại Releem sau đó làm theo 1 số bước rất đơn giản để Releem tự động theo dõi và tinh chỉnh my.cnf

Nếu bạn thấy bài viết có ích hãy sao chép link và chia sẻ bài viết
daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan