Máy chủ cơ sở dữ liệu là một thành phần quan trọng của cơ sở hạ tầng mạng cần thiết cho các ứng dụng ngày nay. Không có khả năng lưu trữ, truy xuất, cập nhật và xóa dữ liệu (khi cần), tính hữu ích và phạm vi của các ứng dụng web và máy tính để bàn trở nên rất hạn chế.
Ngoài ra, biết cách cài đặt, quản lý và cấu hình một máy chủ cơ sở dữ liệu (để nó hoạt động như mong đợi) là một kỹ năng cần thiết mà mọi quản trị viên hệ thống phải có.
Trong bài viết này, chúng tôi sẽ xem xét ngắn gọn cách cài đặt và bảo mật máy chủ cơ sở dữ liệu MariaDB và sau đó chúng tôi sẽ giải thích cách cấu hình nó.
Cài đặt và bảo mật máy chủ MariaDB
Trong CentOS 7.x , MariaDB đã thay thế MySQL, vẫn có thể được tìm thấy trong Ubuntu (cùng với MariaDB). Điều này cũng đúng với openSUSE .
Để ngắn gọn, chúng tôi sẽ chỉ sử dụng MariaDB trong hướng dẫn này, nhưng xin lưu ý rằng ngoài việc có các tên và triết lý phát triển khác nhau, cả Hệ thống quản lý cơ sở dữ liệu quan hệ ( RDBMSs gọi tắt là) gần như giống hệt nhau.
Điều này có nghĩa là các lệnh phía máy khách giống nhau trên cả MySQL và MariaDB và các tệp cấu hình được đặt tên và đặt ở cùng một vị trí.
Để cài đặt MariaDB, hãy thực hiện:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
Lưu ý rằng, trong Ubuntu , bạn sẽ được yêu cầu nhập mật khẩu cho người dùng gốc RDBMS.
Khi các gói trên đã được cài đặt, hãy đảm bảo rằng dịch vụ cơ sở dữ liệu đang chạy và đã được kích hoạt để bắt đầu khi khởi động (trong CentOS và openSUSE bạn sẽ cần thực hiện thao tác này theo cách thủ công, trong khi trong Ubuntu quá trình cài đặt sẽ được xử lý cho bạn):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
Sau đó chạy mysql_secure_installation
kịch bản. Quá trình này sẽ cho phép bạn:
- đặt / đặt lại mật khẩu cho người dùng gốc RDBMS
- xóa thông tin đăng nhập ẩn danh (do đó chỉ cho phép người dùng có tài khoản hợp lệ đăng nhập vào RDBMS)
- vô hiệu hóa quyền truy cập root cho các máy không phải là máy chủ cục bộ
- xóa cơ sở dữ liệu thử nghiệm (mà bất kỳ ai cũng có thể truy cập)
- kích hoạt các thay đổi được liên kết từ 1 đến 4.
Để có mô tả chi tiết hơn về quy trình này, bạn có thể tham khảo phần Đăng cài đặt trong Cài đặt cơ sở dữ liệu MariaDB trong RHEL / CentOS / Fedora và Debian / Ubuntu.
Định cấu hình máy chủ MariaDB
Các tùy chọn cấu hình mặc định được đọc từ các tệp sau theo thứ tự nhất định:/etc/mysql/my.cnf
, /etc/my.cnf
và ~/.my.cnf
.
Thông thường, chỉ /etc/my.cnf
tồn tại. Trên tệp này, chúng tôi sẽ đặt cài đặt trên toàn máy chủ (có thể được ghi đè bằng các cài đặt tương tự trong ~/.my.cnf
cho mỗi người dùng).
Điều đầu tiên chúng ta cần lưu ý về my.cnf
là cài đặt được tổ chức thành các danh mục (hoặc nhóm) trong đó mỗi tên danh mục được đặt trong dấu ngoặc vuông.
Cấu hình hệ thống máy chủ được cung cấp trong [mysqld]
, trong đó thông thường bạn sẽ chỉ tìm thấy hai cài đặt đầu tiên trong bảng bên dưới. Phần còn lại là các tùy chọn được sử dụng thường xuyên khác (nếu được chỉ ra, chúng tôi sẽ thay đổi giá trị mặc định bằng một tùy chọn tùy chỉnh của chúng tôi):
Cài đặt và mô tả | Giá trị mặc định |
datadir là thư mục lưu trữ các tệp dữ liệu. | datadir =/ var / lib / mysql |
socket cho biết tên và vị trí của tệp socket được sử dụng cho các kết nối máy khách cục bộ. Hãy nhớ rằng tệp socket là tài nguyên được sử dụng để chuyển thông tin giữa các ứng dụng. | socket =/ var / lib / mysql / mysql.sock |
bind_address là địa chỉ mà máy chủ cơ sở dữ liệu sẽ lắng nghe các kết nối TCP / IP. Nếu bạn cần máy chủ của mình lắng nghe trên nhiều địa chỉ IP, hãy bỏ qua cài đặt này (0.0.0.0 có nghĩa là nó sẽ lắng nghe trên tất cả các địa chỉ IP được chỉ định cho máy chủ cụ thể này). Chúng tôi sẽ thay đổi điều này để hướng dẫn dịch vụ chỉ nghe trên địa chỉ chính của nó (192.168.0.13): bind_address =192.168.0.13 | bind_address =0.0.0.0 |
cổng đại diện cho cổng mà máy chủ cơ sở dữ liệu sẽ lắng nghe.
Chúng tôi sẽ thay thế giá trị mặc định (3306) bằng 20500 (nhưng chúng tôi cần đảm bảo rằng không có gì khác đang sử dụng cổng đó): Mặc dù một số người sẽ tranh luận rằng bảo mật thông qua sự che giấu là không tốt, nhưng việc thay đổi các cổng ứng dụng mặc định cho các cổng cao hơn là một phương pháp thô sơ - ít hiệu quả - để không khuyến khích việc quét cổng. | port =3306 |
innodb_buffer_pool_size là vùng đệm (tính bằng byte) của bộ nhớ được cấp phát cho dữ liệu và chỉ mục được truy cập thường xuyên khi sử dụng Innodb (là vùng mặc định trong MariaDB) hoặc XtraDB làm công cụ lưu trữ. Chúng tôi sẽ thay thế giá trị mặc định bằng 256 MB: innodb_buffer_pool_size =256 triệu | innodb_buffer_pool_size =134217728 |
ignore_name_resolve cho biết tên máy chủ có được giải quyết hay không trên các kết nối đến. Nếu được đặt thành 1, như chúng tôi sẽ làm trong hướng dẫn này, chỉ địa chỉ IP. Trừ khi bạn yêu cầu tên máy chủ để xác định quyền, bạn nên tắt biến này (để tăng tốc kết nối và truy vấn) bằng cách đặt giá trị của nó thành 1: bỏ qua_name_resolve =1 | ignore_name_resolve =0 |
query_cache_size đại diện cho kích thước (tính bằng byte) có sẵn cho bộ nhớ cache truy vấn trong đĩa, nơi kết quả của các truy vấn SELECT được lưu trữ để sử dụng trong tương lai khi một truy vấn giống hệt nhau (để cùng một cơ sở dữ liệu và sử dụng cùng một giao thức và cùng một bộ ký tự) được thực hiện. Bạn nên chọn kích thước bộ nhớ cache truy vấn phù hợp với nhu cầu của mình dựa trên 1) số lượng truy vấn lặp lại và 2) số bản ghi gần đúng mà các truy vấn lặp lại đó dự kiến sẽ trả về. Chúng tôi sẽ đặt giá trị này thành 100 MB trong thời điểm hiện tại: query_cache_size =100 triệu | query_cache_size =0 (có nghĩa là nó bị tắt theo mặc định) |
max_connections là số lượng tối đa các kết nối máy khách đồng thời với máy chủ. Chúng tôi sẽ đặt giá trị này thành 30: max_connections =30Mỗi kết nối sẽ sử dụng một luồng và do đó sẽ tiêu tốn bộ nhớ. Hãy tính đến thực tế này khi đặt max_connections. | max_connections =151 |
thread_cache_size cho biết số luồng mà máy chủ phân bổ để sử dụng lại sau khi máy khách ngắt kết nối và giải phóng (các) luồng đang sử dụng trước đó. Trong tình huống này, sử dụng lại một chuỗi sẽ rẻ hơn (phù hợp với hiệu suất) hơn là khởi tạo một chuỗi mới. Một lần nữa, điều này phụ thuộc vào số lượng kết nối bạn đang mong đợi. Chúng tôi có thể đặt giá trị này một cách an toàn thành một nửa số max_connections: thread_cache_size =15 | thread_cache_size =0 (bị tắt theo mặc định) |
Trong CentOS , chúng tôi sẽ cần nói với SELinux để cho phép MariaDB để nghe trên cổng không chuẩn ( 20500 ) trước khi khởi động lại dịch vụ:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
Sau đó, khởi động lại dịch vụ MariaDB.
Điều chỉnh Hiệu suất MariaDB
Để hỗ trợ chúng tôi kiểm tra và điều chỉnh cấu hình theo nhu cầu cụ thể của chúng tôi, chúng tôi có thể cài đặt mysqltuner (một tập lệnh sẽ cung cấp các đề xuất để cải thiện hiệu suất của máy chủ cơ sở dữ liệu của chúng tôi và tăng tính ổn định của nó):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
Sau đó, thay đổi thư mục thành thư mục được trích xuất từ tarball (phiên bản chính xác có thể khác trong trường hợp của bạn):
# cd major-MySQLTuner-perl-7dabf27
và chạy nó (bạn sẽ được nhắc nhập thông tin đăng nhập của tài khoản MariaDB quản trị của mình)
# ./mysqltuner.pl
Bản thân đầu ra của tập lệnh đã rất thú vị, nhưng hãy bỏ qua phần cuối nơi các biến cần điều chỉnh được liệt kê với giá trị được đề xuất:
query_cache_type
cài đặt cho biết liệu bộ đệm truy vấn có bị tắt hay không (0) hoặc được bật (1) . Trong trường hợp này, mysqltuner đang khuyên chúng tôi vô hiệu hóa nó.
Vì vậy, tại sao chúng tôi khuyên bạn nên hủy kích hoạt nó ngay bây giờ? Lý do là bộ đệm truy vấn hữu ích chủ yếu trong các tình huống ghi nhiều / ghi thấp (đây không phải là trường hợp của chúng tôi, vì chúng tôi vừa cài đặt máy chủ cơ sở dữ liệu).
CẢNH BÁO :Trước khi thực hiện các thay đổi đối với cấu hình của máy chủ sản xuất, bạn rất nên tham khảo ý kiến của quản trị viên cơ sở dữ liệu chuyên nghiệp để đảm bảo rằng đề xuất do mysqltuner đưa ra sẽ không tác động tiêu cực đến cài đặt hiện có.
Tóm tắt
Trong bài viết này, chúng tôi đã giải thích cách cấu hình máy chủ cơ sở dữ liệu MariaDB sau khi chúng tôi đã cài đặt và bảo mật nó. Các biến cấu hình được liệt kê trong bảng trên chỉ là một số cài đặt mà bạn có thể muốn xem xét khi chuẩn bị sử dụng máy chủ hoặc khi điều chỉnh nó sau này. Luôn tham khảo tài liệu MariaDB chính thức trước khi thực hiện thay đổi hoặc tham khảo các mẹo điều chỉnh Hiệu suất MariaDB của chúng tôi:
Don ' t Miss: 15 Mẹo Tối ưu hóa và Điều chỉnh Hiệu suất MariaDB hữu ích
Như mọi khi, đừng ngần ngại cho chúng tôi biết nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào về bài viết này. Có bất kỳ cài đặt máy chủ nào khác mà bạn muốn sử dụng không? Vui lòng chia sẻ với phần còn lại của cộng đồng bằng cách sử dụng mẫu bình luận bên dưới.
Trở thành Quản trị viên Hệ thống được Chứng nhận Linux