没有合适的资源?快使用搜索试试~ 我知道了~
第四课:postgresql-高可用1
需积分: 0 0 下载量 178 浏览量
2022-08-08
19:00:22
上传
评论
收藏 210KB DOCX 举报
温馨提示
试读
16页
第四课:postgresql-高可用1
资源详情
资源评论
资源推荐
高可用方案
1.主从
2.双主
3.多主多从
4.读写分离
5.负载均衡 sql 分发
常见高可用方案
共享磁盘故障转移
共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销。 它使用
一个由多个服务器共享的单一磁盘阵列。
文件系统(块设备)复制
DRBD 是用于 Linux 的一种流行的文件系统复制方案。
事务日志传送
温备和热备服务器能够通过读取一个预写式日志(WAL) 记录的流来保持为
当前状态。如果主服务器失效, 后备服务器拥有主服务器的几乎所有数据, 并
且能够快速地被变成新的主数据库服务器。这可以是同步的或异步的, 并且只
能用于整个数据库服务器。
基于触发器的主-备复制
一个主-备复制设置会把所有数据修改查询发送到主服务器。 主服务器异步
地将数据修改发送给后备服务器。当主
服务器正在运行时, 后备服务器可以回答只读查询。后备服务器对数据仓
库查询是一种理想的选择。
Slony-I 是这种复制类型的一个例子。它使用表粒度, 并且支持多个后备服
务器。因为它
会异步更新后备服务器(批量), 在故障转移时可能会有数据丢失。
基于语句的复制中间件
通过基于语句的复制中间件,一个程序拦截每一个 SQL 查询并把它发送给一
个或所有服务器。 每一个服务器独立地操作。
读写查询必须被发送给所有服务器, 这样每一个服务器都能接收到任何修
改。但只读查询可以被只发送给一个服务器, 这
样允许读负载在服务器之间分布。
异步多主控机复制
通过使用异步的多主控机复制, 每一个服务器独立工作并且定期与其他服
务器通信来确定冲突的事务。
同步多主控机复制
在同步多主控机复制中,每一个服务器能够接受写请求,并且在每一个事务
提交之前,被修改的数据会被从原始服务器传送给每一个其他服务器。
PostgreSQL 不提供这种复制类型, 尽管在应用代码或中间件中可以使用
PostgreSQL 的两阶段提交 (PREPARE TRANSACTION 和 COMMIT PREPARED) 来实
现这种复制。
商业方案
因为 PostgreSQL 是开源的并且很容易被扩展, 一些公司已经使用
PostgreSQL 并且创建了带有唯一故障转移、 复制和负载均衡能力的商业性的闭
源方案。
数据分区
数据分区将表分开成数据集。每个集合只能被一个服务器修改。
多服务器并行查询执行
replication
逻辑复制和 物理复制
优劣和应用场景
逻辑订阅,适合于发布端与订阅端都有读写的情况。
逻辑订阅,更适合于小事务,或者低密度写(轻度写)的同步。如果有大事务、
高密度写,逻辑订阅的延迟相比物理复制更高。
逻辑订阅,适合于双向,多向同步。
物理复制,适合于单向同步。
物理复制,适合于任意事务,任意密度写(重度写)的同步。
物理复制,适合于 HA、容灾、读写分离。
物理复制,适合于备库没有写,只有读的场景。
实验平台 centos7+pg10 两台
总架构
postgresql 高可用方案有许多第三方方案,但是今天我们主要讲 pg 内核自己支
持的 高可用方案
物理复制,基于 wal 日志
什么是 wal 日志? Write-Ahead Logging
wal 日志,postgresql 在做修改、插入等 DDL 语言时,会先将操作语句写到 wal
日志里;记录所有操作;然后,在 check point 点,replay 这些日志,真正去执
行这些操作
在 oracle 里 这个叫 redo 日志,mysql 里这个叫 binlog ,sqlserver 也叫 wal 日
志
wal 日志 是二进制文件,默认 16M(当然,可以设置)
wal 文件的命名
wal 日志号由 64 位组成,即有 2**64 个日志编号,用完了需要重置,但是这个数量已经
很多了,相当于 1024P 个,1024*1024 个 T。
日志文件则由 24 个 16 进制数字组成,分三部分:时间线、LSN 高 32 位、LSN 低 32 位
/(2**24)的值
=
16 位 lsn=1 lsn=00000000 000000002 lsn=0000000 0000000A
20/9B0708E0
000000001 000000030 9B0708E0
如何读取 wal 日志。pg 自带 pg_waldump
pg_waldump.exe --start=3/A0000001 -n 10
手动切换日志
Version>=10
select pg_switch_wal();
version<10
select pg_switch_xlog();
每一行 wal 日志
剩余15页未读,继续阅读
郭逗
- 粉丝: 30
- 资源: 318
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0