首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL 读写分离:主从与只读连接的最小配置

MySQL 读写分离:主从与只读连接的最小配置

作者头像
安全风信子
发布2025-11-18 18:49:40
发布2025-11-18 18:49:40
900
举报
文章被收录于专栏:AI SPPECHAI SPPECH

一句话承诺:一份 docker-compose + 两条配置,跑通主从与只读路由。

docker-compose(主从最小)

代码语言:javascript
复制
version: '3'
services:
  mysql-master:
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_REPLICATION_MODE=master
      - MYSQL_REPLICATION_USER=repl
      - MYSQL_REPLICATION_PASSWORD=replpass
    ports: ["3306:3306"]
  mysql-slave:
    image: bitnami/mysql:8
    environment:
      - MYSQL_REPLICATION_MODE=slave
      - MYSQL_REPLICATION_USER=repl
      - MYSQL_REPLICATION_PASSWORD=replpass
      - MYSQL_MASTER_HOST=mysql-master
      - MYSQL_MASTER_PORT_NUMBER=3306

连接路由示例(Node.js)

代码语言:javascript
复制
const mysql = require('mysql2/promise');
const pool = mysql.createPoolCluster();
pool.add('WRITE', { host: 'localhost', port: 3306, user: 'root', password: 'pass' });
pool.add('READ1', { host: 'localhost', port: 3307, user: 'root', password: 'pass' });

// 写
await (await pool.getConnection('WRITE')).query('INSERT INTO t VALUES (1)');
// 读
await (await pool.getConnection('READ*')).query('SELECT * FROM t');

少量解释

  • 生产中建议使用中间件(ProxySQL / MySQL Router)做读写分离。
  • 从库设置为只读以避免误写。

常见坑与替代法

  • 坑:延迟导致读到旧数据。替代:关键查询走主库或使用读后写一致策略。
  • 坑:连接混乱。替代:统一路由规则与命名。

下一篇预告

Redis Stream 速查:消费者组与 pending 处理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker-compose(主从最小)
  • 连接路由示例(Node.js)
  • 少量解释
  • 常见坑与替代法
  • 下一篇预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档