V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

MySQL 有办法做到多个物理分隔的数据库系统共享一个配置吗

  •  
  •   nnegier · 2023-07-08 14:30:16 +08:00 · 1583 次点击
    这是一个创建于 533 天前的主题,其中的信息可能已经有所发展或是发生改变。

    只共享配置,不同步数据。

    需求是这样的:因为需要做海外业务,所以数据需要分开存储,但希望是数据分开存储,但整体还是一个系统,所以希望可以共享一个配置,比如账号的 index 希望可以共享掉,比如说某个国家注册了账号消耗了 100021 这个账号 id ,那么另外一个国家注册账号它的 id 就是 100022 。

    主从配置或者主主配置会同步数据,但不希望它同步数据,只同步一些配置,比如自增 id 的值这些。

    12 条回复    2023-07-09 02:49:14 +08:00
    opengps
        1
    opengps  
       2023-07-08 14:48:35 +08:00
    既然是自增 id ,那么增长步长可以实现这个效果,比如设计为:国内偶数,国外奇数
    huangzhiyia
        2
    huangzhiyia  
       2023-07-08 14:55:58 +08:00 via Android
    用一个 Redis 来生成 ID ,写数据的时候去 Redis 取并 Redis ID+1 。

    能动数据库设计的话,增加一个 UUID 字段来标识嘛。
    cpstar
        3
    cpstar  
       2023-07-08 15:43:08 +08:00
    任何 mysql 自己的机制都是要保证两台机器的数据一致,既然 OP 的需要只是 ID 序列一致反而反对数据之一,那最佳实践就是脱离数据库去产生一个 ID ,或者 A 机生成了新 ID 之后,手工底层修改 B 机的 ID 的索引。于是 2# 说的 UUID 是最简单的,相互不干扰,也不需要引入第三方向两者提供统一的 ID 编号服务。
    flyqie
        4
    flyqie  
       2023-07-08 16:08:41 +08:00
    能不能不止靠 mysql ,独立出来一个服务做 index 生成?
    yushiro
        5
    yushiro  
       2023-07-08 16:11:36 +08:00 via iPhone
    分布式 id 生成算法,好像叫雪花 ID ?
    核心原理是 id 里面有几位 bit 是预先设定的机器唯一 id
    mogg
        6
    mogg  
       2023-07-08 16:15:19 +08:00
    这个需求本质和分库分表没啥区别,分配号段路由到指定机器好了
    flyqie
        7
    flyqie  
       2023-07-08 16:27:53 +08:00
    @yushiro #5

    雪花 id 不符合楼主需求,楼主希望能做到的是连续 ID ,雪花似乎做不到完全连续的 id 。。
    NXzCH8fP20468ML5
        8
    NXzCH8fP20468ML5  
       2023-07-08 16:58:07 +08:00   ❤️ 1
    OP 似乎有什么误解,这共享 ID (状态)不就是共享数据么,怎么能说是共享配置。
    xuanbg
        9
    xuanbg  
       2023-07-08 18:18:18 +08:00
    @flyqie 连不连续的有什么关系呢?单调递增就够了。
    zengguibo
        10
    zengguibo  
       2023-07-08 18:54:34 +08:00
    如果只是单纯的 id ,可以提前生成,要的时候再统一去拿
    harrozze
        11
    harrozze  
       2023-07-08 23:08:58 +08:00
    如果业务量不大的话,单独跑一个主库,里面只有用户表,包含 id 和少量最基本的基本信息。用在注册流程里去生成连续且只跟时间先后顺序有关,而跟国家无关的用户 ID 。然后各个国家的业务库里的用户表中,id 用这个过程里生成的,也就是说,单个国家的用户表里 id 是稀疏的,可能不连续的。

    如果在不同的物理机器上,也还是免不了要搞个 API ,负责生成这样的全局统一 ID 。
    dustynight
        12
    dustynight  
       2023-07-09 02:49:14 +08:00 via Android
    我们最近也碰到了原有的(类)自增 ID 需要改造适应多中心的情况,调研了一些方案,结合改造成本,最后选择了布进不同(就像上面有提到那样,a 中心+1 ,b 中心+2 ,c 中心+3 )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.