Greenplum分布式事务和两阶段提交协议Components 数据库管理系统组成图 Hector Garcia-Molina /Jeffrey D.Ullman/Jennifer Widom《数据库系统实现》 查询编译器/ 优化器 事务管理器 DDL编译器 执行引擎 日志和恢复 并发控制 索引/文件/ 记录管理器 缓冲区管理器 缓冲区 锁表 存储管理器 存储 查询计划 对索引、文件和 记录的请求 页命令 事务命令 写日志日志落盘 写日志 记录日志 日志落盘 记录日志 日志落盘 协调者 参与者 发送prepare消息 ready 发送commit/abort消息 ack 阶段2 阶段1 25 2PC同样可以应用在单机系统上 协调者 资源管理器1 资源管理器2 资源管理器3 日志1 日志2 日志3 PREPARE / g_twophase目录下的文件并进行相关操 作,为该事务重新获取锁。 3. 恢复成功后,删掉pg_twophase目录下的文件 《数据库系统概念》19.4.1.3节,参与者在响应prepare消息之前记录 32 Greenplum实现分布式事务与并发控制 • 分布式事务管理 • 分布式事务的创建、状态迁移等 • QD向QE发起两阶段提交 • 分布式快照 • 0 码力 | 42 页 | 2.12 MB | 1 年前3
Greenplum 编译安装和调试查看日志。 这里面有2种类型的日志: ○ startup.log ○ gpdb-.csv 2.2.3 初始化 master 数据库失败 手动执行initdb查看详细错误信息,然后分析具体错误信息采取相应错误。不同的版本可 能参数不同,可以通过在 gpinitsystem 脚本中找到完整的命令。 $ initdb -E UNICODE -D /data/master/gpseg-1 gp_role=utility -M master -b 1 -C -1 -z 0 -m 2.2.5 启动Segment出错 如果启动 segment 时出错,并且看不到具体错误信息(通常由于错误信息被重定向到 /dev/null 了),则可以尝试手动启动 segment。 手动启动segment的命令参加下面,需要根据自己的环境修改某些路径或者参数: export 窗口。选择需要调试 的进程id即可。(如果确定进程id请见前面小节) 如果 clion 调试器console显示类似 “Debugger attached to process 38965” 的消息,则表示进程 attach成功,可以使用 clion进行调试了。 通过图像化窗口定位到 “ExecProcNode” 函数,通过单击下图的小红圈处,即可设置断点在 ExecAgg() 调用处。0 码力 | 15 页 | 2.07 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1......................................................................................... - 244 - 错误记录处理 .............................................................................................. 载。 GP 通过外部表(External Table)支持高速并行数据装载。外部表可以使用[单条记 录出错隔离]模式,以允许在装载数据过程中将出错的数据记录下来。可以设置错误容 忍的阈值,以实现对数据装载质量的控制。也可以对错误信息进行分析,以帮助改善数 据装载的质量。 结合使用外部表和 GP 的并行文件分发服务(gpfdist),管理员可以实现最大化 的利用网络带宽资源以实现高速并行装载。 conf 文件控制着客户端连接到 GP 系统的认证。 在 Instance 上也存在 pg_hba.conf 文件,通常此文件已经被正确配置为允许从 Master 访问。不过根据以往的经验来看,也出现过配置错误的情况,该情况会导致 gpexpand 之类的操作报错失败。通常来说,Instance 是不需要接受外部客户端连 接的(如果需要,必须通过 Utility 模式连接),不太有必要去修改 Instance0 码力 | 416 页 | 6.08 MB | 1 年前3
Greenplum数据仓库UDW - UCloud中立云计算服务商4.2.tar.gz cd fab-1.4.2 python setup.py install 升级pip pip install --upgrade pip 备注:如果pip升级过程报版本错误,请执⾏下⾯操作 请先 mv /usr/bin/pip /usr/bin/pip.bak 然后执⾏ ln -s /usr/local/python3/bin/pip /usr/bin/pip 安装psycopg2 案例⼀ 案例⼀ 利⽤ 利⽤ logstash+Kafka+UDW 对⽇志数据分析 对⽇志数据分析 Logstash 是⽬前⽐流⾏、使⽤较多的⽇志收集和管理系统,Kafka也是企业常⽤的分布式发布-订阅消息系统,UDW(UCloud Data Warehouse)是⼤规模并⾏处理数据仓库产品,下⾯介 绍⼀些利⽤ logstash+Kafka+UDW 构建⽇志收集-存储-分析的全套解决⽅案。 Logstash收集⽇志到 UCloud 优刻得 177/206 5. 启动logstash收集⽇志到Kafka 执⾏ bin/logstash agent -f logstash-output-kafka.conf 发送消息到 Kafka 备注:我们除了⽤ logstash 收集⽇志到 kafka 之外,我们还可以使⽤ Flume 收集⽇志到 Kafka,也可以把 Spark、Storm 中的流式数据写⼊到 Kafka。更多0 码力 | 206 页 | 5.35 MB | 1 年前3
Pivotal Greenplum 最佳实践分享memory 常见的OOM原因 – 因为没有Analyze table,错误的执行计划导致 – 并发度太高,内存不足 – 品质不高的SQL,例如LEFT JOIN大表,如果大表在关联条件上倾斜严重,可能导致OOM – 耗内存SQL,如window function OOM的后果 – SQL执行错误,并且可能影响当时正在执行的SQL都会报错 – 如果过多的侵占到OS的内存,可能导致Instance ; 日常巡检事项 检查操作系统日志 – gpssh检查所有节点的/var/log/message,grep过滤是否有硬件错误、系统错误等信息 检查数据库日志 – 检查数据库pg_log日志是否有Panic错误、OOM等错误 检查Raid卡和磁盘状态 – 检查磁盘状态是否正常,是否有degrade – 检查Raid卡状态和WriteBack – DCA start排序,检查时间最长的SQL) 检查硬件和OS状态 – 查看command Centre中系统监控情況 – MegaCli检查磁片和Raid卡状态 – 检查OS是否有硬件错误告警 – gpcheckperf检查网络和磁片性能 问题定位方法 现象-数据库不能访问 对于此类问题,相对来说比较容易定位。 gpstate检查系統状态,此时很可能不会有任何输出0 码力 | 41 页 | 1.42 MB | 1 年前3
Greenplum 精粹文集·表倾斜:表倾斜情况应该 DBA 的关注点之一,但无需每天处理。 ·表膨胀:基于 postgresql 的 MVCC 机制,表膨胀情况不能忽视。 重点应该关注日常更新和删除操作的表。 ·报错信息:在日志中错误信息多种多样,大部分不是 DBA 需要关 注的。应该重点关注 PANIC、OOM、Internal error 等关键信息。 Greenplum 已经开源了,我们的生态圈在迅速地壮大,Greenplum of freeTIDs 191, do not match maximum free order number 258, for 'gp_persistent_relation_ node' 该错误可能会导致实例启动失败,数据库实例恢复失败等情况。首 先可在问题的实例(postgresql.conf)中设置参数 gp_persistent_ skip_free_list=true。 让 出 问 Join:o(N×logN) Nested Loop Join:o(N×N) 因此,在绝大多数情况下我们希望走 Hash Join 方法。如果 Join 方法 不如我们期望,要找找原因,比如数据量评估错误,关联条件不对等。 通常,smallint、int、bigint 之间的关联是不能走等值关联的,也就是说, Hash Join 和 Merge Join 都是无法选择的,只能选择 Nestloop0 码力 | 64 页 | 2.73 MB | 1 年前3
PostgreSQL和Greenplum 数据库故障排查OS用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码 登录数据库。 很多初学者都会遇到psql -U username登录数据库却出现“username ident 认证失败”的错误,明明数据库用户已经createuser。 原因就在于此,使用了ident认证方式,却没有同名的操作系统用户或没 有相应的映射用户。 md5 密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用 内核参数overcommit_memory ,指定内存分配策略 可选值:0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用; 如果有足够的可用内存,内存申请允许;否则,内存申请 失败,并把错误返回给应用进程。 1, 表示内核允许分配所有的物理内存,而不管当前的内存 状态如何。 2, 表示内核允许分配超过所有物理内存和交换空间总和的 内存 2018年PostgreSQL中国技术大会 微信号:laohouzi9990 码力 | 84 页 | 12.61 MB | 1 年前3
Pivotal HVR meetup 20190816非侵入式技术对生产没有影响 • 基于日志捕获技术的实时性非常高 • 支持从过去的某一指定时间开始捕获 • 条件过滤 • 支持触发器捕获技术作为补充 基于数据库事务日志的变化数据捕获 9 • 避免人为错误 • 在迁移结束前校验数据 • 支持异构 异构平台间数据校验域修复 10 内置监控与报警 • 实时监控HVR进程 • 自动告警 • 与第三方企业监控平台集成 • 丰富的统计报表 LDAP0 码力 | 31 页 | 2.19 MB | 1 年前3
共 8 条
- 1













