Mặc dù nó chia sẻ cùng một di sản với MySQL, nhưng MariaDB là một cơ sở dữ liệu khác. Qua nhiều năm khi các phiên bản MySQL và MariaDB mới được phát hành, cả hai dự án đã khác nhau thành hai nền tảng RDBMS khác nhau.
MariaDB trở thành bản phân phối cơ sở dữ liệu chính trên nhiều nền tảng Linux và ngày nay nó đang trở nên phổ biến. Đồng thời trở thành hệ thống cơ sở dữ liệu rất hấp dẫn đối với nhiều tập đoàn. Nó nhận được các tính năng gần với nhu cầu của doanh nghiệp như mã hóa, sao lưu nóng hoặc khả năng tương thích với cơ sở dữ liệu độc quyền.
Nhưng làm thế nào để các tính năng mới ảnh hưởng đến khả năng tương thích của MariaDB với MySQL? Nó vẫn còn thay thế cho MySQL? Làm cách nào để những thay đổi mới nhất khuếch đại quá trình di chuyển? Chúng tôi sẽ cố gắng giải đáp điều đó trong bài viết này.
Những điều bạn cần biết trước khi nâng cấp
MariaDB và MySQL khác nhau đáng kể trong hai năm qua, đặc biệt là với sự xuất hiện của các phiên bản mới nhất của chúng:MySQL 8.0, MariaDB 10.3 và MariaDB 10.4 RC (chúng tôi đã thảo luận về các tính năng mới của MariaDB 10.4 RC gần đây nên nếu bạn muốn đọc thêm về những gì sắp tới trong 10.4, vui lòng kiểm tra hai blog của đồng nghiệp Krzysztof của tôi, Có gì mới trong MariaDB 10.4 và thứ hai về Có gì mới trong MariaDB Cluster 10.4).
Với việc phát hành MariaDB 10.3, MariaDB đã khiến nhiều người ngạc nhiên vì nó không còn là bản thay thế cho MySQL nữa. MariaDB không còn hợp nhất các tính năng MySQL mới với MariaDB noir giải quyết các lỗi MySQL. Tuy nhiên, phiên bản 10.3 hiện đang trở thành một giải pháp thay thế thực sự cho Oracle MySQL Enterprise cũng như các cơ sở dữ liệu doanh nghiệp độc quyền khác như Oracle 12c (MSSQL trong phiên bản 10.4).
Kiểm tra sơ bộ và các giới hạn
Di chuyển là một quá trình phức tạp cho dù bạn đang nâng cấp lên phiên bản nào. Có một số điều bạn cần lưu ý khi lập kế hoạch này, chẳng hạn như những thay đổi cần thiết giữa các phiên bản RDBMS cũng như kiểm tra chi tiết cần dẫn đầu bất kỳ quá trình nâng cấp nào. Điều này đặc biệt quan trọng nếu bạn muốn duy trì tính khả dụng trong suốt thời gian nâng cấp.
Việc nâng cấp lên phiên bản chính mới có rủi ro và điều quan trọng là phải lập kế hoạch chu đáo cho toàn bộ quá trình. Trong tài liệu này, chúng tôi sẽ xem xét những thay đổi mới quan trọng trong phiên bản 10.3 (và 10.4 sắp tới) và chỉ cho bạn cách lập kế hoạch cho quá trình thử nghiệm.
Để giảm thiểu rủi ro, hãy xem xét các điểm khác biệt và hạn chế của nền tảng.
Bắt đầu với cấu hình có một số tham số có giá trị mặc định khác nhau. MariaDB cung cấp một ma trận về sự khác biệt tham số. Nó có thể được tìm thấy ở đây.
Trong MySQL 8.0, caching_sha2_password là plugin xác thực mặc định. Cải tiến này sẽ cải thiện bảo mật bằng cách sử dụng thuật toán SHA-256. MySQL có plugin này được bật theo mặc định, trong khi MariaDB thì không. Mặc dù đã có một yêu cầu tính năng được mở bằng MariaDB MDEV-9804. MariaDB cung cấp plugin ed25519 thay thế, đây dường như là một giải pháp thay thế tốt cho phương pháp xác thực cũ.
Hỗ trợ của MariaDB cho mã hóa trên bảng và không gian bảng đã được thêm vào trong phiên bản 10.1.3. Với việc các bảng của bạn được mã hóa, dữ liệu của bạn hầu như không thể bị ai đó lấy cắp. Loại mã hóa này cũng cho phép tổ chức của bạn tuân thủ các quy định của chính phủ như GDPR.
MariaDB hỗ trợ các nhóm luồng kết nối, hoạt động hiệu quả nhất trong các tình huống mà các truy vấn tương đối ngắn và tải bị ràng buộc bởi CPU. Trên phiên bản cộng đồng của MySQL, số luồng là tĩnh, điều này hạn chế tính linh hoạt trong những tình huống này. Gói doanh nghiệp của MySQL bao gồm các khả năng chia sẻ luồng.
MySQL 8.0 bao gồm lược đồ hệ thống, một tập hợp các đối tượng giúp quản trị viên cơ sở dữ liệu và kỹ sư phần mềm giải thích dữ liệu được thu thập bởi Lược đồ hiệu suất. Các đối tượng lược đồ Sys có thể được sử dụng cho các trường hợp sử dụng tối ưu hóa và chẩn đoán. MariaDB không có tính năng nâng cao này.
Một cái khác là cột vô hình. Các cột ẩn cho phép bạn thêm các cột vào bảng hiện có một cách linh hoạt mà không sợ làm hỏng ứng dụng. Tính năng này không có sẵn trong MySQL. Nó cho phép tạo các cột không được liệt kê trong kết quả của câu lệnh SELECT *, cũng như không cần gán giá trị trong câu lệnh INSERT khi tên của chúng không được đề cập trong câu lệnh.
MariaDB đã quyết định không triển khai hỗ trợ JSON gốc (một trong những tính năng chính của MySQL 5.7 và 8.0) vì họ cho rằng nó không phải là một phần của tiêu chuẩn SQL. Thay vào đó, để hỗ trợ sao chép từ MySQL, họ chỉ định nghĩa một bí danh cho JSON, thực sự là một cột LONGTEXT. Để đảm bảo rằng một tài liệu JSON hợp lệ được chèn vào, hàm JSON_VALID có thể được sử dụng làm ràng buộc CHECK (mặc định cho MariaDB 10.4.3). MariaDB không thể truy cập trực tiếp vào định dạng JSON của MySQL.
Oracle tự động hóa rất nhiều tác vụ với MySQL Shell. Ngoài SQL, MySQL Shell cũng cung cấp khả năng tạo tập lệnh cho JavaScript và Python.
Quy trình di chuyển bằng mysqldump
Khi chúng tôi biết những hạn chế của mình, quá trình cài đặt khá đơn giản. Nó liên quan khá nhiều đến cài đặt và nhập tiêu chuẩn bằng mysqldump. Công cụ sao lưu MySQL Enterprise không tương thích với MariaDB vì vậy cách được khuyến nghị là sử dụng mysqldump. Đây là quá trình ví dụ được thực hiện trên Centos 7 và MariaDB 10.3.
Tạo kết xuất trên máy chủ MySQL Enterprise
$ mysqldump --routines --events --triggers --single-transaction db1 > export_db1.sql
Xóa chỉ mục bộ nhớ cache của yum
sudo yum makecache fast
Cài đặt MariaDB 10.3
sudo yum -y install MariaDB-server MariaDB-client
Khởi động dịch vụ MariaDB.
sudo systemctl start mariadb
sudo systemctl enable mariadb
Bảo mật MariaDB bằng cách chạy mysql_secure_installation.
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Nhập kết xuất
Mysql -uroot -p
> tee import.log
> source export_db1.sql
Review the import log.
$vi import.log
Để triển khai một môi trường, bạn cũng có thể sử dụng ClusterControl có tùy chọn để triển khai từ đầu.
ClusterControl Triển khai MariaDBClusterControl cũng có thể được sử dụng để thiết lập bản sao hoặc để nhập bản sao lưu từ MySQL Enterprise Edition.
Quy trình di chuyển bằng cách sử dụng bản sao
Cách tiếp cận khác để di chuyển giữa MySQL Enterprise và MariaDB là sử dụng quy trình nhân bản. Các phiên bản MariaDB cho phép sao chép chúng từ cơ sở dữ liệu MySQL - có nghĩa là bạn có thể dễ dàng di chuyển cơ sở dữ liệu MySQL sang MariaDB. Các phiên bản MySQL Enterprise sẽ không cho phép sao chép từ máy chủ MariaDB nên đây là tuyến một chiều.
Dựa trên tài liệu MariaDB:https://mariadb.com/kb/en/library/mariadb-vs- mysql-tương thích /. X đề cập đến tài liệu MySQL. Tài nguyên liên quan ClusterControl cho MariaDB Có gì mới trong MariaDB 10.4 Cách quản lý MySQL - dành cho Oracle DBAsDưới đây là một số quy tắc chung do MariaDB chỉ ra.
- Sao chép từ MySQL 5.5 sang MariaDB 5.5+ sẽ hoạt động. Bạn sẽ muốn MariaDB giống hoặc phiên bản cao hơn máy chủ MySQL của mình.
- Khi sử dụng MariaDB 10.2+ làm nô lệ, có thể cần đặt binlog_checksum thành KHÔNG.
- Việc sao chép từ MySQL 5.6 mà không có GTID sang MariaDB 10+ sẽ hoạt động.
- Sao chép từ MySQL 5.6 với GTID, binlog_rows_query_log_events và các sự kiện có thể bỏ qua hoạt động bắt đầu từ MariaDB 10.0.22 và MariaDB 10.1.8. Trong trường hợp này, MariaDB sẽ xóa các GTID của MySQL và các sự kiện không cần thiết khác và thay vào đó, thêm các GTID của chính nó.
Ngay cả khi bạn không định sử dụng sao chép trong quá trình di chuyển / chuyển đổi, thì một công cụ tạo độ tin cậy tốt là sao chép máy chủ sản xuất của bạn trên hộp cát thử nghiệm và sau đó thực hành trên đó.
Chúng tôi hy vọng bài đăng trên blog giới thiệu này đã giúp bạn hiểu quá trình đánh giá và triển khai MySQL Enterprise Migration sang MariaDB.