在Debian系统上实现MySQL的读写分离,通常需要以下几个步骤:
安装MySQL主从复制:
/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
文件,设置不同的服务器ID、日志文件等。配置主服务器:
log_bin
选项已启用,以便记录二进制日志。配置从服务器:
server-id
,并指定主服务器的IP地址、复制用户的用户名和密码。验证复制:
设置读写分离:
测试读写分离:
以下是一个简化的示例配置:
主服务器 (/etc/mysql/my.cnf
):
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydb
从服务器 (/etc/mysql/my.cnf
):
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydb
replicate_do_db = mydb
创建复制用户:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
锁定主服务器并获取日志位置:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
在从服务器上配置复制:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replicator',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
解锁主服务器:
UNLOCK TABLES;
配置HAProxy (示例配置):
global
log /dev/log local0
log /dev/log local1 notice
daemon
defaults
log global
option mysql-check user haproxy_check
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend mysql_front
bind *:3306
default_backend mysql_back
backend mysql_back
balance roundrobin
server master_server 192.168.1.101:3306 check
server slave_server 192.168.1.102:3306 check
请注意,这只是一个基本的指南,实际的配置可能会更复杂,取决于你的具体需求和环境。在生产环境中实施读写分离之前,建议进行充分的测试。