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

Giới thiệu về Triển khai MySQL bằng vai trò Ansible

Ansible tự động hóa và đơn giản hóa các hoạt động lặp đi lặp lại, phức tạp và tẻ nhạt. Nó là một công cụ tự động hóa CNTT tự động hóa việc cung cấp đám mây, quản lý cấu hình, triển khai ứng dụng, điều phối dịch vụ nội bộ và nhiều nhu cầu CNTT khác. Nó không yêu cầu tác nhân, chỉ sử dụng SSH để đẩy các thay đổi từ một nguồn duy nhất sang nhiều tài nguyên từ xa mà không cần cấu hình cơ sở hạ tầng bảo mật tùy chỉnh bổ sung và sử dụng định dạng ngôn ngữ đơn giản (YAML) để mô tả các công việc tự động hóa.

Cài đặt một máy chủ MySQL độc lập là một công việc đơn giản dễ hiểu, nhưng điều này có thể gây ra vấn đề nếu bạn có nhiều máy chủ cơ sở dữ liệu, phiên bản, nền tảng và môi trường để hỗ trợ. Do đó, có một công cụ quản lý cấu hình là cách để cải thiện hiệu quả, loại bỏ tính lặp lại và giảm thiểu lỗi do con người gây ra.

Trong bài đăng trên blog này, chúng tôi sẽ hướng dẫn bạn những kiến ​​thức cơ bản về tự động hóa của Ansible cho MySQL, cũng như quản lý cấu hình với các ví dụ và giải thích. Chúng ta sẽ bắt đầu với một triển khai MySQL độc lập đơn giản, như được minh họa trong sơ đồ cấp cao sau:

Cài đặt Ansible

Đối với hướng dẫn này, chúng ta cần có ít nhất hai máy chủ - Một máy chủ dành cho Ansible (bạn có thể sử dụng máy trạm thay vì máy chủ) và một máy chủ khác là máy chủ đích mà chúng tôi muốn triển khai Máy chủ MySQL.

Để cài đặt Ansible trên CentOS 7, chỉ cần chạy các lệnh sau:

(ansible-host)$ yum install -y epel-release

(ansible-host)$ yum install -y ansible

Đối với các bản phân phối HĐH khác, hãy xem hướng dẫn cài đặt Ansible.

Thiết lập SSH không mật khẩu

Sử dụng mật khẩu trong khi SSH được hỗ trợ, nhưng các khóa SSH không cần mật khẩu với ssh-agent là một trong những cách tốt nhất để sử dụng Ansible. Bước đầu tiên là định cấu hình SSH không mật khẩu vì Ansible sẽ thực hiện việc triển khai chỉ bằng kênh này. Đầu tiên, tạo khóa SSH trên máy chủ Ansible:

(ansible-host)$ whoami

root

(ansible-host)$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

Bạn phải tạo ít nhất các tệp sau:

(ansible-host)$ ls -al ~/.ssh/

-rw-------. 1 root root 1679 Jan 14 03:40 id_rsa

-rw-r--r--. 1 root root  392 Jan 14 03:40 id_rsa.pub

Để cho phép SSH không cần mật khẩu, chúng ta cần sao chép khóa công khai SSH (id_rsa.pub) vào máy chủ từ xa mà chúng ta muốn truy cập. Chúng tôi có thể sử dụng một công cụ có tên là ssh-copy-id để thực hiện nhiệm vụ này cho chúng tôi. Tuy nhiên, bạn phải biết mật khẩu của người dùng của máy chủ đích và xác thực mật khẩu được phép trên máy chủ đích:

(ansible-host)$ whoami

root

(ansible-host)$ ssh-copy-id [email protected]

Lệnh trên sẽ nhắc nhập mật khẩu gốc 192.168.0.221, chỉ cần nhập mật khẩu và khóa SSH cho người dùng hiện tại của máy chủ Ansible sẽ được sao chép sang máy chủ đích, 192.168.0.221 thành ~ / .ssh / allow_keys, nghĩa là chúng tôi cho phép khóa cụ thể đó truy cập từ xa vào máy chủ này. Để kiểm tra, bạn có thể chạy lệnh từ xa sau mà không cần mật khẩu từ máy chủ Ansible:

(ansible-host)$ ssh [email protected] "hostname -I"

192.168.0.221

Trong trường hợp bạn không được phép sử dụng người dùng gốc cho SSH (ví dụ:"PermitRootLogin no" trong cấu hình SSH), bạn có thể sử dụng người dùng sudo để thay thế. Trong ví dụ sau, chúng tôi thiết lập SSH không cần mật khẩu cho người dùng sudo có tên "vagrant":

(ansible-host)$ whoami

vagrant

(ansible-host)$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

(ansible-host)$ ls -al ~/.ssh/

-rw-------. 1 vagrant vagrant 1679 Jan 14 03:45 id_rsa

-rw-r--r--. 1 vagrant vagrant  392 Jan 14 03:45 id_rsa.pub

(ansible-host)$ ssh-copy-id [email protected]

Nếu máy chủ đích không cho phép xác thực mật khẩu qua SSH, chỉ cần sao chép nội dung của khóa công khai SSH tại ~ / .ssh / id_rsa.pub vào máy chủ đích '~ / .ssh / allow_keys tập tin. Ví dụ:trên máy chủ Ansible, truy xuất nội dung khóa công khai:

(ansible-host)$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5MZjufN0OiKyKa2OG0EPBEF/w23FnOG2x8qpAaYYuqHlVc+ZyRugtGm+TdTJDfLA1Sr/rtZpXmPDuLUdlAvPmmwqIhgiatKiDw5t2adNUwME0sVgAlBv/KvbusTTdtpFQ1o+Z9CltGiENDCFytr2nVeBFxImoZu2H0ilZed/1OY2SZejUviXTQ0Dh0QYdIeiQHkMf1CiV2sNYs8j8+ULV26OOKCd8c1h1O9M5Dr4P6kt8E1lVSl9hbd4EOHQmeZ3R3va5zMesLk1A+iadIGJCJNCVOA2RpxDHmmaX28zQCwrpCliH00g9iCRixlK+cB39d1coUWVGy7SeaI8bzfv3 [email protected]

Kết nối với máy chủ đích và dán khóa công khai của máy chủ Ansible vào ~ / .ssh / allow_keys:

(target-host)$ whoami

root

(target-host)$ vi ~/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5MZjufN0OiKyKa2OG0EPBEF/w23FnOG2x8qpAaYYuqHlVc+ZyRugtGm+TdTJDfLA1Sr/rtZpXmPDuLUdlAvPmmwqIhgiatKiDw5t2adNUwME0sVgAlBv/KvbusTTdtpFQ1o+Z9CltGiENDCFytr2nVeBFxImoZu2H0ilZed/1OY2SZejUviXTQ0Dh0QYdIeiQHkMf1CiV2sNYs8j8+ULV26OOKCd8c1h1O9M5Dr4P6kt8E1lVSl9hbd4EOHQmeZ3R3va5zMesLk1A+iadIGJCJNCVOA2RpxDHmmaX28zQCwrpCliH00g9iCRixlK+cB39d1coUWVGy7SeaI8bzfv3 [email protected]

Bây giờ bạn có thể thử chạy lệnh từ xa từ máy chủ Ansible để xác minh và bạn sẽ không được nhắc với bất kỳ mật khẩu nào. Tại thời điểm này, SSH không mật khẩu của chúng tôi đã được định cấu hình.

Xác định Máy chủ Mục tiêu

Tiếp theo, chúng ta cần xác định máy chủ đích, máy chủ mà chúng ta muốn quản lý bằng Ansible. Dựa trên kiến ​​trúc của chúng tôi, chúng tôi sẽ triển khai chỉ một máy chủ MySQL là 192.168.0.221. Thêm các dòng sau vào / etc / ansible / hosts:

[db-mysql]

192.168.0.221

Ở trên chỉ đơn giản là chúng ta đã xác định một nhóm có tên "db-mysql", sẽ là định danh khi chúng ta tham chiếu đến máy chủ đích trong Ansible playbook. Chúng tôi cũng có thể liệt kê tất cả các địa chỉ IP hoặc tên máy chủ của các máy chủ đích trong nhóm này. Tại thời điểm này, chúng tôi chỉ có một máy chủ MySQL để triển khai, do đó chỉ có một mục nhập ở đó. Bạn cũng có thể chỉ định bất kỳ quy tắc đối sánh nào để so khớp các máy chủ trong một nhóm, ví dụ:

[db-mysql]

192.168.0.[221:223]

Định nghĩa trên có nghĩa là chúng ta đang có 3 máy chủ trong chính nhóm này với các địa chỉ IP sau:

  • 192.168.0.221
  • 192.168.0.222
  • 192.168.0.223

Có rất nhiều cách và quy tắc để đối sánh và nhóm các máy chủ mục tiêu như được hiển thị trong hướng dẫn khoảng không quảng cáo Ansible.

Chọn một vai trò có thể phục hồi

Để cho Ansible biết những gì sẽ triển khai, chúng ta cần xác định các bước triển khai trong một tệp có định dạng YML được gọi là playbook. Như bạn có thể biết, việc cài đặt một máy chủ MySQL hoàn chỉnh yêu cầu nhiều bước để đáp ứng tất cả các phụ thuộc MySQL, cấu hình sau cài đặt, tạo người dùng và lược đồ, v.v. Ansible đã cung cấp một số mô-đun MySQL có thể giúp chúng tôi, nhưng chúng tôi vẫn phải viết một playbook cho các bước triển khai.

Để đơn giản hóa các bước triển khai, chúng ta có thể sử dụng các vai trò Ansible hiện có. Ansible role là một thành phần độc lập cho phép sử dụng lại các bước cấu hình chung. Một vai trò Ansible phải được sử dụng trong playbook. Có một số vai trò Ansible của MySQL có sẵn trong Ansible Galaxy, một kho lưu trữ cho các vai trò Ansible có sẵn để đưa trực tiếp vào sách vở của bạn.

Nếu bạn tra cứu "mysql", bạn sẽ nhận được nhiều vai trò Ansible cho MySQL:

Chúng tôi sẽ sử dụng một cái tên phổ biến nhất có tên là "mysql" của geerlingguy. Bạn có thể chọn sử dụng các vai trò khác nhưng hầu hết vai trò được tải xuống nhiều nhất có xu hướng dành cho mục đích chung thường hoạt động tốt trong hầu hết các trường hợp.

Trên máy chủ Ansible, hãy chạy lệnh sau để tải xuống vai trò Ansible:

(ansible-host)$ ansible-galaxy install geerlingguy.mysql

Vai trò sẽ được tải xuống ~ / .ansible / role / geerlingguy.mysql / của người dùng hiện tại.

Viết Playbook Ansible

Bằng cách xem Readme của vai trò Ansible, chúng ta có thể theo dõi playbook mẫu đang được cung cấp. Đầu tiên, tạo một tệp playbook có tên là deploy-mysql.yml và thêm các dòng sau:

(ansible-host)$ vim ~/deploy-mysql.yml

- hosts: db-mysql

  become: yes

  vars_files:

    - vars/main.yml

  roles:

    - { role: geerlingguy.mysql }

Trong các dòng trên, chúng tôi xác định máy chủ đích là tất cả các máy chủ trong các mục db-mysql trong / etc / ansible / hosts. Dòng tiếp theo (trở thành) yêu cầu Ansible thực thi playbook với tư cách là người dùng root, điều này cần thiết cho vai trò (nó được nêu ở đó trong tệp Readme). Tiếp theo, chúng tôi xác định vị trí của tệp biến (var_files) nằm tại vars / main.yml, liên quan đến đường dẫn playbook.

Hãy tạo thư mục và tệp biến và chỉ định dòng sau:

(ansible-host)$ mkdir vars

(ansible-host)$ vim vars/main.yml

mysql_root_password: "theR00tP455w0rd"

Để biết thêm thông tin, hãy xem phần Biến vai trò trong tệp Readme của vai trò này.

Bắt đầu Triển khai

Bây giờ chúng ta đã sẵn sàng để bắt đầu triển khai MySQL. Sử dụng lệnh ansible-playbook để thực thi các định nghĩa playbook của chúng tôi:

(ansible-host)$ ansible-playbook deploy-mysql.yml

Bạn sẽ thấy một loạt các dòng xuất hiện trong đầu ra. Tập trung vào dòng cuối cùng nơi nó tóm tắt việc triển khai:

PLAY RECAP ***************************************************************************************************************************************

192.168.0.221              : ok=36 changed=8 unreachable=0    failed=0 skipped=16 rescued=0 ignored=0

Nếu mọi thứ chuyển sang màu xanh lục và OK, bạn có thể xác minh trên máy chủ cơ sở dữ liệu rằng máy chủ MySQL của chúng tôi đã được cài đặt và đang chạy:

(mysql-host)$ rpm -qa | grep -i maria

mariadb-server-5.5.64-1.el7.x86_64

mariadb-libs-5.5.64-1.el7.x86_64

mariadb-5.5.64-1.el7.x86_64



(mysql-host)$ mysqladmin -uroot -p ping

Enter password:

mysqld is alive

Như bạn có thể thấy ở trên, đối với CentOS 7, cài đặt MySQL mặc định là MariaDB 5.5 như một phần của kho lưu trữ gói tiêu chuẩn. Tại thời điểm này, việc triển khai của chúng tôi được coi là hoàn tất, tuy nhiên, chúng tôi muốn tùy chỉnh thêm việc triển khai của mình như được hiển thị trong các phần tiếp theo.

Tùy chỉnh Triển khai

Định nghĩa đơn giản nhất trong playbook cung cấp cho chúng ta một cài đặt rất cơ bản và sử dụng tất cả các tùy chọn cấu hình mặc định. Chúng tôi có thể tùy chỉnh thêm cài đặt MySQL bằng cách mở rộng / sửa đổi / gắn thêm playbook để thực hiện những việc sau:

  • sửa đổi các tùy chọn cấu hình MySQL
  • thêm người dùng cơ sở dữ liệu
  • thêm giản đồ cơ sở dữ liệu
  • định cấu hình các đặc quyền của người dùng
  • định cấu hình sao chép MySQL
  • cài đặt MySQL từ các nhà cung cấp khác
  • nhập tệp cấu hình MySQL tùy chỉnh

Cài đặt MySQL từ kho lưu trữ Oracle

Theo mặc định, role sẽ cài đặt gói MySQL mặc định đi kèm với bản phân phối hệ điều hành. Đối với CentOS 7, bạn sẽ được cài đặt MariaDB 5.5 theo mặc định. Giả sử chúng ta muốn cài đặt MySQL từ một nhà cung cấp khác, chúng ta có thể mở rộng playbook với pre_tasks, một tác vụ mà Ansible thực thi trước khi thực hiện bất kỳ tác vụ nào được đề cập trong bất kỳ tệp .yml nào, như được hiển thị trong ví dụ sau:

(ansible-host)$ vim deploy-mysql.yml

- hosts: db-mysql

  become: yes

  vars_files:

    - vars/main.yml

  roles:

    - { role: geerlingguy.mysql }

  pre_tasks:

    - name: Install the MySQL repo.

      yum:

        name: http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

        state: present

      when: ansible_os_family == "RedHat"

    - name: Override variables for MySQL (RedHat).

      set_fact:

        mysql_daemon: mysqld

        mysql_packages: ['mysql-server']

        mysql_log_error: /var/lib/mysql/error.log

        mysql_syslog_tag: mysqld

        mysql_pid_file: /var/run/mysqld/mysqld.pid

        mysql_socket: /var/lib/mysql/mysql.sock

      when: ansible_os_family == "RedHat"

Thực thi playbook:

(ansible-host)$ ansible-playbook deploy-mysql.yml

Ở trên sẽ cài đặt MySQL từ kho lưu trữ Oracle. Phiên bản mặc định bạn sẽ nhận được là MySQL 5.6. Việc thực thi playbook ở trên trên máy chủ đích đã chạy phiên bản MySQL / MariaDB cũ hơn có thể sẽ không thành công do không tương thích.

Tạo Cơ sở dữ liệu MySQL và Người dùng

Bên trong vars / main.yml, chúng tôi có thể xác định cơ sở dữ liệu MySQL và người dùng mà chúng tôi muốn Ansible định cấu hình trên máy chủ MySQL của chúng tôi bằng cách sử dụng mô-đun mysql_database và mysql_users, ngay sau định nghĩa trước của chúng tôi về mysql_root_password:

(ansible-host)$ vim vars/main.yml

mysql_root_password: "theR00tP455w0rd"

mysql_databases:

  - name: myshop

    encoding: latin1

    collation: latin1_general_ci

  - name: sysbench

    encoding: latin1

    collation: latin1_general_ci

mysql_users:

  - name: myshop_user

    host: "%"

    password: mySh0pPassw0rd

    priv: "myshop.*:ALL"

  - name: sysbench_user

    host: "192.168.0.%"

    password: sysBenchPassw0rd

    priv: "sysbench.*:ALL"

Định nghĩa hướng dẫn Ansible tạo hai cơ sở dữ liệu, "myshop" và "sysbench", theo sau người dùng MySQL tương ứng của nó với các đặc quyền thích hợp, máy chủ được phép và mật khẩu.

Thực thi lại playbook để áp dụng thay đổi vào máy chủ MySQL của chúng tôi:

(ansible-host)$ ansible-playbook deploy-mysql.yml

Lần này, Ansible sẽ chọn tất cả các thay đổi mà chúng tôi đã thực hiện trong vars / main.yml để áp dụng cho máy chủ MySQL của chúng tôi. Chúng tôi có thể xác minh trong máy chủ MySQL bằng các lệnh sau:

(mysql-host)$ mysql -uroot -p -e 'SHOW DATABASES'

Enter password:

+--------------------+

| Database           |

+--------------------+

| information_schema |

| myshop             |

| mysql              |

| performance_schema |

| sysbench           |

+--------------------+

(mysql-host)$ mysql -uroot -p -e 'SHOW GRANTS FOR [email protected]"192.168.0.%"'

Enter password:

+------------------------------------------------------------------------------------------------------------------------+

| Grants for [email protected]%                                                                                   |

+------------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'sysbench_user'@'192.168.0.%' IDENTIFIED BY PASSWORD '*4AC2E8AD02562E8FAAF5A958DC2AEA4C47451B5C' |

| GRANT ALL PRIVILEGES ON `sysbench`.* TO 'sysbench_user'@'192.168.0.%'                                                  |

+------------------------------------------------------------------------------------------------------------------------+

Bật nhật ký truy vấn chậm

Vai trò này hỗ trợ bật nhật ký truy vấn chậm MySQL, chúng ta có thể xác định vị trí của tệp nhật ký cũng như thời gian truy vấn chậm. Thêm các biến cần thiết bên trong tệp vars / main.yml:

mysql_root_password: "theR00tP455w0rd"

mysql_databases:

  - name: example_db

    encoding: latin1

    collation: latin1_general_ci

  - name: sysbench

    encoding: latin1

    collation: latin1_general_ci

mysql_users:

  - name: example_user

    host: "%"

    password: similarly-secure-password

    priv: "example_db.*:ALL"

  - name: sysbench_user

    host: "192.168.0.%"

    password: sysBenchPassw0rd

    priv: "sysbench.*:ALL"

mysql_slow_query_log_enabled: true

mysql_slow_query_log_file: 'slow_query.log'

mysql_slow_query_time: '5.000000'

Chạy lại playbook để áp dụng các thay đổi:

(ansible-host)$ ansible-playbook deploy-mysql.yml

Playbook sẽ thực hiện các thay đổi cần thiết đối với các tùy chọn liên quan đến truy vấn chậm MySQL và tự động khởi động lại máy chủ MySQL để tải các cấu hình mới. Sau đó, chúng tôi có thể xác minh xem các tùy chọn cấu hình mới có được tải đúng trên máy chủ MySQL hay không:

(mysql-host)$ mysql -uroot -p -e 'SELECT @@slow_query_log, @@slow_query_log_file, @@long_query_time'

+------------------+-----------------------+-------------------+

| @@slow_query_log | @@slow_query_log_file | @@long_query_time |

+------------------+-----------------------+-------------------+

|                1 | slow_query.log        | 5.000000 |

+------------------+-----------------------+-------------------+

Bao gồm Tệp Cấu hình MySQL Tùy chỉnh

Biến vai trò có thể kiểm soát được và biến MySQL là hai thứ khác nhau. Tác giả của vai trò này đã tạo ra một số biến liên quan đến MySQL có thể được biểu diễn bằng các biến vai trò Ansible. Lấy từ tệp Readme, đây là một số trong số chúng:

mysql_port: "3306"

mysql_bind_address: '0.0.0.0'

mysql_datadir: /var/lib/mysql

mysql_socket: *default value depends on OS*

mysql_pid_file: *default value depends on OS*

mysql_log_file_group: mysql *adm on Debian*

mysql_log: ""

mysql_log_error: *default value depends on OS*

mysql_syslog_tag: *default value depends on OS*

Nếu cấu hình được tạo không đáp ứng yêu cầu MySQL của chúng tôi, chúng tôi có thể đưa các tệp cấu hình MySQL tùy chỉnh vào triển khai bằng cách sử dụng biến mysql_config_include_files. Nó chấp nhận một mảng giá trị được phân tách bằng dấu phẩy, với "src" làm tiền tố cho đường dẫn thực trên máy chủ Ansible.

Trước hết, chúng ta phải chuẩn bị các tệp cấu hình tùy chỉnh trên máy chủ Ansible. Tạo một thư mục và một tệp cấu hình MySQL đơn giản:

(ansible-host)$ mkdir /root/custom-config/

(ansible-host)$ vim /root/custom-config/my-severalnines.cnf

[mysqld]

max_connections=250

log_bin=binlog

expire_logs_days=7

Giả sử chúng ta có một tệp cấu hình khác dành riêng cho cấu hình mysqldump:

(ansible-host)$ vim /root/custom-config/mysqldump.cnf

[mysqldump]

max_allowed_packet=128M

Để nhập các tệp cấu hình này vào triển khai của chúng tôi, hãy xác định chúng trong mảng mysql_config_include_files trong tệp vars / main.yml:

mysql_root_password: "theR00tP455w0rd"

mysql_databases:

  - name: example_db

    encoding: latin1

    collation: latin1_general_ci

  - name: sysbench

    encoding: latin1

    collation: latin1_general_ci

mysql_users:

  - name: example_user

    host: "%"

    password: similarly-secure-password

    priv: "example_db.*:ALL"

  - name: sysbench_user

    host: "192.168.0.%"

    password: sysBenchPassw0rd

    priv: "sysbench.*:ALL"

mysql_slow_query_log_enabled: true

mysql_slow_query_log_file: slow_query.log

mysql_slow_query_time: 5

mysql_config_include_files: [

  src: '/root/custom-config/my-severalnines.cnf',

  src: '/root/custom-config/mysqldump.cnf'

]

Lưu ý rằng /root/custom-config/mysqld-severalnines.cnf và /root/custom-config/mysqldump.cnf tồn tại bên trong máy chủ Ansible.

Chạy lại playbook:

(ansible-host)$ ansible-playbook deploy-mysql.yml

Playbook sẽ nhập các tệp cấu hình đó và đưa chúng vào thư mục bao gồm (tùy thuộc vào hệ điều hành) là /etc/my.cnf.d/ dành cho CentOS 7. Playbook sẽ tự động khởi động lại Máy chủ MySQL để tải các tùy chọn cấu hình mới. Sau đó, chúng tôi có thể xác minh xem các tùy chọn cấu hình mới có được tải chính xác hay không:

(mysql-host)$ mysql -uroot -p -e 'select @@max_connections'

250

(mysql-host)$ mysqldump --help | grep ^max-allowed-packet

max-allowed-packet                134217728

Kết luận

Ansible có thể được sử dụng để tự động hóa việc triển khai cơ sở dữ liệu và quản lý cấu hình với một chút kiến ​​thức về kịch bản. Trong khi đó, ClusterControl sử dụng cách tiếp cận SSH không cần mật khẩu tương tự để triển khai, giám sát, quản lý và mở rộng cụm cơ sở dữ liệu của bạn từ A đến Z, với giao diện người dùng và không cần thêm kỹ năng để đạt được kết quả tương tự.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mẹo và thủ thuật để triển khai điều khiển truy cập dựa trên vai trò cơ sở dữ liệu cho MariaDB

  2. Mẹo để theo dõi MariaDB Cluster

  3. Bay cao hơn trong đám mây với MariaDB SkySQL

  4. Xử lý các giao dịch lớn với tính năng sao chép trực tuyến và MariaDB 10.4

  5. Cách hoạt động của REGEXP trong MariaDB