MariaDB Server là một trong những máy chủ cơ sở dữ liệu mã nguồn mở, phổ biến nhất. Nó được tạo ra bởi các nhà phát triển ban đầu của MySQL và nó trở nên phổ biến vì nhanh, có thể mở rộng và mạnh mẽ. MariaDB có một hệ sinh thái phong phú gồm các công cụ lưu trữ, plugin và các công cụ khác làm cho nó rất linh hoạt cho nhiều trường hợp sử dụng.
Các yêu cầu về dung lượng đĩa và hiệu suất I / O của cơ sở dữ liệu của chúng tôi tiếp tục tăng cao hơn. Điều này giúp chúng tôi có thể quản lý sự phát triển thông tin của mình một cách chính xác.
Đối với công cụ lưu trữ MariaDB, chúng ta có nhiều loại khác nhau để lựa chọn như XtraDB, InnoDB, Aria hoặc MyISAM. Kể từ phiên bản MariaDB 10.2.5, MyRocks cũng đã có sẵn. MyRocks là loại công cụ lưu trữ thực sự có thể giúp chúng tôi đáp ứng các yêu cầu mà chúng tôi đã đề cập trước đó.
Trong blog này, chúng ta sẽ tìm hiểu thêm thông tin về công cụ MyRocks mới và cách chúng ta có thể sử dụng nó trong Máy chủ MariaDB.
MyRocks là gì?
MyRocks là một công cụ lưu trữ mã nguồn mở dựa trên RocksDB, được phát triển ban đầu bởi Facebook.
MyRocks có thể là một giải pháp lưu trữ tốt khi bạn có khối lượng công việc yêu cầu độ nén lớn hơn và hiệu quả I / O. Nó sử dụng kiến trúc Log Structured Merge (LSM) có khả năng nén tốt hơn các thuật toán B-tree được sử dụng bởi công cụ InnoDB (nén tốt hơn gấp 2 lần so với dữ liệu được nén bởi InnoDB). Nó cũng là một công cụ lưu trữ tối ưu hóa khả năng ghi (khuếch đại ghi ít hơn 10 lần khi so sánh với InnoDB) và nó có tốc độ tải và sao chép dữ liệu nhanh hơn. MyRocks ghi dữ liệu trực tiếp lên cấp dưới cùng, điều này tránh tất cả các chi phí nén khi bạn cho phép tải dữ liệu nhanh hơn cho một phiên.
LSM hoạt động bằng cách lưu trữ các thao tác sửa đổi trong bộ đệm (ghi nhớ) và sắp xếp và lưu trữ dữ liệu khi bộ đệm này đầy.
Theo mặc định, các bảng và cơ sở dữ liệu được lưu trữ trong thư mục #rocksdb bên trong cơ sở dữ liệu MySQL. Thông tin này được lưu trữ trong các tệp .sst mà không cần phân tách theo từng bảng.
MyRocks hỗ trợ các cấp độ riêng biệt READ COMMITTED và REPEATABLE READ và nó không hỗ trợ SERIALIZABLE.
Cách triển khai MyRocks trên máy chủ MariaDB
Cài đặt
Đầu tiên, chúng ta cần cài đặt máy chủ MariaDB. Trong ví dụ này, chúng tôi sẽ sử dụng CentOS Linux phiên bản 7.6 làm hệ điều hành.
Theo mặc định, phiên bản hệ điều hành này sẽ cố gắng cài đặt MariaDB 5.5, vì vậy chúng tôi sẽ thêm kho lưu trữ MariaDB để cài đặt phiên bản MariaDB 10.3.
$ cat > /etc/yum.repos.d/MariaDB.repo <<- EOF
# MariaDB 10.3 CentOS repository
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Và sau đó, chúng tôi sẽ cài đặt gói Máy chủ MariaDB:
$ yum install MariaDB-server
Lệnh này sẽ cài đặt các gói phụ thuộc khác nhau, không chỉ Máy chủ MariaDB.
==========================================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================================
Installing:
MariaDB-server x86_64 10.3.15-1.el7.centos mariadb 24 M
Installing for dependencies:
MariaDB-client x86_64 10.3.15-1.el7.centos mariadb 11 M
MariaDB-common x86_64 10.3.15-1.el7.centos mariadb 78 k
MariaDB-compat x86_64 10.3.15-1.el7.centos mariadb 2.8 M
boost-program-options x86_64 1.53.0-27.el7 base 156 k
galera x86_64 25.3.26-1.rhel7.el7.centos mariadb 8.1 M
libaio x86_64 0.3.109-13.el7 base 24 k
lsof x86_64 4.87-6.el7 base 331 k
make x86_64 1:3.82-23.el7 base 420 k
openssl x86_64 1:1.0.2k-16.el7_6.1 updates 493 k
perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k
perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k
perl-DBI x86_64 1.627-4.el7 base 802 k
perl-Data-Dumper x86_64 2.145-3.el7 base 47 k
perl-IO-Compress noarch 2.061-2.el7 base 260 k
perl-Net-Daemon noarch 0.48-5.el7 base 51 k
perl-PlRPC noarch 0.2020-14.el7 base 36 k
Transaction Summary
==========================================================================================================================================================================================================
Install 1 Package (+16 Dependent packages)
Theo mặc định, Máy chủ MariaDB được cài đặt với công cụ lưu trữ InnoDB, vì vậy chúng tôi phải cài đặt công cụ RocksDB để có thể sử dụng nó.
$ yum install MariaDB-rocksdb-engine
==========================================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================================
Installing:
MariaDB-rocksdb-engine x86_64 10.3.15-1.el7.centos mariadb 4.4 M
Installing for dependencies:
libzstd x86_64 1.3.4-1.el7 mariadb 211 k
snappy x86_64 1.1.0-3.el7 base 40 k
Transaction Summary
==========================================================================================================================================================================================================
Install 1 Package (+2 Dependent packages)
Lệnh này sẽ cài đặt một số phụ thuộc bắt buộc và nó sẽ kích hoạt plugin trên Máy chủ MariaDB. Nó cũng sẽ tạo một tệp cấu hình trong /etc/my.cnf.d/rocksdb.cnf:
[mariadb]
plugin-load-add=ha_rocksdb.so
Chúng tôi có thể xác minh cài đặt này bằng cách chạy lệnh SHOW PLUGINS vào Máy chủ MariaDB.
$ MariaDB> SHOW PLUGINS;
+-------------------------------+----------+--------------------+---------------+---------+
| Name | Status | Type | Library | License |
+-------------------------------+----------+--------------------+---------------+---------+
...
| ROCKSDB | ACTIVE | STORAGE ENGINE | ha_rocksdb.so | GPL |
| ROCKSDB_CFSTATS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_DBSTATS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_PERF_CONTEXT | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_PERF_CONTEXT_GLOBAL | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_CF_OPTIONS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_COMPACTION_STATS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_GLOBAL_INFO | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_DDL | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_SST_PROPS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_INDEX_FILE_MAP | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_LOCKS | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_TRX | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
| ROCKSDB_DEADLOCK | ACTIVE | INFORMATION SCHEMA | ha_rocksdb.so | GPL |
+-------------------------------+----------+--------------------+---------------+---------+
Nếu vì lý do nào đó mà chúng tôi không bật plugin, chúng tôi có thể cài đặt nó động bằng cách thực hiện lệnh CÀI ĐẶT SONAME hoặc CÀI ĐẶT PLUGIN:
$ MariaDB> INSTALL SONAME 'ha_rocksdb';
Một tùy chọn khác có thể là khởi động lại các dịch vụ cơ sở dữ liệu. Hành động này sẽ đọc tệp /etc/my.cnf.d/rocksdb.cnf và bật plugin.
$ service mariadb restart
Chúng tôi có thể tìm thông tin chi tiết về công cụ RocksDB của mình bằng cách sử dụng lệnh sau:
$ SHOW ENGINE ROCKSDB STATUS
Cấu hình
Về tệp cấu hình, tệp chính là /etc/my.cnf, bao gồm thư mục /etc/my.cnf.d nơi chúng ta có thể tìm thấy phần còn lại của tệp cấu hình. Trong thư mục này, chúng tôi sẽ có các tệp cấu hình sau theo mặc định:
- enable_encryption.preset:Nó sẽ cho phép mã hóa dữ liệu ở trạng thái nghỉ.
- mysql-client.cnf:Tại đây có các cấu hình cho các nhóm khác nhau như [mysqladmin], [mysqlcheck], [mysqldump] và hơn thế nữa.
- stonedb.cnf:Trong tệp này, chúng tôi sẽ thêm cấu hình cụ thể cho MyRocks, như default-storage-engine hoặc stonedb_block_size.
- server.cnf:Ở đây chúng tôi có cấu hình liên quan đến máy chủ cơ sở dữ liệu như bind-address và binlog_format.
Tất cả các biến hệ thống và biến trạng thái của MyRocks đều được mở đầu bằng "stonedb". Hãy xem xét điều này.
Các biến hệ thống:
$ MariaDB> SHOW VARIABLES LIKE 'rocksdb%';
+-------------------------------------------------+------------------------------------------+
| Variable_name | Value |
+-------------------------------------------------+------------------------------------------+
| rocksdb_access_hint_on_compaction_start | 1 |
| rocksdb_advise_random_on_open | ON |
| rocksdb_allow_concurrent_memtable_write | OFF |
| rocksdb_allow_mmap_reads | OFF |
| rocksdb_allow_mmap_writes | OFF |
| rocksdb_allow_to_start_after_corruption | OFF |
| rocksdb_blind_delete_primary_key | OFF |
| rocksdb_block_cache_size | 536870912 |
| rocksdb_block_restart_interval | 16 |
| rocksdb_block_size | 4096 |
…
+-------------------------------------------------+------------------------------------------+
Các biến trạng thái:
$ MariaDB> SHOW STATUS LIKE 'rocksdb%';
+----------------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------------+-------+
| Rocksdb_rows_deleted | 0 |
| Rocksdb_rows_inserted | 0 |
| Rocksdb_rows_read | 0 |
| Rocksdb_rows_updated | 0 |
| Rocksdb_rows_deleted_blind | 0 |
| Rocksdb_rows_expired | 0 |
| Rocksdb_rows_filtered | 0 |
| Rocksdb_system_rows_deleted | 0 |
| Rocksdb_system_rows_inserted | 0 |
| Rocksdb_system_rows_read | 0 |
…
+----------------------------------------------------+-------+
Bạn có thể tìm thêm thông tin về trạng thái và các biến hệ thống trên trang web MariaDB.
Sao lưu cho MariaDB bằng MyRocks
Sao lưu là điều bắt buộc trong tất cả các môi trường cơ sở dữ liệu. Chúng rất cần thiết cho việc khôi phục hệ thống, di chuyển, kiểm tra, thử nghiệm và hơn thế nữa.
Chúng ta có thể phân loại các bản sao lưu theo hai loại khác nhau, logic và vật lý. Bản sao lưu lôgic được lưu trữ ở định dạng con người có thể đọc được như SQL và bản sao lưu vật lý chứa dữ liệu nhị phân bổ sung.
Để sao lưu hợp lý trên MariaDB với MyRocks làm công cụ cơ sở dữ liệu, công cụ sao lưu phổ biến nhất là mysqldump cổ điển:
$ mysqldump -hHOST -uUSER -p DATABASE > FILE.SQL
Và để sao lưu vật lý, chúng tôi có thể sử dụng Mariabackup tương thích với MyRocks:
$ mariabackup --backup --target-dir=/backup/ --user=USER --password=PASSWORD --host=HOST
Một tùy chọn khác có thể là myrocks_hotbackup, do Facebook tạo ra. Nó có thể được sử dụng để lấy một bản sao vật lý từ phiên bản MyRocks đang chạy tới máy chủ cục bộ hoặc từ xa mà không cần dừng phiên bản nguồn.
Hạn chế của việc sử dụng MyRocks cho MariaDB
Hãy xem xét một số hạn chế của việc sử dụng công cụ MyRocks ...
- Tính năng sao chép song song lạc quan của MariaDB có thể không được hỗ trợ
- MyRocks không khả dụng cho nền tảng 32 bit
- Cụm MariaDB (Cụm Galera) không hoạt động với MyRocks (Chỉ các công cụ lưu trữ InnoDB hoặc XtraDB)
- Giao dịch phải vừa với bộ nhớ
- Yêu cầu cài đặt đặc biệt để tải dữ liệu
- SERIALIZABLE không được hỗ trợ
- Không gian bảng có thể truyền tải, Khoá ngoại, Chỉ mục không gian và Chỉ mục toàn văn bản không được hỗ trợ
Kết luận
MyRocks có sẵn trong MariaDB từ các phiên bản cao hơn 10.2.5. Như chúng tôi đã đề cập trước đó, công cụ lưu trữ này có thể hữu ích cho bạn khi bạn có khối lượng công việc yêu cầu nén dữ liệu cao và mức hiệu quả I / O cao hơn. Để tìm hiểu thêm về MyRocks, bạn có thể xem phần này.