MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Sử dụng MyRocks Storage Engine với MariaDB Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhân rộng MySQL với ProxySQL trên Máy chủ WHM / cPanel:Phần thứ hai

  2. Cách hoạt động của EXP () trong MariaDB

  3. Triển khai các cụm và cơ sở dữ liệu có sẵn cao với ClusterControl

  4. MariaDB FOUND_ROWS () Giải thích

  5. MariaDB 10.6 và NextCloud:Hàng COMPRESSED được mặc định chỉ đọc