lt_initdb — 数据库集群初始化工具包,用于创建一个新的 LightDB 数据库集群
lt_initdb
[option
...] [ --pgdata
| -D
] directory
lt_initdb
数据库集群初始化工具包,用于创建一个新的 LightDB 数据库集群。数据库集群是由单个服务器实例管理的一组数据库。
一个数据库实例的创建包括创建存放数据库数据的目录、生成共享目录表(属于整个实例而不是任何特定数据库的表)并且创建template1
和postgres
数据库。当你后来创建一个新的数据库时,任何在template1
数据库中的东西都会被复制(因此,任何已安装在template1
中的东西都会被自动地复制到后来创建的每一个数据库中)。postgres
数据库是便于用户、工具和第三方应用使用的默认数据库。
尽管lt_initdb
将尝试创建指定的数据目录,它可能没有权限(如果想要的数据目录的父目录被根用户拥有)。要在这样一种设置中初始化,作为 root 创建一个空数据目录,然后使用chown
将该目录赋予给数据库用户账户,再然后su
成为该数据库用户并运行lt_initdb
。
lt_initdb
必须以将拥有该服务器进程的用户运行,因为该服务器需要访问lt_initdb
创建的文件和目录。因为该服务器不能作为 root 运行,你不能以 root 运行lt_initdb
(事实上它会拒绝这样做)。
由于安全原因,由lt_initdb
创建的新实例默认将只能由实例拥有者访问。--allow-group-access
选项允许与实例拥有者同组的任何用户读取实例中的文件。这对非特权用户执行备份很有用。
lt_initdb
初始化该数据库实例的默认区域和字符集编码。当一个数据库被创建时,其字符集编码、排序顺序(LC_COLLATE
)和字符集类(LC_CTYPE
,例如大写、小写、数字)可以被独立设置。lt_initdb
为template1
数据库确定那些设置,它们将作为所有其他数据库的默认值。
要修改默认排序顺序或字符集类,使用--lc-collate
和--lc-ctype
选项。除C
或POSIX
之外的排序顺序也有性能罚值。由于这些原因,在运行lt_initdb
时选择正确的区域很重要。
余下的区域分类可以在服务器启动之后改变。你也可以使用--locale
来为所有区域分类设置默认值,包括排序顺序和字符集类。所有服务器区域值(lc_*
)可以通过SHOW ALL
显示。详见Section 22.1。
要修改默认编码,使用--encoding
。详见Section 22.3.
在使用 lt_initdb
初始化数据库集群之后,lt_initdb
会将存储数据库集群的目录记录在 $LTHOME/instance_list.conf
文件中。
-A authmethod
--auth=authmethod
此选项指定了本地用户在 lt_hba.conf
(host
和 local
行)中使用的默认身份验证方法。 lt_initdb
将使用指定的身份验证方法预填充 lt_hba.conf
条目,用于非复制以及复制连接。
除非您信任系统上的所有本地用户,请不要使用 trust
。 为了方便安装,trust
是默认值。
--auth-host=authmethod
此选项指定了通过 TCP/IP 连接在 lt_hba.conf
(host
行)中使用的本地用户的身份验证方法。
--auth-local=authmethod
此选项指定了通过 Unix 套接字连接在 lt_hba.conf
(local
行)中使用的本地用户的身份验证方法。
-p port
此选项指定数据库集群的端口。 默认端口为 5432。
-D directory
--pgdata=directory
此选项指定应存储数据库集群的目录。 这是 lt_initdb
所需的唯一信息,但您可以通过设置 LTDATA
环境变量来避免编写它,这可能很方便,因为数据库服务器 (lightdb
) 可以在后来通过相同的变量找到数据库目录。
-E encoding
--encoding=encoding
选择模板数据库的编码。 这也将是您稍后创建的任何数据库的默认编码,除非您在那里覆盖它。 默认值来自区域设置,如果不起作用,则为 SQL_ASCII
。 LightDB 服务器支持的字符集在 Section 22.3.1 中描述。
-g
--allow-group-access
允许与集群所有者在同一组中的用户读取由 lt_initdb
创建的所有集群文件。
-u
--upgrade-mode
创建一个没有扩展的数据库集群,相当于直接使用 lt_initdb
。
-k
--data-checksums
在数据页上使用校验和以帮助检测 I/O 系统可能会默默发生的损坏。 启用校验和可能会产生明显的性能损失。 如果设置了校验和,则所有对象的所有数据库都会计算校验和。 所有校验和故障都将在 pg_stat_database
中报告。
-K
--encryption-key-command
用于透明数据加密。 在创建数据库实例之前,您必须编写一些代码,以确保数据库在启动和实例创建期间可以读取密钥。 密钥是一个 32 字节的十六进制字符串。
以下是可能的最简单示例:
cat /somewhere/provide_key.sh #!/bin/sh echo 882fb7c12e80280fd664c69d2d636913
您只需要编写一个将密钥打印到标准输出的程序即可。 确保 LightDB 能够执行此程序:
chmod +x /somewhere/provide_key.sh
注意:您不必编写 shell 脚本 - 您可以使用任何可执行文件,例如 C、Go 或 Python。
创建数据库实例:
lt_initdb -p 5432 -D ./data -K /somewhere/provide_key.sh
--locale=locale
设置数据库集群的默认区域设置。 如果未指定此选项,则从 lt_initdb
运行的环境中继承区域设置。 区域设置支持在 Section 22.1 中描述。
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale
类似于 --locale
,但仅在指定的类别中设置区域设置。
--no-locale
等同于 --locale=C
。
-N
--no-sync
默认情况下,lt_initdb
会等待所有文件安全写入磁盘。此选项使 lt_initdb
返回而不等待,这样速度更快,但意味着随后的操作系统崩溃可能会导致数据目录损坏。 通常,此选项对于测试很有用,但在创建生产安装时不应使用。
--pwfile=filename
从文件中读取数据库超级用户的密码。文件的第一行被视为密码。
-S
--sync-only
安全地将所有数据库文件写入磁盘并退出。这不执行任何正常的 lt_initdb 操作。
-T config
--text-search-config=config
设置默认的文本搜索配置。 有关更多信息,请参见 default_text_search_config。
-U username
--username=username
选择数据库超级用户的用户名。默认情况下,它是运行 lt_initdb
的有效用户的名称。超级用户的名称并不重要,但您可以选择使用惯常的名称 lightdb,即使操作系统用户的名称不同。
-W
--pwprompt
强制 lt_initdb
提示输入数据库超级用户的密码。如果您不打算使用密码验证,那么这个选项不重要。否则,在设置密码之前,您将无法使用密码验证。
-X directory
--waldir=directory
指定写入前日志应存储的目录。
--wal-segsize=size
设置 WAL 日志段的大小,以兆字节为单位。这是 WAL 日志中每个单独文件的大小。默认大小为 512 兆字节。该值必须是 1 到 1024(兆字节)之间的 2 的幂。此选项只能在初始化期间设置,无法在以后更改。
调整此大小可用于控制 WAL 日志传送或归档的粒度。此外,在 WAL 日志量很大的数据库中,每个目录中的 WAL 文件数量可能会成为性能和管理问题。增加 WAL 文件大小将减少 WAL 文件数量。
--install-mode=mode
数据库集群安装模式,共有三种安装模式。
single
:独立版本。
ha
:高可用版本。
distributed
:分布式版本。
默认安装模式为 single
。
--compatible-type=type
数据库集群兼容性类型,共有三种兼容性类型:
off
:与其他数据库功能不兼容。
mysql
:与 MySQL 数据库功能兼容。
oracle
:与 Oracle 数据库功能兼容。
默认兼容性类型为 off
。
还有其他不太常用的选项可用:
-d
--debug
从引导后端和其他一些不太重要的消息中打印调试输出。
引导后端是程序 lt_initdb
用于创建目录表的程序。
此选项会生成大量极其无聊的输出。
-L directory
指定 lt_initdb
初始化数据库集群时应查找其输入文件的位置。
通常情况下,这不是必需的。如果需要明确指定其位置,程序会提示您。
-n
--no-clean
默认情况下,当 lt_initdb
确定错误阻止其完全创建数据库集群时,
它会删除在发现无法完成作业之前可能创建的任何文件。
此选项禁止清理,因此对于调试非常有用。
其他选项:
-V
--version
打印 lt_initdb 的版本并退出。
-?
--help
显示有关 lt_initdb 命令行参数的帮助信息,并退出。
LTDATA
指定数据库实例存储的目录;可以使用 -D
选项来覆盖。
LT_COLOR
指定是否在诊断信息中使用颜色。可能的值为 always
、auto
和 never
。
TZ
指定创建的数据库实例的默认时区。该值应为完整的时区名称(参见 Section 9.5.3)。
像大多数其他 LightDB 实用程序一样,此实用程序也使用 libpq 支持的环境变量(请参见 Section 32.14)。
建议使用 lt_initdb
,否则某些功能将不可用。
如果您直接运行 initdb(不推荐)
,可以像以下这样使用:
$LTHOME/scripts/5_lightdb_modify_para.sh $LTHOME $LTDATA OLTP/OLAP shared_buffers(MB) effective_cache_size(MB) $LTPORT $INSTALL_MODE $COMPATIBLE_TYPE $LTHOME/scripts/6_lightdb_start.sh $LTHOME $LTDATA (如果未启动) $LTHOME/scripts/8_lightdb_create_extension.sh $LTHOME $LTPORT $INSTALL_MODE