Docker部署MariaDB Galera Cluster

MariaDB Galera Cluster 是一种高可用性、可扩展的数据库解决方案,它允许多个MariaDB服务器实例在同一个集群中同步数据。本文将介绍如何使用Docker部署MariaDB Galera Cluster。

环境准备

在开始部署之前,请确保你已经安装了Docker和Docker Compose。可以通过以下命令检查Docker是否已经安装:

docker --version

如果未安装,可以通过官方网站下载并安装Docker。

创建Docker Compose文件

创建一个名为docker-compose.yml的文件,用于定义MariaDB Galera Cluster的配置。以下是一个基本的配置示例:

version: '3'
services:
  mariadb-node1:
    image: mariadb:10.4
    command: ["--server-id=1", "--log-bin=mysql-bin", "--binlog-format=row", "--wsrep_on=ON", "--wsrep_provider=/usr/lib/galera3/libgalera_smm.so", "--wsrep_cluster_name=mygalera", "--wsrep_cluster_address=gcomm://", "--bind-address=0.0.0.0"]
    volumes:
      - db-data1:/var/lib/mysql
    networks:
      - galera-network
    ports:
      - "3306:3306"

  mariadb-node2:
    image: mariadb:10.4
    command: ["--server-id=2", "--log-bin=mysql-bin", "--binlog-format=row", "--wsrep_on=ON", "--wsrep_provider=/usr/lib/galera3/libgalera_smm.so", "--wsrep_cluster_name=mygalera", "--wsrep_cluster_address=gcomm://mariadb-node1:4567", "--bind-address=0.0.0.0"]
    volumes:
      - db-data2:/var/lib/mysql
    networks:
      - galera-network
    ports:
      - "3307:3306"

networks:
  galera-network:
    driver: bridge

volumes:
  db-data1:
  db-data2:

启动MariaDB Galera Cluster

docker-compose.yml文件所在的目录下,执行以下命令启动MariaDB Galera Cluster:

docker-compose up -d

这将启动两个MariaDB节点,分别监听3306和3307端口。

检查集群状态

使用以下命令连接到任意一个MariaDB节点,并检查集群状态:

docker-compose exec mariadb-node1 mysql -uroot -p

在MariaDB命令行中,执行以下命令:

SHOW STATUS LIKE 'wsrep%';

这将显示Galera Cluster的状态信息。

测试数据同步

在第一个节点上创建一个数据库并插入一些数据:

CREATE DATABASE testdb;
USE testdb;
INSERT INTO testdb VALUES (1, 'Hello, World!');

切换到第二个节点,查询刚刚创建的数据库:

USE testdb;
SELECT * FROM testdb;

如果数据已经同步,你应该能够看到刚刚插入的数据。

状态图

以下是MariaDB Galera Cluster的状态图:

stateDiagram-v2
    [*] --> Starting: 启动
    Starting --> Running: 运行
    Running --> [*]: 关闭
    Running --> Error: 错误
    Error --> [*]: 重启

结语

通过本文的介绍,你应该已经了解了如何使用Docker部署MariaDB Galera Cluster。这种高可用性、可扩展的数据库解决方案可以帮助你构建更加稳定和可靠的应用程序。希望本文对你有所帮助。