半个PostgreSQL DBA,热衷于数据库及分布式技术。 - https://github.com/ChenHuajun - https://pan.baidu.com/s/1eRQsdAa
Citus是一个非常实用的能够使PostgreSQL具有进行水平扩展能力的插件,或者说是一款以PostgreSQL插件形式部署的基于PostgreSQL的分布式HTAP数据库。本文简单说明Citus的高可用技术方案,并实际演示基于Patroni搭建Citus HA环境的步骤。
在部署PostgreSQL到生产环境中时,选择适合的高可用方案是一项必不可少的工作。本文介绍基于Patroni的PostgreSQL高可用的部署方法,供大家参考。
pg_rewind的功能是在主备切换后回退旧主库上多余的事务变更,以便可以作为新主的备机和新主建立复制关系。本文简单介绍其实现原理。
Citus MX是Citus集群中横向扩展CN能力的技术,本文件聊一下Citus MX使用的话题
Citus7.4-Citus 9.3新特性
关于PG逻辑订阅判断数据是否同步的方法
PostgreSQL求解最短路径
关于PostgreSQL逻辑订阅中的复制状态
PostgreSQL逻辑订阅处理流程解析
最近在walminer基础做了不少修改,以支持我们的使用场景。详细参考 如何在PostgreSQL故障切换后找回丢失的数据 修改也花了不少精力和时间,这个过程中有些东西想记录下来,方便以后查阅。
修改PostgreSQL字段长度可能导致cached plan must not change result type错误
如何在庞大的ip地址库中快速找到某个IP地址的归属地?本文比较几种不同优化方法。
citus的架构中正常只有1个CN节点,有时候CN会成为性能瓶颈。我们可以通过减少分片数,垂直扩容CN节点等手段缓解CN的性能问题,但这些都不能治本。某些业务场景部署多个CN节点是非常必要的。
对一个分布式数据库来说,动态扩缩容是不可回避的需求。但是citus的动态扩缩容功能只在企业版中才有。好消息是,citus的分片信息是存储在元数据表里的,通过修改元数据表,我们完全可以在citus社区版上实现动态的平滑扩缩容。
在进入后面的话题前,我们需要先搭建一个简单的实验环境,包含1个CN和2个Worker。
citus是一款基于PostgreSQL的开源分布式数据库,自动继承了PostgreSQL强大的SQL支持能力和应用生态(不仅仅是客户端协议的兼容还包括服务端扩展和管理工具的完全兼容)。 和其他类似的基于PostgreSQL的分布式方案,比如GreenPlum,PostgreSQL-XL,PostgreSQL-XC相比,citus最大的不同在于citus是一个PostgreSQL扩展而不是一个独立的代码分支。
闲聊PostgreSQL的oid oid为何物? PostgreSQL的系统表中大多包含一个叫做OID的隐藏字段,这个OID也是这些系统表的主键。
利用pg_resetwal回到过去 PostgreSQL中提供了一个pg_resetwal(9.6及以前版本叫pg_resetxlog)工具命令,它的本职工作是清理不需要的WAL文件, 但除此以外还能干点别的。
唯一索引的行估算实验 唯一索引除了有业务上约束作用,还可以使行估算更准确。 对唯一索引列的等值条件查询,即使统计信息缺失,也能得到准确的行估算值即1。 实验 创建不收集统计信息的测试表 postgres=# create table t...
MySQL Utilities 高可用工具体验 MySQL Utilities是MySQL官方的工具集,其中包括高可用相关的几个工具。 以下是对当前最新版本1.6的使用体验。
本文为DBAPlus投稿文章, 原文链接: http://dbaplus.cn/news-19-1514-1.html 一次PostgreSQL行估算偏差导致的慢查询分析 问题 最近某业务系统上线了新功能,然后我们就发现PostgreSQL日志中多了很多慢查询。
PostgreSQL字符类型长度变更的性能 背景 业务有时会遇到表中的字符型字段的长度不够用的问题,需要修改表定义。但是表里的数据已经很多了,修改字段长度会不会造成应用堵塞呢? 测试验证 做了个小测...
PostgreSQL如何保障数据的一致性 玩过MySQL的人应该都知道,由于MySQL是逻辑复制,从根子上是难以保证数据一致性的。玩MySQL玩得好的专家们知道有哪些坑,应该怎么回避。
PostgreSQL的表膨胀及对策 PostgreSQL的MVCC机制在数据更新时会产生dead元组,这些dead元组通过后台的autovacuum进程清理。
如何遏制PostgreSQL WAL的疯狂增长 前言 PostgreSQL在写入频繁的场景中,可能会产生大量的WAL日志,而且WAL日志量远远超过实际更新的数据量。
PostgreSQL 9.6.0中文手册1.0版发布说明 ChenHuajun released this 8 minutes ago 《PostgreSQL9.6.0手册》基于彭煜玮教授翻译的 《PostgreSQL 9.6.0 文档》 。
基于Pacemkaer Resource Agent的LVS负载均衡 前言 对于有主从状态的集群,实现读负载均衡需要将读请求分发到各Slave上,并且主从发生切换后,要自动调整分发策略。
PostgreSQL 9.5.3中文手册1.0版发布说明 ChenHuajun released this 6 days ago 发布说明 《PostgreSQL9.5.3中文手册》是在彭煜玮教授独自翻译的 《PostgreSQL 9.4.4 文档》 以及PostgreSQL中国用户会组织翻译的上一个版本 《PostgreSQL9.4.4中文手册》的基础上翻译而成。
PostgreSQL的区域设置 对于中文用户,在PostgreSQL中应该将编码无条件的设为UTF8,为简化和统一区域(loacle)也推荐尽量设置为C,但Collate和Ctype对性能或功能有一定影响,需要注意。
citus对join的支持 前言 citus对支持的SQL有一定的限制,其中包括最常见的join,具体如下 inner join 无限制。
分布式实时分析数据库citus数据查询性能简单对比 如果单纯看实时数据插入的速度,并不能体现citus的价值,还要看聚合查询的性能。下面将集群的查询性能和单机做个简单的对比。
分布式实时分析数据库citus数据插入性能优化之二 在上回的分布式实时分析数据库citus数据插入性能优化 提到citus的master上执行计划生成比较耗费时间,下面尝试通过修改源码绕过master的执行计划生成。
前言 从可靠性和使用便利性来讲单机RDBMS完胜N多各类数据库,但当数据量到了一定量之后,又不得不寻求分布式,列存储等等解决方案。citus是基于PostgreSQL的分布式实时分析解决方案,由于其只是作为PostgreSQL的扩展插件而没有动PG内核,所有随快速随PG主版本升级,可靠性也非常值得信任。
2017年1月31日GitLab.com发生的严重生成故障,导致宕机18小时,永久丢失6小时数据。 事后官方对故障原因作出了详细的解释,如下 误删 300G,GitLab 官方对删库事故的事后分析 这个事件,作为反例非常有借鉴意义。
core dump简介 core dump就是在进程crash时把包括内存在内的现场保留下来,以备故障分析。 但有时候,进程crash了却没有输出core,因为有一些因素会影响输出还是不输出core文件。
基于Pacemaker的PostgreSQL一主多从读负载均衡集群搭建 简介 PostgreSQL的HA方案有很多种,本文演示基于Pacemaker的PostgreSQL一主多从读负载均衡集群搭建。
PostgreSQL相关入门资料 0.PostgreSQL介绍资料 https://yq.aliyun.com/articles/60153 http://vdisk.weibo.com/s/aIBDMOTZz2gqU http://airjd.com/view/ibqwxj0t000ve0l#14 1. 中文手册 http://www.postgres.cn/docs/9.5/ 这个中文手册是翻译中的版本,因此混合了9.4和9.5的内容 如果以开发应用为主要目的,可以重点看下[I. 教程]和[II. SQL 语言]。
MySQL 4字节utf8字符更新失败一例 业务的小伙伴反映了下面的问题 问题 有一个4字节的utf8字符'????'插入到MySQL数据库中时报错 java.sql.SQLException: Incorrect string value: '\xF0\xA0\x99\xB6' for column 'c_utf8mb4' at row 1 数据库中存放该字符的列已经定义为utf8mb4编码了,但相关的参数character_set_server的值为utf8。
系统变量 字符集相关的系统变量 mysql> show variables like '%char%'; +--------------------------+--------------------------------...
基于Pacemaker+Corosync的PostgreSQL HA故障两例 前几天Pacemaker+Corosync的PostgreSQL HA集群发生了两次故障,再次提醒了HA的部署要谨慎,维护要细致。
使用win7远程连接另一台Win7机器,在输入用户名密码点击"连接后"报"之前用于连接到的凭据无法工作 请输入新的凭据"的错误。 用户名,密码都是正确的。网上搜索到不少解决办法,大部分无效,只有下面的方法是正解。
基于PGPool的1主2从PostgreSQL流复制HA的搭建 PostgreSQL的流复制为HA提供了很好的支持,但是部署HA集群还需要专门的HA组件, 比如通用的Pacemaker+Corosync。
健康检查 通过创建到后端的连接实施健康检查 main() PgpoolMain() processState = PERFORMING_HEALTH_CHECK; do_health_check() make_...
前段时间有同事问MySQL 分区索引是全局索引还是本地索引。全局索引和本地索引是Oracle的功能,MySQL(包括PostgreSQL)只实现了本地索引,并且因为有全局约束的问题,MySQL分区表明确不支持外键,并且主键和唯一键必须要包含所有分区列,否则报错。
Pacemaker+Corosync集群中,Corosync负责消息的传递,成员关系以及QUORUM服务,它实现了TOTEM协议确保应用也就是Pacemaker通过Corosync传递的消息是可靠有序的。
背景 MySQL5.6 支持slave crash safe特性,根据之前对slave crash safe特性的认识,在配置了以下参数的情况下,可以保证slave crash后保证数据的一致性。
安装pacemaker rpm包后,遇到启动失败的情况,原因和动态链接库的加载有关,以下是详细。 问题 编译生成pacemaker 1.1.15的rpm包,然后在其它机器上安装pacemaker rpm包后,启动失败。