一、KingbaseES Initdb初始化数据库过程
initdb 创建一个新的KingbaseES数据库集群。一个数据库集群是由单个服务器实例管理的多个数据库的集合。
创建数据库系统包括创建数据库数据的宿主目录,生成共享的系统表(不属于任何特定数据库的表)和创建 template1 和 TEST 数据库。当你以后再创建一个新数据库时,template1 数据库里所有内容都会拷贝过来。因此,任何在 template1 里面安装的东西都自动拷贝到之后创建的数据库中。TEST 数据库是一个缺省数据库,用于给用户、工具、第三方应用提供缺省数据库。
尽管 initdb 会尝试创建相应的数据目录,但经常会没有权限做这件事。因为所要创建目录的父目录通常被 root 所拥有。要初始化这种设置,用 root 创建一个空数据目录,然后用 chown 把该目录的所有权交给数据库用户帐号,然后 su 成数据库用户,最后以数据库用户身份运行 initdb 。
initdb 必须以运行数据库服务器的用户身份运行,因为服务器需要访问 initdb 创建的目录和文件。因为服务器通常是以非 root 身份运行的,因此一般也就不以 root 用户运行 initdb ,事实上 initdb 将拒绝你以 root 用户运行它。
initdb 初始化该数据库集群的缺省区域和字符集编码。字符编码排序(LC_COLLATE)和字符集类(LC_CTYPE 也就是大写、小写、数字等)是对所有数据库估定的,不能改变。使用 C 或 POSIX 之外的字符编码排序还会有性能影响。因此在运行 initdb 的时候就做出正确的选择是非常重要的。其它区域范畴可以在随后启动服务器的时候改变。所有服务器区域值(lc_*)都可以用 SHOW ALL 显示。

二、Initdb初始化帮助信息

[kingbase@node1 bin]$ ./initdb --help
initdb initializes a Kingbase database cluster.

Usage:
initdb [OPTION]… [DATADIR]

Options:
-A, --auth=METHOD default authentication method for local connections
–auth-host=METHOD default authentication method for local TCP/IP connections
–auth-local=METHOD default authentication method for local-socket connections
[-D, --kingbase_data=]DATADIR location for this database cluster
-E, --encoding=ENCODING set default encoding for new databases
-g, --allow-group-access allow group read/execute on data directory
–locale=LOCALE set default locale for new databases
–lc-collate=, --lc-ctype=, --lc-messages=LOCALE
–lc-monetary=, --lc-numeric=, --lc-time=LOCALE
set default locale in the respective category for
new databases (default taken from environment)
–no-locale equivalent to --locale=C
–pwfile=FILE read password for the new superuser from file
-T, --text-search-config=CFG
default text search configuration
-U, --username=NAME database superuser name
-W, --pwprompt prompt for a password for the new superuser
-X, --waldir=WALDIR location for the write-ahead log directory
–wal-segsize=SIZE size of WAL segments, in megabytes
-m, --dbmode=MODE set database mode(default value is oracle)
-e, --encrypt-algorithm Specify encryption method
-t, --aud-tblspc-enc enable sysaudit tablespace encrypt
-K, --enckey=KEY Specify sysaudit tablesapace encrypt key
-M, --passwordcheck enable user password check for initdb
-I, --identity-pwdexp enable user password expire check
–case-insensitive initialize database cluster with case-insensitive
–block-size=SIZE set table block size in kB [8]

Less commonly used options:
-d, --debug generate lots of debugging output
-k, --data-checksums use data page checksums
-L DIRECTORY where to find the input files
-n, --no-clean do not clean up after errors
-N, --no-sync do not wait for changes to be written safely to disk
-s, --show show internal settings
-S, --sync-only only sync data directory

Other options:
-V, --version output version information, then exit
-?, --help show this help, then exit

If the data directory is not specified, the environment variable KINGBASE_DATA
is used.

Report bugs to kingbase-bugs@kingbase.com.cn.
[kingbase@node1 bin]$

三、initdb初始化数据库案例
3.1 案例一:数据库data目录权限问题
1) 案例现象
在通过initdb初始化数据库时,提示数据库数据存储目录data目录没有权限访问。
[kingbase@node1 bin]$ ./initdb -D /data/kingbase/v8r6/data/ -m pg

The files belonging to this database system will be owned by user “kingbase”.
This user must also own the server process.

The database cluster will be initialized with locale “en_US.UTF-8”.
The default database encoding has accordingly been set to “UTF8”.
The default text search configuration will be set to “english”.

The comparision of strings is case-sensitive.
Data page checksums are disabled.

fixing permissions on existing directory /data/kingbase/v8r6/data … initdb: error: could not change permissions of directory “/data/kingbase/v8r6/data”: Operation not permitted

2) 案例分析
查看数据库数据存储目录权限如下图3-1所示,data目录的所有者为root所有,kingbase用户无权限写入访问。

图3-1 查看data目录权限
3) 故障解决
将data目录的所有者改为kingbase用户,重新执行初始化即可。
3.2 案例二:数据库初始化字符集问题
1)案例说明
在执行initdb时,-E参数指定数据库字符集,初始化失败。
[kingbase@node1 bin]$ ./initdb -D /data/kingbase/v8r6/data -E GBK -U system -W

The files belonging to this database system will be owned by user “kingbase”.
This user must also own the server process.

The database cluster will be initialized with locale “en_US.UTF-8”.
initdb: error: "GBK " is not a valid server encoding name

2) 案例分析
通过错误日志可知,操作系统的locale配置为"en_US.UTF-8",需要初始化的字符集为”GBK”,与系统环境不匹配。
 查看系统locale:

图3-2 系统locale信息
 修改系统locale:

图3-3 配置系统locale
3) 故障解决
修改系统locale后,重新初始化数据库即可。

图3-4 initdb初始化数据库
四、总结
对于initdb初始化数据库问题,可以通过错误日志的信息,进行分析,结合系统配置来解决初始化的故障。
参考文档:
《基于Linux系统的数据库软件安装指南》

金仓数据库KingbaseES初始化失败如何分析相关推荐

  1. 金仓数据库KingbaseES表空间(tablespace)知多少

    金仓数据库KingbaseES表空间定义 金仓数据库KingbaseES中的表空间允许在文件系统里定义那些代表数据库对象的文件存放位置,比如表和索引等.一旦表空间被创建,那么就可以在创建数据库对象时通 ...

  2. 解决金仓数据库KingbaseES创建serial列并将其设置为主键约束,同时copy两条及以上数据时报错的问题

    ​  关键字 人大金仓.金仓数据库.KingbaseES.KES.serial.copy.PRIMARY KEY 问题描述 使用KingbaseES V8R3数据库的客户端工具ksql执行copy - ...

  3. 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数

    关键字 pg_get_function_arg_default,regproc 问题描述 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数获取函数或 ...

  4. 金仓数据库KingbaseES序列的操作

    关键字 kingbase,序列 问题描述 如何操作金仓数据库KingbaseES序列? 解决方案 1.创建一个新的序列数发生器. 创建一个称作serial的上升序列,从 101 开始: CREATE ...

  5. 金仓数据库KingbaseES行列转换

    概述 行列转换是在数据分析中经常用到的一项功能,金仓数据库KingbaseES从V8R6C3B0071版本开始通过扩展插件(kdb_utils_function)支持pivot和unpivot功能.在 ...

  6. 金仓数据库KingbaseES函数的管理

    关键字 kingbase,函数 问题描述 如何管理金仓数据库KingbaseES函数? 解决方案 a.创建一个函数 create or repalce function CREATE FUNCTION ...

  7. 金仓数据库KingbaseES模式的使用

    ​ 关键字 Kingbase.模式 正文 金仓数据库KingbaseES模式使用注意事项: 多个用户使用同一个数据库而不会相互影响: 对数据库中的对象进行逻辑分组,更便于管理: 各个应用分别使用各自的 ...

  8. 金仓数据库KingbaseES ORACLE_FDW常见问题

    ​  1. OCIEnvCreate错误 错误信息:error:error connecting to Oracle: OCIEnvCreate failed to create environmen ...

  9. 如何在金仓数据库KingbaseES中指定IP登录

    关键字 KingbaseES,指定IP 问题描述 如何在金仓数据库KingbaseES中指定IP登录? 解决方案 1. 修改data目录下sys_hba.conf文件 2. 进行IP修改,重启服务,在 ...

最新文章

  1. 地图样式自定义_干货在线 | ArcGIS中定义图框样式
  2. linux fifo 视频,Linux FIFO学习
  3. 我来做百科(第九天)
  4. 视图需要创建类吗_建筑类的职称需要先评初级吗
  5. 刺激(codevs 1958)
  6. oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
  7. 插入排序法(思路及代码实现)
  8. 【收藏】idea 背景图插件
  9. 【网络通信与信息安全】之深入解析TCP的“拥塞控制”原理
  10. 如何在Windows下安装Linux子系统(Ubuntu,openSUSU,SUSU Linux Server)
  11. java 集合框架快速预览
  12. js中一些常用的基本函数
  13. z370支持pcie信号拆分吗_定了!AMD B550主板确认将支持PCIE4.0,多项能力接近X570
  14. python整理-day4
  15. Docker学习总结(21)——Docke网络bridge详解
  16. 作业要求 20180925-1 每周例行报告
  17. 为什么南通的方言会有这么多?
  18. thinkphp框架环境部署
  19. lua 的斗地主逻辑算法
  20. 计算机技术 安防 工程师考试,信息安全工程师考试科目有哪几门

热门文章

  1. APP流量变现的“快车”,你坐上了吗?
  2. Iptables 指南 1.1.19(中文版)(三)
  3. 2020李宏毅机器学习笔记-More about Auto-encoder
  4. WPF将DataGrid导出到Excel表格
  5. /boot空间不足的解决办法
  6. a^x求导是怎么来的呢?
  7. 调查结果:您使用什么.NET Framework功能?
  8. WP Mail SMTP配置谷歌邮箱
  9. 2022年我国高性能纤维及复合材料产业链全景图及上中下游市场剖析
  10. oracle通过数据字典查看序列,oracle数据字典,oracle字典