MySQL 主从复制与读写分离
MySQL主从复制与读写分离可以通过以下步骤实现:
配置MySQL主从复制:
在主服务器(Master)的
my.cnf
配置文件中,确保有以下设置:[mysqld] log-bin=mysql-bin server-id=1
在从服务器(Slave)的
my.cnf
配置文件中,设置一个唯一的server-id
:[mysqld] server-id=2
然后在主服务器上创建一个用于复制的用户账号:
CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
获取二进制日志位置,在主服务器上执行:
SHOW MASTER STATUS;
配置从服务器复制主服务器:
CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;
启动从服务器复制进程:
START SLAVE;
配置读写分离:
使用中间件如:MySQL Router、ProxySQL、HAProxy或其他自定义脚本来根据查询类型路由读写请求。
以下是一个简单的HAProxy配置示例,用于读写分离:
global
daemon
defaults
mode http
timeout connect 5000ms
timeout client 5000ms
timeout server 5000ms
frontend mysql-frontend
bind *:3306
default_backend mysql-backend
backend mysql-backend
balance roundrobin
server master server_ip_of_master:3306 check
server slave1 server_ip_of_slave1:3306 check
server slave2 server_ip_of_slave2:3306 check
# 检测服务器健康状况的SQL查询
option mysql-check user mysql_admin_user
option mysql-check db test
在此配置中,HAProxy会将写请求发送到主服务器,而读请求在多个从服务器之间轮询。
请注意,这只是一个概念性的配置示例,实际部署时需要考虑更多的安全和性能因素。
评论已关闭