公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.
背景 pg_rman备份已经讲完了,接下来讲一下数据恢复。 由于pg_rman使用了物理备份,所以恢复时,与普通物理备份的恢复原理是一样的。 需要将数据文件恢复,同时需要提供recovery.conf,在recovery.conf中指定需要恢复到哪个位置,以及如何获取XLOG归档文件等配置。
背景 为了降低备份对数据库的性能影响,我们在有standby的情况下,可以选择从standby备份PostgreSQL。 pg_rman是一个备份工具,同样支持从standby备份数据库,但是有一些使用的注意事项。 例如需要连接主库,需要能读取归档目录,需要告诉主库和备库的连接地址,需要备库的
背景 对于商业数据库来说,备份的功能一般都非常的全面。 比如Oracle,它的备份工具rman是非常强大的,很多年前就已经支持全量、增量、归档的备份模式,支持压缩等。 还支持元数据存储到数据库中,管理也非常的方便,例如保留多少归档,备份集的管理也很方便,例如要恢复到什么时间点,将此前的备份清除等等。
背景 在大数据分析中,通常会有一些估值的需求,例如估计某个时间段有多少新增用户,估计某个时间段有多少用户。 常用的估值算法如HyperLogLog,还有一些其他的估值算法。 可以参考http://www.pipelinedb.com/ 我在几年前写过如何在PostgreSQL中使用HLL,请
场景 PostgreSQL支持多表JOIN的更新操作,但是如果SQL没有写好,可能会导致出现笛卡尔积的情况。 如果是条查询语句,出现笛卡尔积时,没什么问题,大不了就是查询慢一点。 如果是条更新语句,现在看来可能代码中有内存泄露的BUG,已反馈给PG社区。 另外需要注意P
背景 前面我写过一篇关于使用ZFS的快照特性和PostgreSQL流复制来完成数据库块级别的增量PITR备份的文章。 达到可控的备份与恢复SLA。 https://yq.aliyun.com/articles/59363 本文将基于这个备份机制, 写一个自动的恢复测试
背景 在实际的生产环境中, 当数据库越来越多, 越来越大. 备份可能会成为比较大的问题, 传统的逻辑备份对于大的数据库不适用(因为备份和还原可能是比较耗时的, 而且也不能回到任意时间点, 还会造成数据库膨胀(长时间repeatable read iso), 好处是可以跨平台恢复, 可选恢复表
背景 PostgreSQL 逻辑备份, 指在线备份数据库数据, DDL以SQL语句形式输出, 数据则可以以SQL语句或者固定分隔符(row格式)的形式输出. 备份时不影响其他用户对备份对象的DML操作. 本文主要介绍一下PostgreSQL提供的逻辑备份工具pg_dump, p
看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为PostgreSQL的布道者。 沉稳的外表无法掩饰PG炙热的内心 。 扩展阅读,用心感受PostgreSQL 内核扩展 《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》https://yq.
背景 在日常的生活中,我们可能会经常需要一些像相近、相仿、距离接近、性格接近等等类似这样的需求,对数据进行筛选。 这些需求PostgreSQL居然都支持,是不是很变态。 变态的例子 按长相相似度排序 比如最近的王宝强和马蓉的事件,估计很多人会拿宋喆的照片进行相似度的搜索,八卦八卦。
背景 如何评估QUERY的响应时间? 需要买什么样的硬件能满足为了业务XXX的需求? 这种问题在企业中非常常见,但是估计大多数是拍脑袋的回复,做得更好点,可能是根据业务的benchmark提供的数据,给一个拍脑袋的决定。 本文将针对数据库的QUERY展开,看看应该如何正确的评估Q
CASE 一个这样的查询,每个表都只有几千条数据,但是查询非常慢,几十秒不出结果。 select distinct abc.pro_col1, abc.col3 from t0 p INNER JOIN t1 abc on p.id=abc.par_col2
背景 之前写过几篇 PostgreSQL 并行计算的文章,文中并没有仔细描述PostgreSQL是如何决策并行计算,以及并行度的。 开源数据库PostgreSQL攻克并行计算难题https://yq.aliyun.com/articles/44655 PostgreSQL 并行计算 在
背景 前几天写了一篇关于旋转门的数据压缩算法在PostgreSQL中的实现,里面用到了PostGIS里面的ST_Azimuth函数用来计算夹角,其实在PostgreSQL 中,我们还可以使用三角函数,以及三边来求夹角。 https://yq.aliyun.com/articles/59101
PostgreSQL 控制文件在$PGDATA/global目录下名为pg_control. 控制文件中记录了以下三部分信息 : 1. initdb时生成的静态信息 : pg_control version number: 922 C
背景 在物联网、监控、传感器、金融等应用领域,数据在时间维度上流式的产生,而且数据量非常庞大。 例如我们经常看到的性能监控视图,就是很多点在时间维度上描绘的曲线。 又比如金融行业的走势数据等等。 我们想象一下,如果每个传感器或指标每100毫秒产生1个点,一天就是864000个点。
在使用cgroup blkio子系统限制块设备的IOPS时,有没有遇到过这样的错误? #echo "8:1 10000" >./blkio.throttle.write_iops_device bash: echo: write error: No such device 当
背景 SSD的存储组织,决定了它在写入操作时,是以固定的单元进行写入的,所以在使用SSD时,务必要进行对齐操作。 不对齐的后果很严重,不仅仅使得性能下降,还会带来写放大。 来看一张图,例如实线分开的是SSD的写入单元,如果建立分区,或者LVM时,没有进行对齐,那么一个IO操作就可能跨S
在使用lvm时遇到两个问题记录一下,如你也刚好碰到,可以减少点排错时间。 1. 创建lv时报错,可能是以前这个vg的数据有问题,不过它这里有个提示。 Cannot change VG vgdata01 while PVs are missing. Consider vgre
背景 100万个数据库连接,绝逼疯了,常人怎么会干这种事情。 没错,数据库支持100万个连接意味着什么呢?不能用连接池吗? 其实除了抱着玩一玩的心态,从另一方面也能了解到操作系统层的一些知识,何乐不为呢? 碰壁 根据我前几天写的《如何度量Kernel Resourc
背景 操作系统为了适应更多的硬件环境,许多初始的设置值,宽容度都很高。 如果不经调整,这些值可能无法适应HPC,或者硬件稍好些的环境。 无法发挥更好的硬件性能,甚至可能影响某些应用软件的使用,特别是数据库。 数据库关心的OS内核参数 512GB 内存为例 参数
背景 在使用数据库过程中,用户可能会封装一些函数,用来返回一些映射值。 例如,有一张表存储了学号和学生名字,写一个函数,根据学号,返回学生名字。 SQL如下 : create table tab(id int primary key, std_name name); cr
背景 对于操作系统来说,数据库算是比较大型的应用,往往需要耗费大量的系统资源,特别是在内部进程间通信这块的资源。 操作系统默认的配置可能无法满足数据库对资源使用的需求。 那么应该如何根据数据库的需要,设置操作系统相关资源参数呢? PostgreSQL 对系统资源的需求计算 在讲
背景 PostgreSQL 与大多数数据库一样,通过schema,逻辑上划分对象的归属,如图。 用户还可以参考《PostgreSQL 逻辑结构 和 权限体系 介绍》https://yq.aliyun.com/articles/41210 因为有了schema的概念,在访问数据库中的对象
背景 SSD以其良好的IOPS和读写带宽,正在逐渐取代原来的主流存储,成为企业存储市场的新宠。 在一些对存储IOPS和读写带宽需要较大的重要应用中,例如数据库,SSD的使用也越来越普遍。 但是SSD的寿命和写入量有关,如果没有规划好,可能会拉高故障率和成本。 另一方面,SSD还存
使用securecrt克隆会话时,原有会话连接的session数会自增。 例如 要使用ssh连接,sshd的MaxSessions必须>=1,默认是10。 如果把MaxSessions改成2,那么对同一个ssh连接,只能克隆1个,(克隆出来的ssh可以再克隆,但是对同一个会
背景 默认情况下数据都是以明文存储在数据库中的。 如果未使用数据传输层加密手段的话, 数据一旦在传输中被截获的话就很容易泄漏数据。 本文将要介绍的是数据内容的加密。 数据内容的加密可以在数据库服务端进行加解密, 也可以在客户端进行加解密. 在数据库服务端加解密的话, 网络
背景 图片搜索是继文字搜索后又一个比较常用的搜索引擎。 市面上常见的搜索引擎有谷歌、百度、搜狗等图片搜索引擎。http://image.baidu.com/http://images.google.com.hk 例如在搜索引擎提供的接口中上层了一张雪人的图片,搜出来一堆和雪人近似的图
背景 PostgreSQL的全文检索接口是开放API的,所以中文分词的插件也非常多,例如常用的scws分词插件,还有结巴分词的插件。 但是你在使用结巴分词插件的时候,有没有遇到这样的问题。 每个会话,第一次查询会比较慢,接下来的查询就快了。 例如 psql (9.5.3)
背景 在有些应用场景中,可能会涉及多个字段的匹配。 例如这样的场景,一张表包含了几个字段,分别为歌手,曲目,专辑名称,作曲,歌词, 。。。 用户可能要在所有的字段中以分词的方式匹配刘德华,任意字段匹配即返回TRUE。 传统的做法是每个字段建立分词索引,然后挨个匹配。