数据库 技术随笔

mysql 主从服务器的配置 实现读写分离

一、主服务器(Master)配置

修改 my.cnf,开启二进制日志并指定唯一 server-id:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = ROW
# 可选:不同步系统库
# binlog-ignore-db = mysql

重启 MySQL 后,创建一个专用于复制的账号:

CREATE USER 'repl'@'%' IDENTIFIED BY 'repl123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

记下输出的 File 与 Position(如 mysql-bin.000001 / 154),从库要用。

二、从服务器(Slave)配置

给从库一个不同的 server-id,然后指向主库:

[mysqld]
server-id = 2
CHANGE MASTER TO
  MASTER_HOST='主库IP',
  MASTER_USER='repl',
  MASTER_PASSWORD='repl123',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUSG

确认 Slave_IO_RunningSlave_SQL_Running 均为 Yes 即同步成功。

三、读写分离

主从搭好后,写请求走主库、读请求走从库,可显著减轻主库压力,常见做法:

  • 应用层路由:配置两个数据源,写操作连 Master、读操作连 Slave(注意刚写入立刻读取可能因复制延迟读不到,需强制读主库)。
  • 中间件:MySQL Router、ProxySQL、MyCat、ShardingSphere 等自动按 SQL 类型路由,对应用透明。

复制延迟是大并发下的主要痛点,可通过并行复制(slave_parallel_workers)、半同步复制等手段优化。

标签
mysqlmysql主从配