MariaDB在Ubuntu上的高可用性如何实现
导读:MariaDB在Ubuntu上的高可用性实现方案 1. 使用MariaDB Galera Cluster(多主同步集群) MariaDB Galera Cluster是多主同步复制解决方案,支持任意节点读写、自动数据同步、故障自动转移和强一...
MariaDB在Ubuntu上的高可用性实现方案
1. 使用MariaDB Galera Cluster(多主同步集群)
MariaDB Galera Cluster是多主同步复制解决方案,支持任意节点读写、自动数据同步、故障自动转移和强一致性,是企业级高可用的主流选择。
前提条件:至少3台Ubuntu服务器(建议奇数节点,如3/5台),MariaDB版本≥10.1,Galera库版本匹配。
配置步骤:
- 安装MariaDB与Galera插件:在所有节点执行
sudo apt update & & sudo apt install mariadb-server mariadb-client galera-3,安装MariaDB及Galera依赖。 - 配置Galera参数:编辑每个节点的
/etc/mysql/conf.d/galera.cnf(或/etc/mysql/mariadb.conf.d/50-server.cnf),添加以下核心配置:[mysqld] bind-address = 0.0.0.0 # 允许远程连接 wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera库路径 wsrep_cluster_address = gcomm://< node1_ip> ,< node2_ip> ,< node3_ip> # 所有节点IP列表 wsrep_node_address = < current_node_ip> # 当前节点IP wsrep_node_name = < node1> # 当前节点名称(自定义) wsrep_sst_method = xtrabackup-v2 # 数据同步方法(推荐xtrabackup) wsrep_sst_auth = sst_user:sst_password # SST用户及密码(需提前创建) - 初始化集群:在第一个节点上执行以下命令创建SST用户并启动集群:
然后重启MariaDB服务:CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password'; GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'%'; FLUSH PRIVILEGES;sudo systemctl restart mariadb。 - 加入其他节点:在其他节点上修改
wsrep_cluster_address为完整节点列表,重启MariaDB即可自动加入集群。 - 验证状态:在任意节点执行
SHOW STATUS LIKE 'wsrep_cluster_size';,若返回值等于节点数量(如3),则集群部署成功。
2. 使用MariaDB主从复制(Master-Slave)
主从复制是异步多主/单主解决方案,适合读扩展和基础高可用(需额外工具实现故障转移)。
配置步骤:
- 配置主服务器(Master):
编辑/etc/mysql/mysql.conf.d/mysqld.cnf,添加:重启MariaDB:[mysqld] server-id = 1 # 唯一ID(主从不同) log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志 auto_increment_increment = 2 # 主从ID增量(节点数) auto_increment_offset = 1 # 主节点起始IDsudo systemctl restart mariadb。
创建复制用户并授权:获取主服务器状态(记录CREATE USER 'replicator'@'%' IDENTIFIED BY 'replicator_password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;File和Position,后续从服务器需要):SHOW MASTER STATUS; - 配置从服务器(Slave):
编辑/etc/mysql/mysql.conf.d/mysqld.cnf,添加:重启MariaDB:[mysqld] server-id = 2 # 唯一ID relay_log = /var/log/mysql/mysql-relay-bin.log # 中继日志 read_only = 1 # 设置为只读(可选)sudo systemctl restart mariadb。
配置主从同步:CHANGE MASTER TO MASTER_HOST = 'master_ip', MASTER_USER = 'replicator', MASTER_PASSWORD = 'replicator_password', MASTER_LOG_FILE = 'mysql-bin.000001', # 主服务器记录的File MASTER_LOG_POS = 154; # 主服务器记录的Position START SLAVE; - 验证复制状态:在从服务器执行
SHOW SLAVE STATUS\G,检查Slave_IO_Running和Slave_SQL_Running是否为Yes,表示复制正常。
3. 使用Keepalived+LVS(负载均衡+故障转移)
Keepalived通过VRRP协议实现虚拟IP(VIP)漂移,LVS(Linux Virtual Server)实现负载均衡,组合方案可提升数据库的可用性和并发处理能力。
配置步骤:
- 安装软件:在所有节点执行
sudo apt update & & sudo apt install keepalived lvs-tools。 - 配置Keepalived:编辑主节点的
/etc/keepalived/keepalived.conf:
备节点将vrrp_instance VI_1 { state MASTER # 主节点为MASTER,备节点为BACKUP interface eth0 # 网卡名称(ifconfig查看) virtual_router_id = 51 # 虚拟路由ID(同一网络唯一) priority = 100 # 主节点优先级(高于备节点,如备节点设为90) advert_int = 1 # 心跳间隔(秒) authentication { auth_type PASS auth_pass 1234 # 心跳认证密码 } virtual_ipaddress { 192.168.1.100 # 虚拟IP(VIP,客户端连接此IP) } }state改为BACKUP,priority改为更低值(如90)。 - 配置LVS:使用
ipvsadm配置负载均衡规则(以轮询为例):sudo ipvsadm -A -t 192.168.1.100:3306 -s rr # 添加虚拟服务(VIP:端口,轮询算法) sudo ipvsadm -a -t 192.168.1.100:3306 -r master_ip:3306 -m # 添加主节点真实IP(masquerade模式) sudo ipvsadm -a -t 192.168.1.100:3306 -r slave_ip:3306 -m # 添加从节点真实IP - 启动服务:在所有节点执行
sudo systemctl start keepalived,VIP将绑定到主节点。若主节点故障,VIP自动漂移至备节点,实现故障转移。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MariaDB在Ubuntu上的高可用性如何实现
本文地址: https://pptw.com/jishu/745200.html
