Greenplum gp_vmem_protect_limit 出错

 
运行的Greenplum报这个错:
'53400', '[53400] ERROR: Out of memory  (seg30 slice3 bbsod:40002 pid=26372)\nVM Protect failed to allocate 8388608 bytes, 6 MB available;\nError while executing the query (7)
 
psql进入查看show gp_vmem_protect_limit 为8096,单位是kb。重设这个参数: gpconfig -c gp_vmem_protect_limit -v 1048576并记住要重启服务gpstop -r

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16582684/viewspace-764847/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16582684/viewspace-764847/

### 启动 Greenplum 数据库并修改 `gp_segment_configuration` 配置 #### 启动 Greenplum 数据库 要以 Master 模式启动 Greenplum 数据库,需确保环境变量 `MASTER_DATA_DIRECTORY` 已正确定义。此变量指向主节点的数据目录路径。如果未设置该变量,则会触发错误消息:“Environment Variable MASTER_DATA_DIRECTORY not set!”[^1]。 以下是具体操作步骤: 1. **验证环境变量** 使用以下命令确认 `MASTER_DATA_DIRECTORY` 是否已定义: ```bash echo $MASTER_DATA_DIRECTORY ``` 如果返回为空白或不存在,请手动设置它。例如: ```bash export MASTER_DATA_DIRECTORY=/path/to/master/data/directory ``` 2. **启动 Greenplum 数据库** 在完成上述环境变量配置后,可以运行以下命令来启动数据库集群: ```bash gpstart -a ``` 参数 `-a` 表示自动模式,无需交互输入即可尝试启动整个集群。如果成功,您将在日志中看到类似于 “gpstart succeeded” 的信息;反之则可能显示失败原因。 3. **检查状态** 可通过以下命令查看当前系统的健康状况以及各组件的状态报告: ```bash gpstate -s ``` #### 修改 `gp_segment_configuration` 配置表 `gp_segment_configuration` 是一个系统表,用于存储关于 segment 和 mirror 节点的信息。通常情况下不建议直接编辑此表的内容,因为这可能导致数据一致性问题或其他异常行为。然而,在某些特殊维护场景下确实需要调整其记录时,可以通过 SQL 查询实现更改。 注意:任何对 `gp_segment_configuration` 的改动都应极其谨慎,并且最好是在官方支持团队指导下进行。 假设我们需要更新某个特定 Segment 的地址或者端口号,可按照如下方式执行: 1. 登录到 PostgreSQL 命令行工具 psql 中去访问目标数据库实例。 ```bash psql -d postgres -U gpadmin ``` 2. 更新指定字段值之前先查询现有条目情况以便对比参照。 ```sql SELECT * FROM gp_segment_configuration WHERE content = X; -- 替换X为目标segment编号 ``` 3. 对选定的目标做出相应变更处理。 ```sql UPDATE gp_segment_configuration SET hostname='new-hostname', address='new-address' WHERE dbid=Y; -- Y代表具体的DBID号,同样可以根据实际情况替换参数名与新值 ``` 4. 完成之后重新同步元数据至所有segments上应用最新变化。 ```bash gpsyncseg -a ``` 最后再次利用 `gpstate` 或者其他监控手段检验整体架构是否恢复正常运转。 ```python def update_gp_segment(db_id, new_hostname, new_address): """ Updates the specified fields of a record in gp_segment_configuration. Args: db_id (int): The DB ID corresponding to the entry. new_hostname (str): New value for 'hostname'. new_address (str): New value for 'address'. Returns: None """ sql_command = f""" DO $$ BEGIN PERFORM pg_sleep(2); ALTER TABLE ONLY gp_segment_configuration RENAME TO temp_table_name; CREATE UNLOGGED TABLE IF NOT EXISTS gp_segment_configuration AS SELECT * FROM temp_table_name; DROP TABLE temp_table_name; UPDATE gp_segment_configuration SET hostname='{new_hostname}', address='{new_address}' WHERE dbid={db_id}; END$$; """ execute_sql(sql_command) def execute_sql(query_string): import psycopg2 conn = None try: conn = psycopg2.connect( dbname="postgres", user="gpadmin" ) cur = conn.cursor() cur.execute(query_string) conn.commit() except Exception as error: print(f"Error occurred while executing query: {error}") finally: if conn is not None: conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值