V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
yakczh
V2EX  ›  MySQL

mysql写数据根据某种hash分布存储到不同机器上,怎么样实现机器增加以后,根据hash定位的规则一致?

  •  
  •   yakczh · 2013-11-10 08:55:42 +08:00 · 2842 次点击
    这是一个创建于 4043 天前的主题,其中的信息可能已经有所发展或是发生改变。
    举个例子,比如生成一个编号的空间1-10 现在两台机器,小于5的编号存到A机器上,大于5的存到B机器上, 这样查询的时候根据id就可以知道存在哪台机器上,如果后来增加一台机器,按编号1-3,3-6,6-10这样平均切分,就可以将流量继续分摊,但是这样对于原来的对应关系就乱了,比如编号8 ,最早是存在B机器上,但是现在可以存在C机器上,不能一步就定位,有什么好的办法,在增加机器以上,保证原来的定位规则不变吗?
    5 条回复    1970-01-01 08:00:00 +08:00
    rrfeng
        1
    rrfeng  
       2013-11-10 09:52:13 +08:00
    HASH 的时候加入一个 server id ,比如 ip/hostname
    wy315700
        2
    wy315700  
       2013-11-10 10:06:44 +08:00
    一致性哈希
    polythene
        3
    polythene  
       2013-11-10 13:19:39 +08:00
    Livid
        4
    Livid  
    MOD
       2013-11-10 13:31:17 +08:00   ❤️ 1
    用机器 IP 作为 hash 算法的输入

    id = hash(server.ip)
    yakczh
        5
    yakczh  
    OP
       2013-11-10 21:59:04 +08:00
    这种是不是意味着key的最大空间是2^32?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5717 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:58 · PVG 10:58 · LAX 18:58 · JFK 21:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.