1 前段时间遇到一个问题,用Flinkcdc 同步阿里云数据库RDS的postgresql中的数据到本地的
背景
最近处理过几次由于FlinkCDC同步postgresql数据,导致数据库事务日志膨胀磁盘空间被占满。也由此产生了疑问,在哪些情况下会出现事务日志不断膨胀?数据库事务日志的原理是什么?为什么要有事务日志,它的作用是什么?
下面将带着以上的这些疑问来了解PostgreSQL的事务日志。
一、什么是数据库的事务日志
在postgresql 7.1版本以后开始引入的数据库事务日志。事务日志的主要作用是避免由于异常宕机导致还没有写入磁盘的数据丢失。可在数据库重新启动时通过事务日志进行恢复。也可以通过事务日志实现基于时间点的恢复和流复制等功能。
下面来看下当发生异常宕机时,没有事务日志和有事务日志的差别
没有事务日志的情况
- (1)执行第一条insert语句,往TABLE_A表中插入一条数据 ‘A’ ,此时该数据立即写入到内存的共享缓冲区中(即shared buffer pool),并还没有写入到磁盘中。
- (2)执行第二条insert语句,往TABLE_A表中插入一条数据 ‘B’ ,同样该数据立即写入到内存的共享缓冲区中&