循序渐进丨MogDB 百问百答(第3期)_数据

为了能够帮助大家循序渐进地了解MogDB、认识其特性和能力、熟悉它的使用,我们特推出「MogDB百问百答」连载,每期放出20个FAQ,希望能对您有参考价值!(感谢问题整理与回答人员:高云龙、彭冲、黄超、杨有田)

 往期回顾 

第一期 FAQ 1~20

第二期 FAQ 21~40

  Q 41  

控制wal数量的参数是什么?

wal保留数量由wal_keep_segments和checkpoint_segments两个参数来控制,这两个参数值是软限制,一般wal保留数量在阈值附近时正常的,不建议手工清理wal文件,而是通过调整这两个数据库参数来自动清理。

  Q 42  

wal堆积不清理一般是什么问题?

wal文件堆积的因素很多,常见堆积原因有:

1、开启归档后归档失败,比如归档目录满或者归档目录不存在;

2、有异常的复制槽,可以通过  pg_get_replication_slot_name() 查看复制槽状态。

  Q 43  

连接报错FATAL:Forbid remote connection with initial user.

初始化用户(超户)只允许在数据库服务器本地通过socket的方式访问数据库,不允许通过TCP/IP的方式远程访问,若要远程访问需要使用其他数据库用户。

  Q 44  

连接报错FATAL:  Forbid remote connection with trust method!

不允许远程通过trust方式访问数据库,修改白名单文件pg_hba.conf,把trust修改为md5或sha256。

  Q 45  

如何在数据库服务器本地通过TCP/IP的方式密码访问数据库?

一般本地访问数据库是通过socket的方式,如果要使用TCP/IP的方式通过密码访问数据库,需要在127.0.0.1/32 这一行添加指定用户访问本地数据库的加密方式。

  Q 46  

安装数据库时提示 The cluster has been installed。

执行vi ~/.bashrc查看环境变量,将GAUSS_ENV=2改为GAUSS_ENV=1,重新执行安装命令即可。

  Q 47  

数据库启动时报错Failed to read gaussdb.state: 0 Failed to set gaussdb.state with UNKNOWN_STATE。

gaussdb.state有问题,在data_directory目录下,删除gaussdb.state,重启数据库会生成新一个gaussdb.state。

  Q 48  

数据库启动失败,但启动日志没有有效的信息,该怎么办?

当我们启动数据库时,打印出来的启动日志并不会非常详细,需要我们结合数据库日志pg_log一起确定数据库启动失败的原因。

  Q 49  

MogDB数据库支持哪几种备份恢复类型?

支持逻辑备份恢复、物理备份恢复以及ustore表的闪回恢复。

  Q 50  

支持逻辑备份和恢复的工具有哪些?

gs_dump,可以自定义导出一个数据库或其中的对象(模式、表、视图等)。导出的格式可选择纯文本格式或者归档格式。纯文本格式的数据只能通过gsql进行恢复,恢复时间较长。归档格式的数据只能通过gs_restore进行恢复,恢复时间较纯文本格式短;

gs_dumpall,可以导出 MogDB 数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及 MogDB 所有数据库公共的全局对象,支持多并发,只能导出纯文本格式的数据,导出的数据只能通过gsql进行恢复,恢复时间较长。

  Q 51  

gs_restore恢复数据可以自定义顺序吗?

dump备份时不仅仅是备份结构和数据,还有关于备份描述的元数据,我们可以生成dump清单文件。它是一个文本文件,每行详细描述一个对象,清单文件行就像指针一样,引用dump中已经存在的内容。我们可以自定义顺序来恢复,或者编辑清单进行快速恢复。

详细示例请参考文章:https://www.modb.pro/db/509150(复制链接至浏览器查阅)。

  Q 52  

MogDB的用户及其权限如何定义使用?

在 MogDB 数据库中,用户等于带有登陆属性的角色,关于用户属性及其权限可以参考https://www.modb.pro/db/434212(复制链接至浏览器查阅)。

  Q 53  

openGauss与PostgreSQL权限管理有什么相同及不同点?

数据库对象的ACL、行级安全、角色权限整理是一样的,但也有一些差异,schema、db、cluster三个方面的对比请参考文章:https://www.modb.pro/db/516180(复制链接至浏览器查阅)。

  Q 54  

报错role "user_xx" cannot be dropped because some objects depend on it是什么原因?

这个错误说明该用户下有所属对象,不允许删除,需要先确定哪些对象有依赖关系,是否需要保留,如果保留需要修改依赖关系,如果不需要保留通过如下两条命令进行删除,drop owned by user_xx cascade;drop user user_xx。

  Q 55  

MogDB是否支持通过FDW的方式访问外部数据库?

MogDB 支持FDW功能,可以支持的远程服务器类型包括 Oracle、MySQL(MariaDB)、PostgreSQL/openGauss/MogDB(postgres_fdw)及file_fdw。

  Q 56  

xxx_fwd是否可以直接使用?

xxx_fwd都是插件,目前 MogDB 默认编译postgres_fdw和file_fdw可以直接使用,如果需要使用oracle_fdw和mysql_fdw需要自己编译,请参考:https://docs.mogdb.io/zh/mogdb/v3.0/fdw-introduction(复制链接至浏览器查阅)。

  Q 57  

MogDB如果访问Oracle,使用dblink插件是否可以?

MogDB插件包里的dblink插件只能用于同构数据库之间的访问,访问oracle数据库需要使用oracle_fdw插件,使用方法可以参考:https://www.modb.pro/db/485223(复制链接至浏览器查阅)。

  Q 58  

MogDB支持哪些类型的表?

MogDB 支持的表分为单表、非日志表、临时表和分区表,其中单表分为行存表和列存表。

  Q 59  

支持全局临时表么?

支持的,MogDB 支持的临时表分为local和global两种,如果建表时不指定global关键字,默认会创建本地临时表。

  Q 60  

MogDB支持哪些分区类型?

目前可以支持范围分区、哈希分区和列表分区:

1、范围分区,将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的;

2、列表分区,将数据基于各个分区内包含的键值映射到每一个分区,分区包含的键值在创建分区时指定;

3、哈希分区,将数据通过哈希映射到每一个分区,每一个分区中存储了具有相同哈希值的记录。