12/08/2018, 16:07

Sử dụng MariaDB thay cho MySQL, tại sao?

Mã nguồn mở (miễn phí thực sự) Sử dụng MariaDB hay Mysql đều có 2 phiên bản thương mại và cộng đồng, tuy nhiên với MySQL bản thương mại (Entrerprise) và bản cộng đồng (miễn phí) có ngay từ những ngày đầu tiên của dòng sản phẩm này. Đó cũng chính là lý do mà MySQL được mua lại một cách dễ dàng từ ...

Mã nguồn mở (miễn phí thực sự)

Sử dụng MariaDB hay Mysql đều có 2 phiên bản thương mại và cộng đồng, tuy nhiên với MySQL bản thương mại (Entrerprise) và bản cộng đồng (miễn phí) có ngay từ những ngày đầu tiên của dòng sản phẩm này. Đó cũng chính là lý do mà MySQL được mua lại một cách dễ dàng từ năm 2009 bởi Oracle sau khi Sun sụp đổ năm 2008. Hiện tại MySQL được bảo trì và phát triển bằng đội ngũ của Oracle và không chịu nhiều tác động bởi cộng đồng, kể từ phiên bản 5.7, các lịch sử commit cho thấy MySQL được phát triển bởi các thành viên đến từ @oracle, hơn nữa các vấn đề (lỗi, cải thiện hiệu suất,…) đều không đem ra thảo luận giữa cộng đồng một cách rõ ràng, một số module là mã nguồn đóng.

Trái ngược với MySQL, MariaDB hoàn toàn mã nguồn mở được vận hành bởi cộng đồng thực sự (MariaDB Foundation), đứng đằng sau là công ty Monty Program, mặc dù cũng có bản thương mại nhưng không ảnh hưởng đến phiên bản mã nguồn mở.

Nói một cách khác, cộng đồng không có quyền trên MySQL!

Được bảo trì bởi người tạo ra MySQL

Sau khi bị Oracle mua lại, một số thành viên chủ lực của MySQL đã ra đi (vì bất cứ lý do gì…) trong đó bao gồm những người tạo ra MySQL. Họ đã fork Mysql thành MariaDB và tiếp tục phát triển, đến bây giờ đã là thế hệ 10.x rồi.

Hoàn toàn tương thích với MySQL

MariaDB có hệ thống hoàn toàn tương thích như với MySQL từ phiên bản 5.1 -> 5.5. Nên nếu Website của bạn đang dùng MySQL 5.1 -> 5.5 thì việc chuyển qua MariaDB là ngon lành 100%.

Do sự tương thích giữa MariaDB và MySQL nên trong hầu hết trường hợp chúng ta có thể xóa bỏ MySQL và cài đặt MariaDB để thay thế mà hệ thống vẫn hoạt động bình thường. Trên MariaDB và MySQL có:

  • Data and table definition files (.frm) files hoàn toàn tương thích
  • Tất cả client APIs, protocols and structs hoàn toàn giống nhau
  • Tất cả filenames, binaries, paths, ports, sockets,... hoàn toàn giống nhau
  • Tất cả MySQL connectors (PHP, Perl, Python, Java, .NET, MyODBC, Ruby, MySQL C connector etc) đều hoạt động bình thường khi đổi qua MariaDB
  • Gói mysql-client cũng hoạt động khi dùng với MariaDB

Nhiều tính năng hay

Kể từ Mysql 5.6, MariaDB đã không còn giống MySQL nữa, họ đã tách hẳn và nâng cấp nhiều tính năng để cải thiện tốc độ cũng như các tính năng mới: (GIS)[https://mariadb.com/kb/en/mariadb/gis-functionality/] giúp lưu trữ dữ liệu định vị và truy vấn một cách dễ dàng hơn. Và đặc biệt nếu bạn từng nghe đến NoSQL thì MariaDB cũng có hỗ trợ với việc không giới hạn cột, cũng như loại dữ liệu: Ví dụ:

CREATE TABLE assets (
    item_name varchar(32) primary key, -- A common attribute for all items
    dynamic_cols blob -- Dynamic columns will be stored here
);
INSERT INTO assets VALUES
    ('MariaDB T-shirt', COLUMN_CREATE('color', 'blue', 'size', 'XL'));
INSERT INTO assets VALUES
    ('Thinkpad Laptop', COLUMN_CREATE('color', 'black', 'price', 500));

Như vậy, bạn thấy record đầu thì size là XL, record sau không có, nhưng lại có price là 500. Đây là đặc tính rất hay để kết hợp SQL và NoSQL.

Các bạn xem thêm dách sách chức năng mới khi sử dụng MariaDB.

Nhiều Engine lưu trữ hơn

Thật ra, chúng ta thường ít quan tâm đến chuyện này, chỉ cần MyISAM hoặc InnoDB thôi có lẽ cũng đủ. Tuy nhiên nếu bạn biết thêm nhiều engine nữa có nghĩa là sử dụng đúng trong từng tình huống, sẽ giúp hệ thống linh động hơn, cũng như chạy nhanh hơn. Khi sử dụng MariaDB, chúng ta có thêm nhiều sự lưa chọn cho store engine nhờ đó dễ dàng phát triển sản phẩm lớn.

Ví dụ: Cassandra Store Engine: Cassandra là cơ sở dữ liệu được sử dụng bởi Facebook, theo cơ chế row với 1 key và không giới hạn column. Nếu bạn đã có một cơ sở dữ liệu và muốn kết nối với MariaDB thì hoàn toàn có khả năng: lấy dữ liệu từ Cassandra bằng ngôn ngữ SQL hoặc như thêm mới dữ liệu vào Cassandra.

Ngoài việc hỗ trợ các storage engines cơ bản như MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE, and MERGE thì trên MariaDB còn bổ sung thêm các storage engines sau:

  • Aria (được xem như một phiên bản cập nhập của MyISAM)
  • XtraDB (thay thế cho InnoDB)
  • FederatedX
  • OQGRAPH
  • SphinxSE
  • IBMDB2I
  • TokuDB
  • Cassandra
  • CONNECT
  • SEQUENCE
  • Spider
  • PBXT

Ngoài ra trên MariaDB còn cải thiện hiệu năng và cung cấp thêm một số chức năng mới. Chúng ta có thể tham khảo chi tiết tại: https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-features/

Kết hợp 2 thế giới SQL và NoSQL

Cả 2 loại cơ sở dữ liệu này đều có điểm lợi riêng, việc MariaDB cho phép kết nối sẽ tận dụng được lợi thế của 2 thế giới này: Dynamic Column và Cassandra Store Engine.

Sử dụng MariaDB để tối ưu tốc độ

Mặc dù vẫn có một vài thí nghiệm benchmark chỉ ra rằng MariaDB nhanh hơn MySQL từ 3-5%, tuy nhiên để khẳng định là tốc độ nhanh hơn thì rất khó để nói. Mặc dù vậy, với sự phát triển của cộng đồng do cộng đồng thì mình tin tưởng rằng MariaDB sẽ được tối ưu ngày càng tốt hơn.

Các Website lớn đã sử dụng MariaDB

Một trong những website lớn nhất thế giới là Wikipedia đã chuyển từ MySQL qua MariaDB. Ngay cả Fullstack-Station cũng đang dùng MariaDB.

Tài liệu hỗ trợ Tiếng Việt

(Knowledge Base tiếng Việt)[https://mariadb.com/kb/vi/], mặc dù bản dịch vẫn chưa phải quá tốt, tuy nhiên cho thấy sự tiếp cận cộng đồng là khá tốt. Việc đọc tài liệu bằng tiếng mẹ đẻ rõ ràng dễ hiểu hơn chứ!

Kết luận

Nếu bạn không chuyển qua MariaDB thì sao nhỉ?

Thật ra thì mình nghĩ cũng chẳng sao, tuy nhiên như bạn thấy thì từ bản 5.7 thì 2 hệ cơ sở dữ liệu này đã bắt đầu khác nhau nhiều rồi, đến 1 lúc nào đó MySQL không còn nhận sự quan tâm của cộng đồng mã nguồn mở nữa, thì sự hỗ trợ cũng sẽ dần giảm sút (đã thấy từ 5.7 khi số người đóng góp đã giảm). Các cộng đồng mã nguồn sử dụng MySQL dần cũng sẽ chuyển sang sử dụng MariaDB, tới lúc đó bạn sẽ mất nhiều thời gian hơn để chuyển nhà.

Cài đặt MariaDB trên CenOS

Bạn nào muốn cài MariaDB trên Ubuntu thì tham khảo ở đây.

Để cài đặt MariaDB, bạn cần thêm một repository sau vào hệ thống bằng cách chạy lệnh sau: yum install wget && wget -O /etc/yum.repos.d/MariaDB.repo http://mariadb.if-not-true-then-false.com/rhel/$(rpm -E %rhel)/$(uname -i)/10

Kế tiếp là hãy xóa cache của yum đi: yum clean all

Kế tiếp là update cái yum để nó cập nhật package của MariaDB yum update

Cuối cùng là cài MariaDB yum install MariaDB-server MariaDB-client

Cài xong thì hãy khởi động MariaDB lên. service mysql start

Và đừng quên đưa mysql vào danh sách các ứng dụng tự khởi động khi reboot server chkconfig --levels 150 mysql on

Sau khi cài vào, MariaDB sẽ không được bảo mật vì chưa có mật khẩu root và các tùy chọn cần thiết. Do vậy bạn sẽ cần chạy lệnh sau để thiết lập mật khẩu root: mysql_secure_installation

Ngay đoạn đầu tiên nó sẽ hỏi bạn nhập mật khẩu root hiện tại, nhưng chúng ta chưa có mật khẩu thì hãy Enter để bỏ qua, kế tiếp chọn gõ Y để bắt đầu thiết lập mật khẩu cho root và các tùy chọn sau bạn vẫn Y hết.

Bây giờ bạn hãy thử đăng nhập vào MariaDB Server với lệnh mysql -u root -p và nhập mật khẩu root vào nhé. Nếu nó chuyển vào trang quản trị MariaDB là thành công. Gõ exit và Enter để thoát ra ngoài lại.

[root@vultr yum.repos.d]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 12
Server version: 5.5.39-MariaDB MariaDB Server
 
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
 
MariaDB [(none)]>

Cài đặt phpMyAdmin

Có thể bạn sẽ cảm thấy hơi khó khăn nếu sử dụng các dòng lệnh để thao tác những tác vụ cần thiết như tạo database, sửa dữ liệu,… nên có thể bạn sẽ khá cần đến công cụ phpMyAdmin để quản trị database dễ hơn. Nếu bạn có nhu cầu cài thêm phpMyAdmin, hãy làm theo bài này.

  • Sử dụng MariaDB thay cho MySQL, tại sao?
  • Giới thiệu và cài đặt MariaDB
  • MariaDB là mã thực thi rút ra trong tiến trình thay thế cho MySQL
  • LEMP cho VPS - Phần 4: Cài đặt MariaDB
0