Ubuntu如何实现MariaDB的负载均衡
导读:Ubuntu上实现MariaDB负载均衡的常见方法 1. 使用HAProxy(TCP/HTTP负载均衡器) HAProxy是Ubuntu上最常用的负载均衡工具之一,支持TCP模式(适用于MariaDB的3306端口),可实现请求的分发和故障...
Ubuntu上实现MariaDB负载均衡的常见方法
1. 使用HAProxy(TCP/HTTP负载均衡器)
HAProxy是Ubuntu上最常用的负载均衡工具之一,支持TCP模式(适用于MariaDB的3306端口),可实现请求的分发和故障转移。
- 安装HAProxy:通过APT包管理器安装,命令为
sudo apt update & & sudo apt install haproxy。 - 配置HAProxy:编辑
/etc/haproxy/haproxy.cfg文件,添加以下核心配置:global log /dev/log local0 log /dev/log local1 notice daemon defaults log global mode tcp option tcplog timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend mariadb_front bind *:3306 # 监听3306端口(MariaDB默认端口) default_backend mariadb_back backend mariadb_back balance roundrobin # 轮询算法(也可选leastconn等) server mariadb1 master_ip:3306 check # 主服务器IP server mariadb2 slave1_ip:3306 check # 从服务器1 IP server mariadb3 slave2_ip:3306 check # 从服务器2 IP - 启动服务:执行
sudo systemctl restart haproxy并设置开机自启(sudo systemctl enable haproxy)。 - 验证效果:通过负载均衡器的IP连接MariaDB(如
mysql -h load_balancer_ip -u root -p),观察请求是否分发到不同节点。
2. 使用ProxySQL(高性能SQL代理)
ProxySQL是专为MySQL/MariaDB设计的高性能代理,支持读写分离、查询缓存和动态负载均衡,适合需要精细化控制的场景。
- 安装ProxySQL:通过APT安装(
sudo apt update & & sudo apt install proxysql),或下载源码编译(需提前安装依赖)。 - 配置ProxySQL:编辑
/etc/proxysql.cnf文件,重点配置以下部分:[mysql_servers] # 定义后端服务器及权重(权重越高,分配请求越多) mariadb_master host=master_ip port=3306 weight=100 mariadb_slave1 host=slave1_ip port=3306 weight=50 mariadb_slave2 host=slave2_ip port=3306 weight=50 [mysql_query_rules] # 规则1:将SELECT查询转发到从服务器(hostgroup 1) rule1 rule_id=1 active=1 match_pattern=^SELECT.*FOR UPDATE$ destination_hostgroup=0 apply=0 rule2 rule_id=2 active=1 match_pattern=^SELECT destination_hostgroup=1 apply=1 # 规则3:将写操作(INSERT/UPDATE/DELETE)转发到主服务器(hostgroup 0) rule3 rule_id=3 active=1 match_pattern=^(INSERT|UPDATE|DELETE).*$ destination_hostgroup=0 apply=1 [mysql_users] # 定义客户端连接的用户 admin user=admin password=your_password default_hostgroup=0 - 启动服务:执行
sudo systemctl restart proxysql并设置开机自启。 - 验证效果:通过ProxySQL的监控接口(
mysql -h 127.0.0.1 -u admin -p -P 6032)查看查询分发情况,或通过客户端连接(mysql -h 127.0.0.1 -u admin -p)测试读写分离。
3. 使用MySQL Router(官方轻量级中间件)
MySQL Router是MySQL官方提供的工具,主要用于实现读写分离和负载均衡,集成度高,适合需要官方支持的场景。
- 安装MySQL Router:通过APT安装(
sudo apt update & & sudo apt install mysql-router)。 - 配置MySQL Router:编辑
/etc/mysql-router.cnf文件,配置读写分离:[DEFAULT] bind_address = 0.0.0.0 [routing:readwrite] bind_port = 6446 # 路由器监听端口 destinations = readwrite://user:password@master_ip:3306,readwrite://user:password@slave1_ip:3306 mode = first-available # 或round-robin(轮询) [routing:readonly] bind_port = 6447 destinations = readonly://user:password@slave1_ip:3306,readonly://user:password@slave2_ip:3306 mode = round-robin - 启动服务:执行
sudo systemctl restart mysql-router并设置开机自启。 - 客户端连接:客户端需连接到路由器的端口(如6446用于读写,6447用于只读),路由器会自动分发请求。
4. 使用MariaDB Galera Cluster(多主复制集群)
Galera Cluster是MariaDB的多主复制解决方案,支持同步复制和多节点写入,无需额外负载均衡器即可实现负载均衡(客户端可连接任意节点)。
- 安装MariaDB Galera:通过APT安装(
sudo apt update & & sudo apt install mariadb-server mariadb-galera-server)。 - 配置集群:编辑每个节点的
/etc/mysql/conf.d/galera.cnf文件,添加以下内容:[mysqld] wsrep_on=ON wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip" # 所有节点IP wsrep_node_address="当前节点IP" wsrep_node_name="节点名称" wsrep_sst_method=xtrabackup-v2 # 数据同步方法(推荐xtrabackup) wsrep_sst_auth="sst_user:sst_password" # SST用户及密码 - 初始化集群:在第一个节点上执行
galera_new_cluster启动集群,其他节点执行sudo systemctl restart mariadb加入集群。 - 验证状态:在任意节点执行
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'; ",若结果为节点数(如3),则集群配置成功。 - 客户端连接:客户端可直接连接任意节点的IP,Galera会自动处理请求分发和同步。。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何实现MariaDB的负载均衡
本文地址: https://pptw.com/jishu/745202.html
