首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式数据库如何实现主键全局自增?

问题 主键自增这应该算是一个非常常见的需求,在单机数据库中,这个需求一个 auto_increment 就能实现,但是在数据库集群中,这个需求却变复杂了,因为存在多个数据库实例 ,各自都是主键自增,合在一起就不是主键自增了...MSSQL 可以直接在 SQL 中指定主键的自增步长和起始偏移量,但是 MySQL 则需要修改数据库配置才能实现,因此这里不推荐使用这种方式。...MyCat 的办法 MyCat 作为一个分布式数据库中间,屏蔽了数据库集群的操作,让我们操作数据库集群就像操作单机版数据库一样,对于主键自增,它有自己的方案: 通过本地文件实现 通过数据库实现 通过本地时间戳实现...通过分布式 ZK ID 生成器实现 通过 ZK 递增方式实现 今天我们就先来看看看如何通过 ZK 递增的方式实现主键全局自增。...配置步骤如下: 首先修改主键自增方式为 4 ,4 表示使用 zookeeper 实现主键自增。 server.xml ? 配置表自增,并且设置主键 schema.xml ?

1.7K20

分布式数据库如何实现主键全局自增?

前面和大家介绍了 MyCat 中数据库不同的分片规则,从留言中看出大家对分布式数据库中间件还挺感兴趣,因此今天就再来一篇,聊一聊主键全局自增要如何实现。...MSSQL 可以直接在 SQL 中指定主键的自增步长和起始偏移量,但是 MySQL 则需要修改数据库配置才能实现,因此这里不推荐使用这种方式。...MyCat 的办法 MyCat 作为一个分布式数据库中间,屏蔽了数据库集群的操作,让我们操作数据库集群就像操作单机版数据库一样,对于主键自增,它有自己的方案: 通过本地文件实现 通过数据库实现 通过本地时间戳实现...通过分布式 ZK ID 生成器实现 通过 ZK 递增方式实现 今天我们就先来看看看如何通过 ZK 递增的方式实现主键全局自增。...好了,本文主要向大家介绍了 MyCat 实现主键全局自增的方案。不知道大家有没有 GET 到呢?有问题欢迎留言讨论。

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL如何实现高可用?

    本文介绍了Orchestrator的几种应用场景,以及云和恩墨自主研发的MySQL整体解决方案MyData是如何基于Orchestrator进行优化,实现数据库高可用的。...Orchestrator简介 Orchestrator是近年出现的基于GO语言编写的MySQL HA开源管理工具,相较与传统的HA(MHA、MMM等)管理工具,Orchestrator提供了展示MySQL...MyData使用Orchestrator实现数据库高可用 Orchestrator的特点 支持自动发现MySQL的复制拓扑图 支持通过图形界面操作或调用接口变更复制关系 支持自动检测主库异常:主库故障检测...data/mysql/data/mysql-binslave_preserve_commit_order=1report_host = 192.168.11.175master-info-repository...云和恩墨MySQL整体解决方案MyData基于Orchestrator进行了优化,保障了数据库高可用的实现。

    1.6K30

    mysql分布式数据库中间件对比mysql分布式数据库中间件对比

    mysql分布式数据库中间件对比 目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的。所以总结一个关于中间件比较的系列,希望可以对大家有帮助。...中间件与读写分离 很多人都会把中间件认为是读写分离,其实读写分离只是中间件可以提供的一种功能,最主要的功能还是在于他可以 分库分表 ,下面是一个读写分离的示意图: 分布式数据库中间件对比总结 ?...分布式数据库中间件对比总结 ?...image.png 分布式数据库中间件对比总结 Cobar: 阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。...MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。 这两个中间件后面也会跟进测试下,看下效果如何。

    3.1K70

    如何实现 MySQL 的读写分离?

    面试题你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?...面试题剖析如何实现 MySQL 的读写分离?其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。...所以 MySQL 实际上在这一块有两个机制,一个是半同步复制,用来解决主库数据丢失问题;一个是并行复制,用来解决主从同步延时问题。...MySQL 主从同步延时问题(精华)以前线上确实处理过因为主从同步延时问题而导致的线上的 bug,属于小型的生产事故。是这个么场景。有个同学是这样写代码逻辑的。...我们通过 MySQL 命令: 代码解读复制代码show status查看 Seconds_Behind_Master,可以看到从库复制主库的数据落后了几 ms。

    13000

    MySQL 是如何实现 ACID 的?

    作者:无名鼠辈 llc687.top/posts/数据库/mysql的acid 写在前面 本文主要探讨MySQL InnoDB 引擎下ACID的实现原理,对于诸如什么是事务,隔离级别的含义等基础知识不做过多阐述...ACID MySQL 作为一个关系型数据库,以最常见的 InnoDB 引擎来说,是如何保证 ACID 的。 (Atomicity)原子性:事务是最小的执行单位,不允许分割。...那么不同的隔离级别,隔离性是如何实现的,为什么不同事物间能够互不干扰?答案是 锁 和 MVCC。 锁 先来说说锁, MySQL 有多少锁。 粒度 从粒度上来说就是表锁、页锁、行锁。...总结 MySQL 都很熟, ACID 也知道是个啥,但 MySQL 的 ACID 怎么实现的?...参考 MVCC 实现原理 MySQL 中的锁 MySQL 事务中 ACID 实现原理 深入 MySQL 事务

    1K20

    mysql分布式数据库中间件对比

    Cobar: 阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。...总体来说支持度比 较高,也会一直维护下去, OneProxy: 数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件...Atlas: 360团队基于mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。...MaxScale与MySQL Route: 这两个中间件都算是官方的吧,MaxScale是mariadb (MySQL原作者维护的一个版本)研发的,目前版本不支持分库分表。...MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。 这两个中间件后面也会跟进测试下,看下效果如何。 4.

    2.7K11

    MySQL 如何实现递归查询?「建议收藏」

    我们公司用的 Oracle ,众所周知,Oracle 自带有递归查询的功能,所以实现起来特别简单。 但是,我记得 MySQL 是没有递归查询功能的,那 MySQL 中应该怎么实现呢?...自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start with connect by prior 语法来实现递归查询的。...MySQL 递归查询 可以看到,Oracle 实现递归查询非常的方便。但是,在 MySQL 中并没有帮我们处理,因此需要我们自己手动实现递归查询。...图1 另外,在这之前,我们需要复习一下几个 MYSQL中的函数,后续会用到。...(这里没有用到 group by 分组字段,则可以认为只有一组) MySQL 自定义函数,实现递归查询 可以发现以上已经把字符串拼接的问题也解决了。那么,问题就变成怎样构造有递归关系的字符串了。

    11.6K10

    如何实现MySQL运维体系建设

    内容来源:2018 年 10 月 20 日,源数据库论坛(ODF)发起人周彦伟在“ODF走进名企之贝壳技术沙龙-数据库存储技术的多元应用”进行《使用ArkControl实现MySQL运维体系建设》的演讲分享...阅读字数:2384 | 6分钟阅读 摘要 本次分享的是如何使用ARkcontrol来搭建mysql的运维体系,从功能、架构以及安装内容上来详细介绍ARkcontrol。...最终我们做了一款叫ArkControl的产品,他是一个云管平台,社区版可以免费下载使用,可以一键实现一个比较全面的mysql运维体系,不用花费太多成本就能实现一些数据库运维的基本功能,至少不用再通过命令发去安装...其中就又刚才提到的数据异构传输,我们有一个专门的数据传输服务用来做mysql到其他数据库的异构操作,由此实现底层数据的全线打通,轻松将热点或者是热数据传输到不同的系统中,做实时的分析。...实现逐步的从人工的运维转化为智能运维,类似最优化接口或最优化配置等功能。

    1.5K40

    MySQL 每秒 570000 的写入,如何实现?

    二、实现再分析 对于单表20亿, 在MySQL运维,说真的这块目前涉及得比较少,也基本没什么经验,但对于InnoDB单表Insert 如果内存大于数据情况下,可以维持在10万-15万行写入。...mysql 8.6K 11月 25 20:44 user_summary.frm -rw-r----- 1 mysql mysql 3.5G 11月 25 20:51 user_summary_main...1 mysql mysql 176G 11月 26 03:32 user5.ibd 文件大小在5倍大小的区别。...测试结论: 利用TokuDB在某云环境中8核8G内存,500G高速云盘环境,多次测试可以轻松实现57万每秒的写入量。...Deleted: 0 Skipped: 0 Warnings: 0 同样的数据写入在主键自增无值产生时,不能使用TokuDB的 Bulk loader data特性,相当于转换为了单条的Insert实现

    1.6K30

    架构必知:MySQL 如何实现 ACID ?

    写在前面 本文主要探讨MySQL InnoDB 引擎下ACID的实现原理,对于诸如什么是事务,隔离级别的含义等基础知识不做过多阐述。...ACID MySQL 作为一个关系型数据库,以最常见的 InnoDB 引擎来说,是如何保证 ACID 的。 (Atomicity)原子性: 事务是最小的执行单位,不允许分割。...读未提交 可以出现 可以出现 可以出现 读提交 不允许出现 可以出现 可以出现 可重复读 不允许出现 不允许出现 可以出现 序列化 不允许出现 不允许出现 不允许出现 那么不同的隔离级别,隔离性是如何实现的...总结 MySQL 都很熟, ACID 也知道是个啥,但 MySQL 的 ACID 怎么实现的?...参考 MVCC 实现原理 MySQL 中的锁 MySQL 事务中 ACID 实现原理 深入 MySQL 事务 出处:https://llc687.top/131.html

    43510
    领券