当前位置:首页 > Ubuntu > 正文

Ubuntu集群数据库部署(手把手教你搭建高可用分布式数据库环境)

在当今大数据和高并发应用场景下,单机数据库已经难以满足业务需求。通过在 Ubuntu 系统上搭建数据库集群,不仅可以提升系统性能,还能实现高可用性和容灾能力。本教程将从零开始,详细讲解如何在 Ubuntu 上部署一个高可用的数据库集群,即使是 Linux 新手也能轻松上手。

一、什么是 Ubuntu 集群数据库?

Ubuntu集群是指多台运行 Ubuntu 操作系统的服务器通过网络连接协同工作,形成一个逻辑上的整体。而数据库部署在这样的集群上,可以实现数据分片、负载均衡、故障转移等高级功能。

常见的开源方案包括 MySQL Group Replication、PostgreSQL with Patroni、MongoDB 副本集等。本文将以 MySQL Group Replication 为例,演示如何在三台 Ubuntu 22.04 服务器上搭建一个高可用数据库集群。

Ubuntu集群数据库部署(手把手教你搭建高可用分布式数据库环境) Ubuntu集群 数据库部署 高可用数据库 分布式数据库 第1张

二、准备工作

你需要准备以下资源:

  • 3 台 Ubuntu 22.04 服务器(可使用云服务器或本地虚拟机)
  • 每台服务器至少 2GB 内存、20GB 硬盘
  • 静态 IP 地址(例如:192.168.1.101、192.168.1.102、192.168.1.103)
  • root 权限或具有 sudo 权限的用户

三、配置主机名与 hosts 文件

为方便管理,先给每台服务器设置唯一主机名:

# 在 node1 上执行sudo hostnamectl set-hostname db-node1# 在 node2 上执行sudo hostnamectl set-hostname db-node2# 在 node3 上执行sudo hostnamectl set-hostname db-node3  

然后在每台服务器的 /etc/hosts 文件中添加以下内容:

192.168.1.101 db-node1192.168.1.102 db-node2192.168.1.103 db-node3  

四、安装 MySQL 8.0

在所有节点上执行以下命令安装 MySQL:

sudo apt updatesudo apt install -y mysql-server  

安装完成后,启动并启用 MySQL 服务:

sudo systemctl start mysqlsudo systemctl enable mysql  

五、配置 MySQL Group Replication

编辑 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 段落下添加以下通用配置(所有节点相同):

server_id = 1  # 每个节点必须不同(node2设为2,node3设为3)gtid_mode = ONenforce_gtid_consistency = ONbinlog_checksum = NONElog_bin = binloglog_slave_updates = ONbinlog_format = ROWmaster_info_repository = TABLErelay_log_info_repository = TABLEtransaction_write_set_extraction = XXHASH64loose-group_replication_group_name = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"loose-group_replication_start_on_boot = OFFloose-group_replication_local_address = "192.168.1.101:33061"  # 每个节点对应自己的IPloose-group_replication_group_seeds = "192.168.1.101:33061,192.168.1.102:33061,192.168.1.103:33061"loose-group_replication_bootstrap_group = OFFloose-group_replication_single_primary_mode = OFF  # 启用多主模式  

修改完成后,重启 MySQL:

sudo systemctl restart mysql  

六、初始化集群

首先在 db-node1 上创建复制用户并安装 Group Replication 插件:

sudo mysql -u root-- 在 MySQL 命令行中执行:SET SQL_LOG_BIN=0;CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPassword123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;SET SQL_LOG_BIN=1;INSTALL PLUGIN group_replication SONAME 'group_replication.so';CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='StrongPassword123!' FOR CHANNEL 'group_replication_recovery';SET GLOBAL group_replication_bootstrap_group=ON;START GROUP_REPLICATION;SET GLOBAL group_replication_bootstrap_group=OFF;  

然后在 db-node2db-node3 上执行(不设置 bootstrap):

sudo mysql -u root-- 创建用户(可选,若已同步则跳过)INSTALL PLUGIN group_replication SONAME 'group_replication.so';CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='StrongPassword123!' FOR CHANNEL 'group_replication_recovery';START GROUP_REPLICATION;  

七、验证集群状态

在任意节点执行以下 SQL 查询成员状态:

SELECT * FROM performance_schema.replication_group_members;  

如果看到三个节点状态均为 ONLINE,说明你的 高可用数据库 集群已成功部署!

八、总结

通过本教程,你已经掌握了在 Ubuntu 环境下搭建 分布式数据库 集群的基本方法。这种架构不仅提升了数据库的读写性能,还实现了自动故障转移,极大增强了系统的稳定性。

后续你可以结合 HAProxy 做负载均衡,或使用 Keepalived 实现 VIP 漂移,进一步优化你的 Ubuntu集群 数据库架构。

希望这篇面向初学者的指南能帮助你顺利迈出构建企业级数据库系统的第一步!