MySQL 实例的读写分离配置可以通过以下几个步骤来实现:
首先,你需要在一台服务器上安装 MySQL 作为主服务器(Master),然后在另一台服务器上安装 MySQL 作为从服务器(Slave)。接下来,配置主从复制,使得从服务器能够复制主服务器上的数据。
编辑主服务器的配置文件(my.cnf 或 my.ini),添加以下内容:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=your_database_name
这里,server-id
是主服务器的唯一标识,log-bin
用于开启二进制日志,binlog-do-db
用于指定需要复制的数据库。
编辑从服务器的配置文件(my.cnf 或 my.ini),添加以下内容:
[mysqld]
server-id=2
relay-log=relay-bin
relay-log-index=relay-bin.index
这里,server-id
是从服务器的唯一标识,relay-log
和 relay-log-index
用于存储中继日志。
在主服务器上创建一个用于复制的用户,并授予相应的权限:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
在从服务器上,使用以下命令配置复制:
CHANGE MASTER TO
MASTER_HOST='master_host_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 701;
这里,MASTER_HOST
是主服务器的 IP 地址,MASTER_USER
和 MASTER_PASSWORD
是在第 4 步中创建的复制用户和密码,MASTER_LOG_FILE
和 MASTER_LOG_POS
是主服务器的二进制日志文件名和位置,可以通过 SHOW MASTER STATUS;
命令查看。
在从服务器上,使用以下命令启动复制:
START SLAVE;
在从服务器上,使用以下命令查看复制状态:
SHOW SLAVE STATUS\G;
如果 Slave_IO_Running
和 Slave_SQL_Running
都是 YES
,则表示复制正常运行。
在应用层,将读操作(SELECT)发送到从服务器,将写操作(INSERT、UPDATE、DELETE)发送到主服务器。这样就实现了 MySQL 实例的读写分离。