Chuyển tới nội dung chính
Version: 4.1

MariaDB and MySQL

Mọi máy chủ HiTechCloud Panel đều chạy MariaDB trên cổng 3306. Đây là máy chủ cơ sở dữ liệu mà panel dùng cho các bảng của chính nó, là máy chủ mọi tài khoản hosting được dùng mặc định, và là máy chủ mà tài liệu này muốn nói tới mỗi khi nhắc "máy chủ cơ sở dữ liệu".

Một máy chủ cũng có thể chạy Oracle MySQL 8.4 LTS trên cổng 3307, cùng lúc. Cả hai máy chủ cùng chạy, mỗi máy chủ có dữ liệu riêng, và một tài khoản dùng máy chủ này hoặc máy chủ kia. Điều này dành cho các tài khoản có ứng dụng cần chính Oracle MySQL — một chức năng MariaDB không có, hoặc một nhà cung cấp không hỗ trợ gì khác.

Mặc định tính năng này tắt. MariaDB đủ cho hầu hết mọi thứ, và một máy chủ cơ sở dữ liệu thứ hai là thêm một thứ phải duy trì chạy, sao lưu và vá lỗi.

Vì sao nó không phải một gói​

mysql-server và mariadb-server xung đột trong mọi kho trên mọi bản phân phối mà HiTechCloud Panel hỗ trợ: cả hai đều khai báo Provides: mysql-server, nên cài gói này sẽ gỡ gói kia.

Trên một máy chủ đang host khách hàng, apt install mysql-server không thêm một máy chủ cơ sở dữ liệu thứ hai. Nó gỡ MariaDB và mang theo mọi cơ sở dữ liệu trên đó. Không ai nên chỉ cách thảm hoạ đó một lệnh, nên HiTechCloud Panel hoàn toàn không cài MySQL từ kho.

Thay vào đó, nó giải nén tarball Linux chung của chính Oracle vào một cây thư mục riêng:

MariaDBMySQL 8.4
Cổng33063307
Dữ liệu/var/lib/mysql/var/lib/hitechcloud-mysql
Socketcủa bản phân phối/run/hitechcloud-mysql/mysql.sock
Dịch vụmariadbhitechcloud-mysql
Chạy dưới quyềnmysqlhitechmysql
Được cài bởibản phân phốiHiTechCloud Panel

Không có gì của MariaDB bị đụng tới: không gói nào bị gỡ, không unit nào bị mask, không tệp cấu hình nào bị viết lại, và mysql trên dòng lệnh vẫn mở MariaDB. Gỡ MySQL sẽ để MariaDB y nguyên như trước.

Cả hai máy chủ chỉ lắng nghe trên 127.0.0.1. Không gì từ bên ngoài máy kết nối tới được máy chủ nào.

Cài đặt​

Trên một máy chủ mới:

bash INSTALL.sh --with-mysql

Trên một máy chủ đang chạy:

hitechcloudcli mysql84 install

Bản tải xuống nặng 76 MB và đến từ mirror của HiTechCloud. Với phần lớn kết nối, mất khoảng một phút.

MySQL 8.4 được build cho x86_64 và aarch64. Chỉ bản x86_64 có trên mirror; máy chủ arm64 sẽ tải tarball đầy đủ từ Oracle, vốn lớn hơn đáng kể.

Chuyển một tài khoản sang MySQL​

Tệp ~/my.cnf của một tài khoản quyết định nó dùng máy chủ nào. Chuyển một tài khoản sẽ tạo đăng nhập của nó trên máy chủ kia — với mật khẩu nó đang có, nên không có gì tài khoản hay ứng dụng của nó đang giữ phải thay đổi — và viết lại đúng tệp đó.

hitechcloudcli mysql84 adopt alice # move alice onto MySQL
hitechcloudcli mysql84 release alice # move her back to MariaDB
hitechcloudcli mysql84 engine alice # which server is she on?
hitechcloudcli mysql84 accounts # who is on MySQL?

Cơ sở dữ liệu không đi theo tài khoản. MariaDB và MySQL 8.4 khác nhau theo những cách khiến một bản sao âm thầm trở nên thiếu trung thực, nên cả hai lệnh đều từ chối khi tài khoản vẫn còn cơ sở dữ liệu trên máy chủ nó đang rời đi, và nói rõ:

✖ alice has 3 database(s) on MariaDB. They do not move with the account
and would be unreachable.
✖ Export them first (Databases > Export in the panel, or mysqldump), then
run this again and import them into MySQL.

Hãy xuất trước, chuyển tài khoản, rồi nhập. Panel nhận thay đổi ở yêu cầu tiếp theo của tài khoản; không cần khởi động lại.

Tài khoản vẫn giữ đăng nhập trên máy chủ nó đã rời, nên chuyển về không phải là cấp phát lại từ đầu.

Kiểm tra​

hitechcloudcli mysql84 status
MySQL: 8.4.11 (running), port 3307, answering: yes
MariaDB: active, port 3306
Data: /var/lib/hitechcloud-mysql

Một máy chủ đang chạy nhưng không trả lời được báo đúng như vậy, kèm các dòng cuối của nhật ký lỗi — trạng thái đó nghĩa là unit đang chạy nhưng thông tin đăng nhập hoặc socket bị sai, điều mà systemctl status sẽ không cho bạn biết.

Cả hai máy chủ xuất hiện trên trang Dịch vụ thành các hàng riêng, đặt tên theo cổng để không thể nhầm lẫn với nhau.

Mật khẩu root MySQL được tạo trong quá trình cài và lưu trong /etc/hitechcloud/mysql/root.cnf, quyền 0600, chỉ root đọc được. Nó không bao giờ được in ra. Để mở một client root tới MySQL — không bao giờ tới MariaDB — dùng:

hitechcloudcli mysql84 cli

Gỡ bỏ​

hitechcloudcli mysql84 remove # keeps the databases
hitechcloudcli mysql84 remove --delete-data # deletes them too

Hãy chuyển mọi tài khoản về MariaDB trước, nếu không chúng sẽ trỏ tới một máy chủ không còn tồn tại.

Trang này có hữu ích không?