温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker怎么搭建mariadb集群

发布时间:2021-07-29 22:34:45 阅读:310 作者:chen 栏目:云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

Docker怎么搭建MariaDB集群

目录

  1. 引言
  2. MariaDB集群概述
  3. Docker基础
  4. 搭建MariaDB Galera Cluster
  5. 搭建MariaDB Replication
  6. 管理与维护
  7. 常见问题与解决方案
  8. 总结

引言

在现代应用开发中,数据库的高可用性和可扩展性是至关重要的。MariaDB作为MySQL的一个流行分支,提供了多种集群解决方案,如Galera Cluster和Replication,以满足不同的需求。Docker作为一种轻量级的容器化技术,能够简化数据库集群的部署和管理。本文将详细介绍如何使用Docker搭建MariaDB集群,包括Galera Cluster和Replication两种方式。

MariaDB集群概述

MariaDB Galera Cluster

MariaDB Galera Cluster是一种基于同步复制的多主集群解决方案。它允许所有节点同时读写数据,并且数据在所有节点之间实时同步。Galera Cluster的主要特点包括:

  • 多主架构:所有节点都可以处理写操作。
  • 同步复制:数据在所有节点之间实时同步,确保数据一致性。
  • 自动故障转移:当某个节点失效时,集群会自动切换到其他节点。

MariaDB Replication

MariaDB Replication是一种基于异步复制的主从架构。它允许一个主节点处理写操作,并将数据异步复制到一个或多个从节点。Replication的主要特点包括:

  • 主从架构:主节点处理写操作,从节点处理读操作。
  • 异步复制:数据从主节点异步复制到从节点,可能存在一定的延迟。
  • 读写分离:可以通过从节点分担读负载,提高系统性能。

Docker基础

Docker简介

Docker是一种开源的容器化平台,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。Docker的主要优势包括:

  • 轻量级:容器共享宿主机的内核,资源占用少。
  • 可移植性:容器可以在任何支持Docker的环境中运行。
  • 隔离性:每个容器都有独立的文件系统、网络和进程空间。

Docker安装

在开始搭建MariaDB集群之前,首先需要在所有节点上安装Docker。以下是在Ubuntu系统上安装Docker的步骤:

# 更新包索引
sudo apt-get update

# 安装必要的依赖包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加Docker仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 更新包索引
sudo apt-get update

# 安装Docker CE
sudo apt-get install docker-ce

# 启动Docker服务
sudo systemctl start docker

# 设置Docker开机自启
sudo systemctl enable docker

Docker常用命令

以下是一些常用的Docker命令,用于管理和操作容器:

  • 查看Docker版本docker --version
  • 查看所有容器docker ps -a
  • 启动容器docker start <container_id>
  • 停止容器docker stop <container_id>
  • 删除容器docker rm <container_id>
  • 查看容器日志docker logs <container_id>
  • 进入容器docker exec -it <container_id> /bin/bash

搭建MariaDB Galera Cluster

准备工作

在搭建MariaDB Galera Cluster之前,需要准备以下内容:

  1. 多台服务器:至少需要三台服务器,以确保集群的高可用性。
  2. Docker环境:在所有服务器上安装Docker。
  3. MariaDB镜像:使用官方的MariaDB镜像。

创建Docker网络

为了确保集群节点之间的通信,首先需要创建一个Docker网络:

docker network create galera-network

启动MariaDB Galera Cluster节点

在每个节点上启动MariaDB容器,并配置Galera Cluster参数。以下是在第一个节点上启动容器的示例:

docker run -d \
  --name mariadb-node1 \
  --network galera-network \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e GALERA_CLUSTER_NAME=my_galera_cluster \
  -e GALERA_NODE_NAME=node1 \
  -e GALERA_WSREP_CLUSTER_ADDRESS=gcomm:// \
  -p 3306:3306 \
  mariadb:10.5

在第二个和第三个节点上启动容器时,需要指定GALERA_WSREP_CLUSTER_ADDRESS为第一个节点的地址:

docker run -d \
  --name mariadb-node2 \
  --network galera-network \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e GALERA_CLUSTER_NAME=my_galera_cluster \
  -e GALERA_NODE_NAME=node2 \
  -e GALERA_WSREP_CLUSTER_ADDRESS=gcomm://mariadb-node1 \
  -p 3307:3306 \
  mariadb:10.5

docker run -d \
  --name mariadb-node3 \
  --network galera-network \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e GALERA_CLUSTER_NAME=my_galera_cluster \
  -e GALERA_NODE_NAME=node3 \
  -e GALERA_WSREP_CLUSTER_ADDRESS=gcomm://mariadb-node1 \
  -p 3308:3306 \
  mariadb:10.5

配置Galera Cluster

在每个节点的MariaDB配置文件中,添加以下Galera Cluster配置:

[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name=my_galera_cluster
wsrep_cluster_address=gcomm://mariadb-node1,mariadb-node2,mariadb-node3
wsrep_node_name=node1
wsrep_node_address=172.18.0.2
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

验证集群状态

在所有节点启动后,可以通过以下命令验证集群状态:

docker exec -it mariadb-node1 mysql -uroot -pmy-secret-pw -e "SHOW STATUS LIKE 'wsrep_cluster_size';"

输出应显示集群中有三个节点:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

搭建MariaDB Replication

准备工作

在搭建MariaDB Replication之前,需要准备以下内容:

  1. 两台服务器:一台作为主节点,另一台作为从节点。
  2. Docker环境:在两台服务器上安装Docker。
  3. MariaDB镜像:使用官方的MariaDB镜像。

创建Docker网络

为了确保主从节点之间的通信,首先需要创建一个Docker网络:

docker network create replication-network

启动MariaDB主从节点

在主节点上启动MariaDB容器:

docker run -d \
  --name mariadb-master \
  --network replication-network \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -p 3306:3306 \
  mariadb:10.5

在从节点上启动MariaDB容器:

docker run -d \
  --name mariadb-slave \
  --network replication-network \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -p 3307:3306 \
  mariadb:10.5

配置主从复制

在主节点上,配置主从复制:

docker exec -it mariadb-master mysql -uroot -pmy-secret-pw -e "CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';"
docker exec -it mariadb-master mysql -uroot -pmy-secret-pw -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"
docker exec -it mariadb-master mysql -uroot -pmy-secret-pw -e "FLUSH PRIVILEGES;"
docker exec -it mariadb-master mysql -uroot -pmy-secret-pw -e "SHOW MASTER STATUS;"

记录FilePosition的值,用于从节点的配置。

在从节点上,配置主从复制:

docker exec -it mariadb-slave mysql -uroot -pmy-secret-pw -e "CHANGE MASTER TO MASTER_HOST='mariadb-master', MASTER_USER='repl', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='<File>', MASTER_LOG_POS=<Position>;"
docker exec -it mariadb-slave mysql -uroot -pmy-secret-pw -e "START SLAVE;"

验证复制状态

在从节点上,可以通过以下命令验证复制状态:

docker exec -it mariadb-slave mysql -uroot -pmy-secret-pw -e "SHOW SLAVE STATUS\G;"

输出中的Slave_IO_RunningSlave_SQL_Running应显示为Yes,表示复制已成功启动。

管理与维护

集群管理

在MariaDB集群中,管理节点和监控集群状态是非常重要的。以下是一些常用的管理命令:

  • 查看集群状态SHOW STATUS LIKE 'wsrep%';
  • 查看复制状态SHOW SLAVE STATUS\G;
  • 添加新节点:在Galera Cluster中,可以通过启动新的容器并加入现有集群来扩展集群。
  • 移除节点:在Galera Cluster中,可以通过停止容器并从集群中移除节点来缩小集群。

数据备份与恢复

在MariaDB集群中,定期备份数据是确保数据安全的重要措施。以下是一些常用的备份和恢复方法:

  • 使用mysqldump备份mysqldump -u root -pmy-secret-pw --all-databases > backup.sql
  • 使用xtrabackup备份xtrabackup --backup --user=root --password=my-secret-pw --target-dir=/backup
  • 恢复备份mysql -u root -pmy-secret-pw < backup.sql

监控与日志

在MariaDB集群中,监控和日志记录是确保系统稳定运行的重要手段。以下是一些常用的监控和日志工具:

  • Prometheus:用于监控集群的性能指标。
  • Grafana:用于可视化监控数据。
  • ELK Stack:用于集中管理和分析日志。

常见问题与解决方案

在搭建和管理MariaDB集群时,可能会遇到一些常见问题。以下是一些常见问题及其解决方案:

  1. 集群节点无法加入:检查网络配置和Galera Cluster参数,确保所有节点能够相互通信。
  2. 复制延迟:检查主从节点的网络连接和负载情况,优化查询性能。
  3. 数据不一致:在Galera Cluster中,确保所有节点的配置一致,避免数据冲突。

总结

通过Docker搭建MariaDB集群,可以简化部署和管理过程,提高系统的可用性和可扩展性。本文详细介绍了如何使用Docker搭建MariaDB Galera Cluster和Replication,并提供了相关的配置和管理方法。希望本文能够帮助读者更好地理解和应用MariaDB集群技术。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/wuzsheng/blog/3170993

AI

开发者交流群×