PostgreSQL共享存储一写多读(类Oracle RAC架构)
背景 亚马逊推出的Aurora数据库引擎,支持一份存储,一主多读的架构。这个架构和Oracle RAC类似,也是共享存储,但是只有一个实例可以执行写操作,其他实例只能执行读操作。相比传统的基于复制的一主多读,节约了存储和网络带宽的成本。 PostgreSQL共享存储一写多读(类Oracle RAC架构) Pos...
背景 亚马逊推出的Aurora数据库引擎,支持一份存储,一主多读的架构。这个架构和Oracle RAC类似,也是共享存储,但是只有一个实例可以执行写操作,其他实例只能执行读操作。相比传统的基于复制的一主多读,节约了存储和网络带宽的成本。 PostgreSQL共享存储一写多读(类Oracle RAC架构) Pos...
背景 PostgreSQL function 会遗传security 属性吗?答案是不遗传。 在参数中的函数,只管自己的security属性,不管外面函数的security属性。也就是各管各的。 当函数体中包含其他函数时,两个函数的security属性都会被判断,并且是一个与的关系。或者可以理解为整个调用栈的...
背景 数据库端口暴露有什么风险么? 你可能会觉得,只要密码足够复杂,或者你设置了pg_hba.conf,数据库端口暴露也没有风险。 可是实际上是这样的吗? 我们的小鲜肉来告诉你风险在哪。 我们来看个例子: 目前这个数据库只允许unix socket连接,但是监听了所有端口。 你觉得这样的pg_hba....
背景 PostgreSQL的函数支持两种权限检测 invoker, 调用者权限 definer, 定义者权限 比如一个普通用户,定义了一个函数是调用者权限的,当超级用户调用这个函数时,会以超级用户的权限来执行,可以为所欲为。 因此可能被普通用户用来设计陷阱。 正文 现在数据库中有两个用户,一个超级用户一...
背景 如果你的GCC版本第一4.6,那么首先要安装一个高版本的GCC,因为pg_shard里面用了gcc 4.6以后新加的特性。 # yum install -y gmp mpfr libmpc libmpc-devel # wget http://gcc.cybermirror.org/releas...
背景 pg_basebackup是PostgreSQL提供的基础备份工具,用户可以使用这个工具来实现对数据库的基础备份,当然你也可以使用pg_start_backup()+copy+pg_stop_backup()的方式进行备份。 那么pg_basebackup会帮你过滤哪些文件,或者不备份哪些文件呢? 1....
背景 unlogged table和hash index同样都不会写XLOG,所以如果你用流复制来搞HA,一定概要搞清楚一个问题,切换到备库的话unlogged table数据会被清掉,而hash index也没有,走hash index会失败。 unlogged table 的风险以及修复手段可以见 : h...
背景 注意PostgreSQL的unlogged table是不记录xlog的,所以在备库上没有unlogged table的数据记录。 同时,数据库在进入恢复状态时,为了保证数据的一致性,postgresql会自动清除unlogged table的数据文件。 那么问题来了,万一你不小心误创建了unlogge...
背景 当我们在一个操作系统中,启动了多个数据库实例时,我们也许会控制各个实例可以使用的内存,通过cgroup来控制是一种手段。 显然,使用cgroup也可以知道你的实例使用了多少内存。 例子: 在内存组新建一个组 [root@digoal ~]# cd /cgroup/memory [root@dig...
背景 数据库端口暴露有什么风险么? 你可能会觉得,只要密码足够复杂,同时你设置了pg_hba.conf,数据库端口暴露也没有风险。 可是实际上是这样的吗? 本文将告诉你潜在风险在哪里。 例子 目前这个数据库只允许unix socket连接,但是监听了所有端口。 你觉得这样的pg_hba.conf配置安全...