Làm quen với MariaDB Galera Cluster

MariaDB Galera Cluster là hệ thống cluser cho phép nhiều primary node CSDL MariaDB đồng thời, tức bạn có thể thực hiện lệnh write trên node bất kỳ và dữ liệu được đồng bộ cho các node khác trong cluster. Nó chỉ chính thức hỗ trợ hoạt động trên môi trường Linux và InnoDB storage engine.

Tính năng

Một số từ ngữ kỹ thuật tiếng Anh vui lòng xem bài gốc tại đây

Một số hạn chế

Cài đặt mô hình lab với docker-compose

Dưới đây là file docker-compose.yml để bạn có thể 1 phát ăn ngay, dựng hệ thống trong phút mốt trên 1 máy chủ và trải nghiệm tính năng của MariaDB Galera Cluster.

version: '2.1'

services:
  # master/bootstrap node
  mariadb-galera-1:
    image: docker.io/bitnami/mariadb-galera:10.7
    ports:
      - '3391:3306'
      #- '4444:4444'
      #- '4567:4567'
      #- '4568:4568'
    volumes:
      - 'mariadb_galera_data_1:/bitnami/mariadb'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_GALERA_CLUSTER_NAME=mariadb-cluster
      - MARIADB_GALERA_CLUSTER_BOOTSTRAP=yes
      - MARIADB_GALERA_FORCE_SAFETOBOOTSTRAP=yes
      # MARIADB_GALERA_CLUSTER_ADDRESS point to bootstrap node
      - MARIADB_GALERA_CLUSTER_ADDRESS=gcomm://mariadb-galera-1:4567,mariadb-galera-2:4567,mariadb-galera-3:4567,0.0.0.0:4567
      - MARIADB_EXTRA_FLAGS=--max-connect-errors=1000 --max_connections=155
      - MARIADB_GALERA_MARIABACKUP_USER=mariadb_backup_user
      - MARIADB_GALERA_MARIABACKUP_PASSWORD=backup_pwd
      - MARIADB_ROOT_PASSWORD=root_password
      - MARIADB_REPLICATION_USER=rep_user
      - MARIADB_REPLICATION_PASSWORD=rep_pwd
    healthcheck:
      test: ['CMD', '/opt/bitnami/scripts/mariadb-galera/healthcheck.sh']
      interval: 15s
      timeout: 5s
      retries: 6
  # slave node
  mariadb-galera-2:
    image: docker.io/bitnami/mariadb-galera:10.7
    ports:
      - '3392:3306'
      #- '4444:4444'
      #- '4567:4567'
      #- '4568:4568'
    volumes:
      - 'mariadb_galera_data_2:/bitnami/mariadb'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_GALERA_CLUSTER_NAME=mariadb-cluster
      #- MARIADB_GALERA_CLUSTER_BOOTSTRAP=yes
      #- MARIADB_GALERA_FORCE_SAFETOBOOTSTRAP=yes
      # MARIADB_GALERA_CLUSTER_ADDRESS point to bootstrap node
      - MARIADB_GALERA_CLUSTER_ADDRESS=gcomm://mariadb-galera-1:4567,mariadb-galera-2:4567,mariadb-galera-3:4567,0.0.0.0:4567
      - MARIADB_EXTRA_FLAGS=--max-connect-errors=1000 --max_connections=155
      - MARIADB_GALERA_MARIABACKUP_USER=mariadb_backup_user
      - MARIADB_GALERA_MARIABACKUP_PASSWORD=backup_pwd
      - MARIADB_ROOT_PASSWORD=root_password
      - MARIADB_REPLICATION_USER=rep_user
      - MARIADB_REPLICATION_PASSWORD=rep_pwd
    healthcheck:
      test: ['CMD', '/opt/bitnami/scripts/mariadb-galera/healthcheck.sh']
      interval: 15s
      timeout: 5s
      retries: 6
  mariadb-galera-3:
    image: docker.io/bitnami/mariadb-galera:10.7
    ports:
      - '3393:3306'
      #- '4444:4444'
      #- '4567:4567'
      #- '4568:4568'
    volumes:
      - 'mariadb_galera_data_3:/bitnami/mariadb'
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_GALERA_CLUSTER_NAME=mariadb-cluster
        # MARIADB_GALERA_CLUSTER_ADDRESS point to bootstrap node
      - MARIADB_GALERA_CLUSTER_ADDRESS=gcomm://mariadb-galera-1:4567,mariadb-galera-2:4567,mariadb-galera-3:4567,0.0.0.0:4567
      - MARIADB_EXTRA_FLAGS=--max-connect-errors=1000 --max_connections=155
      - MARIADB_GALERA_MARIABACKUP_USER=mariadb_backup_user
      - MARIADB_GALERA_MARIABACKUP_PASSWORD=backup_pwd
      - MARIADB_ROOT_PASSWORD=root_password
      - MARIADB_REPLICATION_USER=rep_user
      - MARIADB_REPLICATION_PASSWORD=rep_pwd
    healthcheck:
      test: ['CMD', '/opt/bitnami/scripts/mariadb-galera/healthcheck.sh']
      interval: 15s
      timeout: 5s
      retries: 6

volumes:
  mariadb_galera_data_1:
    driver: local
  mariadb_galera_data_2:
    driver: local
  mariadb_galera_data_3:
    driver: local

Lưu lại và chạy lệnh docker-compose up -d để build và start các container. Chúng ta sẽ có 3 container có tên lần lượt là:

Các tham số chính

Quản lý MariaDB Galera Cluster, bạn cần chú ý 1 số tham số sau để có thể xử lý khi có vấn đề (ví dụ: khi node giữ vai trò cluster bootstrap bị down)

Tài liệu tham khảo

Tags:
#docker #cluster #docker-compose #mariadb #High Availability #Galera