Cài đặt và tối ưu MySQL trên Ubuntu 20.04

Bài viết này sẽ hướng dẫn bạn cách cài đặt và tối ưu MySQL trên Ubuntu 20.04. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.php.

Giới thiệu

MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (gọi tắt là RDBMS) hoạt động theo mô hình client-server. Với RDBMS là viết tắt của Relational Database Management System. MySQL thường được tích hợp với Apache, PHP. MySQL quản lý dữ liệu thông qua các cơ sở dữ liệu. Mỗi cơ sở dữ liệu có thể có nhiều bảng quan hệ chứa dữ liệu. MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL.

Hướng dẫn cài đặt MySQL trên Ubuntu 20.04

Bước 1: Cài đặt MySQL

Theo mặc định, kho ứng dụng của Ubuntu 20.04 sẽ có sẵn MySQL Server 8. Sau khi đăng nhập vào máy chủ của bạn, hãy cập nhật bộ đệm apt và chạy lệnh cài đặt MySQL:

root@vina:~# sudo apt update
root@vina:~# sudo apt install mysql-server

Sau khi cài đặt, dịch vụ MySQL sẽ tự động khởi động. Để kiểm tra trạng thái dịch vụ hãy sử dụng lệnh sau:

root@vina:~# sudo systemctl status mysql
cài đặt MySQL và tối ưu MySQL trên Ubuntu 20.04
cài đặt MySQL và tối ưu MySQL trên Ubuntu 20.04

Bước 2: Bảo mật MySQL

Đối với một số bản cài đặt mới của MySQL, các bạn sẽ chạy tập lệnh bảo mật đi kèm mysql_secure_installation.Tập lệnh này thay đổi một số tùy chọn mặc định kém an toàn.

root@vina:~# sudo mysql_secure_installation

Tuỳ chọn đầu tiên, bạn sẽ được yêu cầu thiết lập cấu hình VALIDATE PASSWORD COMPONENT, được sử dụng để kiểm tra độ mạnh của mật khẩu người dùng MySQL. Nhấn ENTER nếu bạn không muốn thiết lập VALIDATE PASSWORD COMPONENT.

cài đặt MySQL và tối ưu MySQL trên Ubuntu 20.04
cài đặt MySQL và tối ưu MySQL trên Ubuntu 20.04

Ở tuỳ chọn tiếp theo, bạn sẽ được yêu cầu đặt mật khẩu cho người dùng root MySQL. Sau đó, tập lệnh cũng sẽ yêu cầu bạn xóa người dùng ẩn danh, hạn chế quyền truy cập của người dùng root vào máy cục bộ localhost và xóa cơ sở dữ liệu test. Bạn nên trả lời câu Y cho tất cả các câu hỏi.

Please set the password for root here.

New password: Mật khẩu root MySQL

Re-enter new password: Nhập lại mật khẩu root MySQL

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Hướng dẫn tối ưu MySQL trên Ubuntu 20.04

Các thông số có thể tăng hiệu suất hoạt động của MySQL:

BiếnÝ nghĩa
innodb_buffer_pool_sizeĐây là tham số quan trọng khi sử dụng InnoDB. InnoDB luôn duy trì một vùng lưu trữ được gọi là buffer pool để cache lại dữ liệu và chỉ mục bên trong memory. Kích thước của buffer pool được tính bằng byte. Giá trị này càng cao thì khả năng chứa bộ nhớ đệm cho dữ liệu trong quá trình truy xuất dữ liệu database càng nhiều (truy xuất trên RAM thay vì trên ổ cứng với những giá trị được truy cập thường xuyên) Khi thiết lập thông số này, các bạn nên đặt giá trị từ khoảng 50%-70% lượng ram của server vật lý và không cần phải đặt lớn hơn tổng kích thước cơ sở dữ liệu.
innodb_log_file_sizeKích thước của file log được tính bằng byte. Việc tùy chỉnh kích thước lớn phù hợp sẽ tăng hiệu suất xử lý. Nó còn phụ thuộc vào số lượng công việc hoạt động và phiên bản của máy chủ.
innodb_flush_log_at_trx_commitCho biết điều gì xảy ra với log file. Với giá trị là 1 chúng ta có thiết lập an toàn nhất, bởi vì log được chuyển sang đĩa sau mỗi lần giao dịch. Với giá trị 0 hoặc 2 nó ít an toàn hơn, nhưng hiệu suất cao hơn.
innodb_flush_methodĐịnh nghĩa phương thức để làm sạch dữ liệu cho các file dữ liệu và log của InnoDB. Có nhiều phương thức nhưng người ta thường dùng O_DIRECT cho GNU/Linux versions, FreeBSD, Solaris.
innodb_file_per_tableMặc định giá trị này đã tắt. Nếu tắt thì InnoDB sẽ tạo bảng trong khoảng không gian chia sẽ dùng chung của các bảng. Nếu bật cờ này (=ON) thì khi tạo mỗi bảng sẽ sở hữu một file có đuôi là .idb để lưu trữ dữ liệu và chỉ mục
innodb_stats_on_metadataĐặt chế độ này thành “OFF” sẽ tránh được việc cập nhật số liệu thống kê InnoDB không cần thiết và có thể cải thiện đáng kể tốc độ đọc.
innodb_buffer_pool_instancesLà số vùng mà innodb_buffer_pool_size được chia thành. Đối với các hệ thống có buffer pool trong phạm vi nhiều gigabyte, việc chia buffer pool thành các trường hợp riêng biệt có thể cải thiện tính đồng thời, bằng cách giảm sự tranh chấp khi các luồng khác nhau đọc và ghi vào các trang được lưu trong bộ nhớ đệm. Mỗi trang lưu trữ bên trong hoặc đọc từ buffer pool sẽ được gán ngẫu nhiên cho một trong các trường hợp buffer pool, sử dụng hàm băm. Cách tốt nhất là đặt giá trị này thành “8” trừ khi kích thước buffer pool <1G, trong trường hợp đó được đặt thành “1”.
query_cache_type & quẻy_cache_sizeĐặt cả hai thông số này là “0” sẽ vô hiệu hoá hoàn toàn bộ nhớ đệm truy vấn

Để điều chỉnh các thông số trên, các bạn sử dụng lệnh sau:

root@vina:~# sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysql]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 1
nnodb_flush_method = O_DIRECT
innodb_file_per_table = ON
innodb_stats_on_metadata = OFF
innodb_buffer_pool_instances = 8
query_cache_type = 0

query_cache_size = 0 Vậy là chúng tôi đã hướng dẫn xong cách cài đặt và tối ưu MySQL trên Ubuntu 20.04. Chúc bạn thành công!

Was this article helpful?