三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

数据库之间的“专职快递员”:一文说透数据库(mysql,postgresql)流复制用户

数据库之间的“专职快递员”:一文说透数据库(mysql,postgresql)流复制用户

一、先说清楚:这东西到底是干啥的?

一句话:流复制用户 = 专门给“数据库之间传数据”用的账号。

它不是给人登录用的,也不是给程序业务用的,它的唯一工作就是——在两个数据库之间跑腿送数据。

二、打个比方:把 MySQL 集群想成连锁店

想象一下,你开了一家奶茶连锁店:

  • 有一家总店(主库),生意最好,所有新品研发、配方调整都在总店完成

  • 还有好几家分店(从库/集群节点),分布在城市的不同角落

每天总店卖了什么、改了配方、更新了会员积分,这些信息都必须实时同步给所有分店。不然分店还在卖上周的老配方,顾客就要骂人了。

那问题来了:谁来负责这个“同步”的工作?

  • 店员(业务程序)?不行,他们忙着招呼客人呢

  • 老板(DBA 管理员)?也不行,老板不可能天天来回跑着送数据

所以,你需要一个专职跑腿的快递员

这个快递员很特别:

  • 他只干一件事:把总店的“流水账”抄给分店

  • 他不能进仓库乱拿货(不能乱改数据)

  • 他不能收银(不能干业务操作)

👉这个快递员用的工牌,就叫“流复制用户”。

三、在 MySQL 里,这个快递员具体怎么干活?

在数据库的世界里,这个账号的工作流程是这样的:

  1. 先连上总店(主库)

  2. 把总店的操作记录(binlog)​ 一条一条地拉出来——就像总店每天记的流水账

  3. 把这些记录原封不动地送到分店(从库)

  4. 分店照着这些记录,把自己这边的数据也改一遍

说白了就是:

总店记了一本账 → 快递员每天把账本复印一份 → 分店照着抄一遍

这样分店的数据就跟总店一模一样了。

四、为啥不能用普通账号来干这活?

你可能想问:我手头已经有一个账号了,比如叫appuser,密码是123456,它本来就能连数据库,为啥不能让它顺便干这个同步的活?

答案是:千万别这么干,会出大事。

我给你列几个真实可能发生的惨案:

情况

后果

这个账号密码被改了

主从同步立刻断掉,分店数据全乱了

有人用这个账号误删了数据

分店也会跟着一起删,全军覆没

新来的同事不知道这是个同步账号

随手一改配置,整个集群崩了

所以 DBA 的做法是:专门建一个账号,只给一个权限——“可以看主库的流水账”。

这个账号通常叫repl,全称是 replication(复制),一看名字就知道它是干嘛的。

五、这个账号到底长啥样?(大白话版)

在 MySQL 里,建这样一个账号只需要两行命令:

-- 第一行:创建一个叫 repl 的用户,只允许 10 开头的服务器连上来 CREATE USER 'repl'@'10.%' IDENTIFIED BY '强密码'; -- 第二行:只给一个权限——看主库的流水账 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.%';

翻译成人话就是:

  • 建一个叫repl的员工

  • 只允许 IP 地址是10.xxx.xxx.xxx的电脑来找它(限制访问范围,更安全)

  • 只给它一个权限:可以看主库的操作记录

  • 它不能查表、不能改数据、不能删库——啥也不能干,只能抄作业

六、它跟你之前遇到的 SSH 用户有啥区别?

很多人会把这两个搞混,其实它们完全是两码事:

对比项

SSH 用户

流复制用户

在哪

在服务器操作系统里

在 MySQL 数据库里

干啥用

运维人员装软件、改配置、跑脚本

数据库之间同步数据

走哪个门

走 22 号端口

走 3306 号端口

能不能删库

能(权限很大)

不能(只有看流水账的权限)

简单说:

  • SSH 用户​ = 物业的万能钥匙,能进大楼的任何房间

  • 流复制用户​ = 只在大楼里送快递的,连办公室的门都不能随便进

七、再总结一次(超简版)

流复制用户 = 数据库之间同步数据用的专用账号

只负责“抄作业”,不负责“写作业”

它就像一个专职快递员:

  • 只跑腿,不干活

  • 只看账本,不改账本

  • 有专门的工牌(专用账号),不能拿别人的工牌凑合用

八、你现在的场景是哪种?

流复制用户在不同架构里都会用到,但具体的配置方式略有不同。你现在是在搭建下面哪种架构?

  • 主从复制:一个主库带几个从库,最常见

  • MGR 集群(MySQL Group Replication):多个节点互相复制,高可用

  • InnoDB Cluster:MySQL 官方推荐的自动化集群方案

  • 读写分离:主库写、从库读,分担压力

你可以告诉我你现在的实际场景,我给你出一张傻瓜对照表,告诉你每一步该怎么配。

九、互动时刻:你第一次接触“流复制”是什么时候?

很多人在学 MySQL 的路上,都会被“主从同步”“binlog”“复制账号”这些概念绕晕。你当初是怎么理解这些东西的?有没有什么自己的“土办法”比喻?欢迎在评论区聊聊你的故事。

← 返回列表