这里是一个使用C语言通过HAProxy连接TiDB的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define HAPROXY_IP "127.0.0.1"
#define HAPROXY_PORT 3306
int main() {
int sock;
struct sockaddr_in server_addr;
// 创建 socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("Failed to create socket");
exit(EXIT_FAILURE);
}
// 设置服务器地址
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(HAPROXY_PORT);
if (inet_pton(AF_INET, HAPROXY_IP, &(server_addr.sin_addr)) <= 0) {
perror("Invalid address/ Address not supported");
exit(EXIT_FAILURE);
}
// 连接到 HAProxy
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("Connection failed");
exit(EXIT_FAILURE);
}
// 向 HAProxy 发送请求
char request[] = "SELECT * FROM mytable;";
if (send(sock, request, sizeof(request), 0) < 0) {
perror("Request failed");
exit(EXIT_FAILURE);
}
// 接收来自 HAProxy 的响应
char response[1024];
memset(response, 0, sizeof(response));
if (recv(sock, response, sizeof(response)-1, 0) < 0) {
perror("Response failed");
exit(EXIT_FAILURE);
}
printf("Received response: %s\n", response);
// 关闭 socket 连接
close(sock);
return 0;
}
这是一个基本的示例代码,用于通过C语言连接到HAProxy并发送查询请求,然后接收来自HAProxy的响应。你可以根据实际情况进行修改和扩展。
关于HAProxy的配置示例,请参考以下内容:
global
maxconn 4096
log /dev/log local0
log /dev/log local1 notice
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend tidb_frontend
bind *:3306 # HAProxy 监听端口号
default_backend tidb_backend
backend tidb_backend
balance roundrobin # 后端负载均衡策略
server tidb1 192.168.1.100:4000 check # TiDB 后端服务器1地址和端口号
server tidb2 192.168.1.101:4000 check # TiDB 后端服务器2地址和端口号
以上示例配置假设TiDB服务运行在两个后端服务器上,并使用HAProxy作为负载均衡器进行流量分发。你可以根据实际环境调整IP地址、端口号以及其他参数。
请注意,以上只是简化的示例代码和配置,实际使用时需根据具体情况进行适配和优化。希望对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问