一、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 databa