暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

人大金仓V8R6双机热备部署

原创 董小姐 2024-07-14
1113

服务器环境配置

服务器规划

节点名称

IP

操作系统

平台

cpu

内存

硬盘

备注

node1

X86_64

192.168.40.112

UOS20 x86_64

64

4G

40G

主节点

node2

X86_64

192.168.40.113

UOS20 x86_64

64

2G

40G

备节点

最小配置要求 :

最低标准

CPU

主流的32位或64位CPU

内存

1GB以上

硬盘

1GB以上空闲空间

网络拓普图

系统参数配置

--安装支持图形化的依赖包
yum groupinstall  "GNOME Desktop"
yum groupinstall “X Window System"

--安装系统依赖包
yum install -y lsof
yum install -y net-tools
yum install -y unzip

操作系统时间

检查服务器时区

根据客户标准设置 OS 时区,国内通常为东八区"Asia/Shanghai".

--检查服务器时区
[root@localhost ~]# timedatectl status
               Local time: Tue 2024-06-04 21:19:15 CST
           Universal time: Tue 2024-06-04 13:19:15 UTC
                 RTC time: Tue 2024-06-04 13:19:14
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

--若操作系统时区不准确,进行修改
timedatectl set-timezone "Asia/Shanghai"

检查服务器时间

--检查服务器时间
date

--若操作系统时间不准确,进行修改
date -s "时间"

[root@localhost ~]# hwclock -w

安装依赖包

--图形化的依赖包
yum install -y xorg-x11-xauth #安装x11组件包
yum -y install wqy-zenhei-fonts* #安装中文字库
yum install gui
yum install gnome
yum install xorg

--集群需要的依赖包
yum install -y net-tools
yum install -y unzip
yum install -y lsof

执行系统配置脚本

2个节点都操作

上传optimize_system_conf.sh脚本至/install目录,/install目录若不存在进行创建

--/install目录若不存在进行创建
mkdir -p /install

--执行系统配置脚本
sh /install/optimize_system_conf.sh

根据自己的环境更改脚本里的参数并执行,脚本执行过程中会进行kingbase组和用户的创建、防火墙、SELinux安全设置、ulimit资源限制、RemoveIPC、sysctl.conf文件的配置。

规划目录

2个节点都操作

mkdir -p /KingbaseES/V8
mkdir -p /data
mkdir -p /backup
mkdir -p /archive
chown -R kingbase:kingbase /KingbaseES
chown -R kingbase:kingbase /data
chown -R kingbase:kingbase /backup
chown -R kingbase:kingbase /archive
chmod -R 775  /KingbaseES
chmod -R 700  /data
chmod -R 775  /backup
chmod -R 775  /archive

介质准备

访问金仓数据库官网下载金仓最新版本的数据库
目前金仓官方提供了所有可支持的平台的数据库版本和license,KingbaseES数据库最新版本为V8R6,先前分为单机版和集群版2种安装介质,现已合成1个安装介质,不再区分单机版和集群版。

安装介质下载并上传

数据库软件官方下载地址:https://www.kingbase.com.cn/xzzx/index.htm

授权文件下载并上传

授权文件官方下载地址:https://www.kingbase.com.cn/xzzx/index.htm

流复制部署过程

部署数据库(所有节点)

挂载安装包

--挂载安装包
[root@node1 ~]# mount /install/KingbaseES_V009R001C001B0025_Lin64_install.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

--解压授权文件
su - kingbase
cd /install/
unzip license_企业版_90天.zip

安装数据库

法一:图形化界面

--切换到kingbase用户进行安装
su - kingbase 
cd /mnt
export DISPLAY=192.168.40.246:0.0
./setup.sh

最后执行脚本

/KingbaseES/V8/install/script/root.sh
问题处理
问题1:root.sh执行失败
--问题描述
[root@node1 install]# /KingbaseES/V8/install/script/root.sh
/KingbaseES/V8/install/script/root.sh:行25: can not find startupcfg.sh:未找到命令

--原因
创建的安装目录和root.sh脚本中的安装目录不匹配

解决办法1

将/root.sh中INSTALLDIR=/KingbaseES/V9 更改为INSTALLDIR=/KingbaseES/V8

[root@node1 install]# cat /KingbaseES/V8/install/script/root.sh
#!/bin/bash

ROOT_UID=0
INSTALLDIR=/KingbaseES/V9
USERNAME=kingbase
DATADIR=/data
VERSION=V9
SERVICENAME=kingbased

# Run as root, of course.
if [ x"$UID" !=  x"$ROOT_UID" ]
then
    echo "Must be root to run this script, and root.sh should be executed in the '$0' way, not 'sh $0'."
    exit 1
fi

if [ -d $INSTALLDIR/Scripts ]; then
	$INSTALLDIR/Scripts/startupcfg.sh $VERSION $USERNAME $INSTALLDIR $DATADIR $SERVICENAME
elif [ -d $INSTALLDIR/install/script ]; then
  if [ -f $INSTALLDIR/Server/bin/enhance_os_param.sh ]; then
    bash $INSTALLDIR/Server/bin/enhance_os_param.sh $USERNAME  >/dev/null 2>/dev/null;
  fi
	$INSTALLDIR/install/script/startupcfg.sh $VERSION $USERNAME $INSTALLDIR $DATADIR $SERVICENAME
else
	"can not find startupcfg.sh"

解决办法2:安装前创建目录时mkdir -p /KingbaseES/V9 而不是mkdir -p /KingbaseES/V8,然后再安装

问题2:登录数据库报错
--问题描述
[kingbase@node1 ~]$ ksql -USYSTEM -W -p 55555
口令:
ksql: 错误: could not connect to server: 致命错误:  数据库 "system" 不存在

--解决办法  需加上-d参数
[kingbase@node1 ~]$ ksql -USYSTEM -W -p 55555 -d test
口令:
输入 "help" 来获取帮助信息.

法二:命令行

su - kingbase
echo $LANG
export LANG=en_US.UTF-8
cd /mnt
sh setup.sh -i console

最后执行脚本

/KingbaseES/V8/install/script/root.sh

配置环境变量

--配置环境变量
su - kingbase
vi ~/.bash_profile
export KINGBASE_HOME=/KingbaseES/V8/Server
export KINGBASE_DATA=/data
export KINGBASE_PORT=54321
export PATH=$PATH:$KINGBASE_HOME/bin

--环境变量生效
source ~/.bash_profile

备库停库并清除数据目录

--停止备库数据库
su - kingbase
sys_ctl stop -D /data

--清空备库主数据
cd /data
rm -rf *
rm -rf .wallet/

主库参数配置

配置归档参数

vi /data/kingbase.conf
archive_mode = on
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'

配置wal流复制参数

9个参数

cat >> /data/kingbase.conf <<EOF
wal_log_hints = on
max_wal_senders = 10
max_replication_slots = 10
wal_keep_segments = 1024
hot_standby = on
synchronous_commit = on
synchronous_standby_names = '1(node2,node3)'
hot_standby_feedback = on
fsync = on
full_page_writes= on
EOF

--参数说明
1 . 代表1个节点同步就可以
2. 代表2个节点都要同步

配置主库sys_hba.conf支持replication

cat >> /data/sys_hba.conf <<EOF
host replication system 127.0.0.1/32 scram-sha-256
host replication system 0.0.0.0/0 scram-sha-256
EOF

注意:算法必须是scram-sha-256 而不是md5,不然后面备库全量传输会报错:

[kingbase@node3 data]$ sys_basebackup -h 192.168.40.112 -p 54321 -U system -Fp -X stream -v -P -D /data
sys_basebackup: 错误: 无法连接到服务器:不支持服务器的SASL身份验证机制

重启主库数据库服务

sys_ctl restart -D /data/

在主库上创建replication复制槽

--查看复制槽信息
SELECT slot_name, slot_type, active FROM sys_replication_slots;
无输出

--创建复制槽
SELECT * FROM sys_create_physical_replication_slot('slot_node3');

--查看复制槽信息
SELECT slot_name, slot_type, active FROM sys_replication_slots;

 slot_name  | slot_type | active
------------+-----------+--------
 slot_node3 | physical  | f
(1 行记录)

备库配置

用sys_basebackup全量传输

官方文档位置:

sys_basebackup -h 192.168.40.112 -p 54321 -U system -Fp -X stream -v -P -D /data

参数说明:
-Fp : 把输出写成普通文件,使用与当前数据目录和表空间相同的布局。当集群没有额外表空间时,
整个数据库将被放在目标目录中。如果集群包含额外的表空间,主数据目录将被放置在目标目
录中,但是所有其他表空间将被放在它们位于服务器上的相同的绝对路径中。
这是默认格式。

-X stream:在备份中包括所需的预写式日志文件(WAL 文件)。这包括所有在备份期间产生的预写式日志。除非指
定了方法 none,可以直接在提取出的目录中启动 kingbase 而无需参考日志归档,所以这样得到的是一种
完整的独立备份。
在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接,并且在运行备份时并
行开始流传输预写式日志。因此,它将使用最多两个由 max_wal_senders 参数配置的连接。只
要客户端能保持接收预写式日志,使用这种模式不需要在主库上保存额外的预写式日志。
如果使用 tar 格式,预写式日志文件被写入到一个单独的名为 sys_wal.tar 的文件。
这个值是默认值。

-P --progress
启用进度报告。启用这个选项将在备份期间发表一个大致的进度报告。由于数据库可能在备份期间改变,
这仅仅是一种近似进度并且可能不会刚好在 100% 结束。特别地,当 WAL 日志被包括在备份中时,总数
据量无法预先估计,并且这种情况下一旦传递的总估计不包含 WAL, 那么估计的大小写还会增加。
当这个选项被启用时,备份开始时会计算整个数据库的尺寸,接着开始发送实际的内容。这可能使备份需
要多花一点点时间,特别是在发送第一个数据之前需要花费更长时间。

-v --verbose
启用冗长模式。将在启动和关闭期间输出一些额外步骤,并且如果进度报告也被启用,还会显示当前正在
被处理的确切文件名。

问题处理

--问题描述
备库用sys_basebackup全量传输,报错如下:
[kingbase@node3 ~]$ sys_basebackup -h 192.168.40.112 -p 54321 -U system -Fp -X stream -v -P -D /data
sys_basebackup: 错误: 无法连接到服务器:不支持服务器的SASL身份验证机制

--解决办法
将主库的sys_hba.conf配置文件中增加的复制条目的算法  md5改成scram-sha-256

vi /data/sys_hba.conf
host replication system 127.0.0.1/32 scram-sha-256
host replication system 0.0.0.0/0 scram-sha-256

--重启主库
sys_ctl restart -D /data/

备库再次全量传输不再报错
[kingbase@node3 data]$ sys_basebackup -h 192.168.40.112 -p 54321 -U system -Fp -X stream -v -P -D /data
口令:
sys_basebackup: 开始基础备份,等待检查点完成
sys_basebackup: 已完成检查点
sys_basebackup: 预写日志起始于时间点: 0/4000028, 基于时间线1
sys_basebackup: 启动后台 WAL 接收进程
sys_basebackup: 已创建临时复制槽"sys_basebackup_50768"
71661/71661 kB (100%), 1/1 表空间
sys_basebackup: 预写日志结束点: 0/40000F8
sys_basebackup: 等待后台进程结束流操作...
sys_basebackup: 同步数据到磁盘...
sys_basebackup: 基础备份已完成

配置备库kingbase.conf

端口 ip 用户名 密码 application_name

3个参数

cat >> /data/kingbase.conf << EOF
primary_conninfo='port=54321 host=192.168.40.112 user=system password=kingbase  application_name=node3'
recovery_target_timeline='latest'
primary_slot_name ='slot_node3'
EOF

创建standby.signal文件

touch /data/standby.signal

启动node3的KES服务

sys_ctl start -D /data

查看replication进程

ps -ef|grep -v grep|grep -E 'sender|receiver'

流复制验证

主库上操作

查看复制状态

ksql -Usystem test
\x
SELECT * FROM sys_stat_replication;

输出如下:

test=# \x
扩展显示已打开.
test=# SELECT * FROM sys_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 50921
usesysid         | 10
usename          | system
application_name | node3
client_addr      | 192.168.40.113
client_hostname  |
client_port      | 32462
backend_start    | 2024-07-07 20:14:03.338774+08
backend_xmin     |
state            | streaming
sent_lsn         |
write_lsn        | 0/5000130
flush_lsn        | 0/5000130
replay_lsn       | 0/5000130
write_lag        |
flush_lag        |
replay_lag       |
sync_priority    | 2
sync_state       | sync
reply_time       | 2024-07-07 20:20:35.202005+08

查看复制槽信息

\x
SELECT * FROM sys_replication_slots;

输出如下:

test=# \x
扩展显示已打开.
test=# SELECT * FROM sys_replication_slots;
-[ RECORD 1 ]-------+-----------
slot_name           | slot_node3
plugin              |
slot_type           | physical
datoid              |
database            |
temporary           | f
active              | t
active_pid          | 50921
xmin                | 1042
catalog_xmin        |
restart_lsn         | 0/5000130
confirmed_flush_lsn |

查看replication进程(主节点上可以看到正在向从机发送数据流)

\! ps -ef|grep -v grep|grep -E 'sender|receiver'

输出如下:

test=# \! ps -ef|grep -v grep|grep -E 'sender|receiver'
kingbase   50921   50748  0 20:14 ?        00:00:00 kingbase: walsender system 192.168.40.113(32462) streaming 0/5000130

在主库创建测试数据

CREATE database prod01;
\c prod01 system
CREATE table t01 (id int ,name text);
INSERT INTO t01 SELECT generate_series(1,1000),md5(random());
SELECT * FROM t01 limit 2;

\x
SELECT * FROM sys_stat_replication;

输出如下:

prod01=# \x
扩展显示已打开.
prod01=# SELECT * FROM sys_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 50921
usesysid         | 10
usename          | system
application_name | node3
client_addr      | 192.168.40.113
client_hostname  |
client_port      | 32462
backend_start    | 2024-07-07 20:14:03.338774+08
backend_xmin     |
state            | streaming
sent_lsn         |
write_lsn        | 0/5045860
flush_lsn        | 0/5045860
replay_lsn       | 0/5045860
write_lag        |
flush_lag        |
replay_lag       |
sync_priority    | 2
sync_state       | sync
reply_time       | 2024-07-07 20:23:26.143057+08

备库上操作

查看备库数据

ksql -h 192.168.40.113 -p 54321 -U system -dprod01

SELECT * FROM t01 limit 2;

输出如下:

[kingbase@node2 ~]$ ksql -h 192.168.40.113 -p 54321 -U system -dprod01
用户 system 的口令:
输入 "help" 来获取帮助信息.

prod01=# SELECT * FROM t01 limit 2;
 id |               name
----+----------------------------------
  1 | b56f695e47dce8b6dce74bce6f3f0b5c
  2 | 9762a65292f59ddbee84ebc93129fc03
(2 行记录)

扩展

sys_basebackup简介

sys_basebackup —获得一个 KingbaseES 集群的一个基础备份。
sys_basebackup 被用于获得一个正在运行的 KingbaseES 数据库集群的基础备份。获得这些备份不会影响连接到该数据库的其他客户端,并且可以被用于时间点恢复以及用作一个日志传送或流复制后备服务器的开始点。
sys_basebackup 建立数据库集群文件的一份二进制副本,同时保证系统进入和退出备份模式。备份总是从整个数据库集群获得,不能备份单个数据库或数据库对象。关于个体数据库备份,必须使用sys_dump 的工具。
备份通过一个常规 KingbaseES 连接制作,并且使用复制协议。该连接必须由一个超级用户或者一个具有
REPLICATION 权限(角色属性)的用户建立,并且 sys_hba.conf 必须显式地允许该复制连接。该服务器必须由max_wal_senders 配置,设置足够高的级别,留出至少一个会话用于备份以及一个用于 WAL 流(如果使用流)。
在同一时间可以有多个 sys_basebackup 运行,但是从性能角度来说最好只做一个备份并且复制结果。
sys_basebackup 不仅能从主库也能从备库创建一个基础备份。要从备库获得一个备份,设置备库让它能接受复制连接(也就是,设置 max_wal_senders 和 hot_standby ,并且配置基于主机的认证(见 sys_hba.conf 文件))。需要在主库上启用 full_page_writes 。
注意在来自备库的在线备份中有一些限制:
• 不会在被备份的数据库集群中创建备份历史文件。
• 如果正在使用-X none,不保证备份所需的所有 WAL 文件在备份结束时被归档。
• 如果备库在执行备份期间备库被提升为主库,备份会失败。
• 本工具不支持 UNLOGGED TABLE 的数据内容的备份和还原。
• 备份所需的所有 WAL 记录必须包含足够的全页写,这要求你在主库上启用 full_page_writes,并且 WAL 文件不能被类似 sys_compresslog 的工具以 archive_command 方式移除全页写。

参数说明

下列命令行选项控制输出的位置和格式。

-D directory --kingbase_data=directory

基础备份输出目录。必要时sys_basebackup将创建该目录及任何父目录。该目录可能已经存在,但是如果该目录已经存在并且非空就是一个错误。

当备份处于 tar 模式中并且目录被指定为 - (破折号)时,tar文件将被写到 stdout 。这个选项是必需的。

-F format --format=format

为输出选择格式。 ``format`` 可以是下列之一:

p plain

把输出写成普通文件,使用与当前数据目录和表空间相同的布局。当集群没有额外表空间时,整个数据库将被放在目标目录中。如果集群包含额外的表空间,主数据目录将被放置在目标目录中,但是所有其他表空间将被放在它们位于服务器上的相同的绝对路径中。这是默认格式。

t tar

将输出写成目标目录中的 tar文件。主数据目录将被写入到一个名为 base.tar 的文件中,并且其他表空间将被以其 OID 命名。

如果值 - (破折号)被指定为目标目录,tar 内容将被写到标准输出,适合于管道输出到其他程序,例如gzip。只有当集群没有额外表空间并且没有使用WAL流时这才是可能的。

-r rate --max-rate=rate

从该服务器传输数据的最大传输率。值的单位是千字节每秒。加上一个后缀 M 表示兆字节每秒。也接受后缀 k ,但是没有效果。合法的值在32 千字节每秒到 1024 兆字节每秒之间。

其目标是限制在运行服务器上的sys_basebackup产生的影响。

这个选项总是会影响数据目录的传输。如果收集方法是 fetch 时,只有 WAL 文件受到影响。

-R --write-recovery-conf

在输出目录中(或者当使用 tar 格式时在基础归档文件中)创建 standby.signal 并附加连接设置到 kingbase.auto.conf 来简化设置一个后备服务器。 kingbase.auto.conf 文件将记录连接设置(如果有)以及sys_basebackup所使用的复制槽,这样流复制后面就会使用相同的设置。

-T olddir = newdir --tablespace-mapping=olddir = newdir

在备份期间将目录 ``olddir`` 中的表空间重定位到 ``newdir`` 中。为使之有效, ``olddir`` 必须正好匹配表空间所在的路径(但如果备份中没有包含 ``olddir`` 中的表空间也不是错误)。 ``olddir`` ``newdir`` 必须是绝对路径。如果一个路径凑巧包含了一个 = 符号,可用反斜线对它转义。对于多个表空间可以多次使用这个选项。示例见下文。

如果以这种方法重定位一个表空间,主数据目录中的符号链接会被更新成指向新位置。因此新数据目录已经可以被一个所有表空间位于更新后位置的新服务器实例使用。

--waldir=waldir

指定用于预写式日志目录的位置。 ``waldir`` 必须是绝对路径。只有当备份是普通文件 ``plain`` 模式时才能指定事务日志目录。

-X method --wal-method=method

在备份中包括所需的预写式日志文件(WAL文件)。这包括所有在备份期间产生的预写式日志。除非指定了方法 none ,可以直接在提取出的目录中启动kingbase而无需参考日志归档,所以这样得到的是一种完整的独立备份。

支持下列收集预写式日志的方法:

n none

不要在备份中包括预写式日志。

f fetch

在备份末尾收集预写式日志文件。因此,有必要把wal_keep_segments 参数设置得足够高,这样在备份末尾之前日志不会被移除。如果在要传输日志时它已经被更迭,备份将失败并且是不可用的。

如果使用tar格式,预写式日志文件将被写入到 base.tar 文件。

s stream

在备份被创建时流传送预写式日志。这将开启一个到服务器的第二连接,并且在运行备份时并行开始流传输预写式日志。因此,它将使用最多两个由max_wal_senders 参数配置的连接。只要客户端能保持接收预写式日志,使用这种模式不需要在主库上保存额外的预写式日志。

如果使用tar格式,预写式日志文件被写入到一个单独的名为 sys_wal.tar 的文件。这个值是默认值。

-z --gzip

启用对 tar 文件输出的 gzip 压缩,使用默认的压缩级别。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀 .gz

-Z level --compress=level

启用对 tar 文件输出的 gzip 压缩,并且制定压缩机别(0 到 9,0 是不压缩,9 是最佳压缩)。只有使用 tar 格式时压缩才可用,并且会在所有tar文件名后面自动加上后缀 .gz

下列命令行选项控制备份的生成和程序的运行。

-c fast|spread --checkpoint=fast|spread

将检查点模式设置为 fast(立刻)或 spread(默认)。

-C --create-slot

这个选项会导致在开始备份前创建一个由 --slot 选项指定名称的复制槽。如果槽已经存在则会发生错误。

-l label --label=label

为备份设置标签。如果没有指定,将使用一个默认值“ sys_basebackup base backup ”。

-n --no-clean

默认情况下,当 sys_basebackup 因为一个错误而中止时,它会把它意识到无法完成该工作之前已经创建的目录(例如数据目录和预写式日志目录)都移除。这个选项可以禁止这种清洗,因此可以用于调试。

注意不管哪一种方式都不会清除表空间目录。

-N --no-sync

默认情况下, sys_basebackup 将等待所有文件被安全地写到磁盘上。这个选项导致 sys_basebackup 不做这种等待就返回,这样会更快一些,但是也意味着后续发生的操作系统崩溃可能会使得这个基础备份损坏。通常这个选项对测试比较有用,在创建生产安装时不应该使用。

-P --progress

启用进度报告。启用这个选项将在备份期间发表一个大致的进度报告。由于数据库可能在备份期间改变,这仅仅是一种近似进度并且可能不会刚好在 100% 结束。特别地,当 WAL 日志被包括在备份中时,总数据量无法预先估计,并且这种情况下一旦传递的总估计不包含WAL,那么估计的大小写还会增加。

当这个选项被启用时,备份开始时会计算整个数据库的尺寸,接着开始发送实际的内容。这可能使备份需要多花一点点时间,特别是在发送第一个数据之前需要花费更长时间。

-S slotname --slot=slotname

这个选项仅能与 -X stream 一起使用。它导致WAL流使用指定的复制槽。如果该基础备份的目的是被用作一台使用复制槽的流复制后备,则它应该使用与 primary_slot_name 中相同的复制槽名称。通过这种方式,可以确保服务器不会移除位于该基础备份结束与流复制开始之间产生的任何所需的WAL数据。

指定的复制槽必须已经存在,除非同时使用了选项 -C

如果这个选项没有被指定并且服务器支持临时复制槽,则会自动使用一个临时复制槽来进行WAL流。

-v --verbose

启用冗长模式。将在启动和关闭期间输出一些额外步骤,并且如果进度报告也被启用,还会显示当前正在被处理的确切文件名。

--no-slot

如果服务器支持临时复制槽,这个选项防止备份期间创建临时复制槽。

在使用日志流时,如果没有用选项 -S 指定槽名称,则默认会创建临时复制槽。

这个选项的主要目的是允许在服务器没有空闲复制槽可用时制作基础备份。使用复制槽几乎总是最好的方式,因为它能防止备份期间所需的WAL被删除。

--no-verify-checksums

如果在取基础备份的服务器上启用了校验码验证,则禁用校验码验证。

默认情况下,校验码会被验证并且校验码失败将会导致一种非零的退出状态。不过,基础备份在这种情况下将不会被移除,就好像使用了 --no-clean 选项一样。校验和校验失败也将被在sys_stat_database视图中被报告。

下列命令行选项控制数据库连接参数。

-d connstr --dbname=connstr

以一个连接字符串的形式指定用于连接到服务器的参数。

为了和其他客户端应用一致,该选项被称为 --dbname 。但是因为sys_basebackup并不连接到集群中的任何特定数据库,连接字符串中的数据库名将被忽略。

-h host --host=host

指定运行服务器的机器的主机名。如果该值以一个斜线开始,它被用作 Unix 域套接字的目录。默认值取自 KINGBASE_HOST 环境变量(如果设置),否则会尝试一个 Unix 域套接字连接。

-p port --port=port

指定服务器正在监听连接的 TCP 端口或本地 Unix 域套接字文件扩展。默认用 KINGBASE_PORT 环境变量中的值(如果设置),或者一个编译在程序中的默认值。

-s interval --status-interval=interval

指定发送回服务器的状态包之间的秒数。这允许我们更容易地监控服务器的进度。一个零值完全禁用这种周期性的状态更新,不过当服务器需要时还是会有一个更新会被发送来避免超时导致的断开连接。默认值是 10 秒。

-U username --username=username

要作为哪个用户连接。

-w --no-password

从不发出一个口令提示。如果服务器要求口令认证并且没有其他方式提供口令(例如一个 .kbpass 文件),那儿连接尝试将失败。这个选项对于批处理任务和脚本有用,因为在其中没有一个用户来输入口令。

-W --password

强制sys_basebackup在连接到一个数据库之前提示要求一个口令。

这个选项不是必不可少的,因为如果服务器要求口令认证,sys_basebackup将自动提示要求一个口令。但是,sys_basebackup将浪费一次连接尝试来发现服务器想要一个口令。在某些情况下值得用 -W 来避免额外的连接尝试。

其他选项也可用:

-V --version

打印sys_basebackup版本并退出。

-? --help

显示有关sys_basebackup命令行参数的帮助并退出。

示例

创建服务器 mydbserver 的一个基础备份并将它存储在本地目录 /opt/Kingbase/ES/V8/data 中:

$ sys_basebackup -h mydbserver -D /opt/Kingbase/ES/V8/data

创建本地服务器的一个备份,为其中每一个表空间产生一个压缩过的 tar 文件,并且将它存储在目录 backup 中,在运行期间显示一个进度报告:

$ sys_basebackup -D backup -Ft -z -P

创建一个单一表空间本地数据库的备份并且使用bzip2压缩它:

$ sys_basebackup -D - -Ft -X fetch | bzip2 > backup.tar.bz2

(如果在该数据库中有多个表空间,这个命令将失败)。

创建一个本地数据库的备份,其中 /opt/ts 中的表空间被重定位到 ./backup/ts

$ sys_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts

创建一个本地数据库的备份,在备份过程上输出备份进度

$ sys_basebackup -Fp -Pv -Xf -D backup/data

备注

在备份的开始时,需要向从中拿去备份的服务器写一个检查点。尤其在没有使用选项 --checkpoint=fast 时,这可能需要一点时间,在其间sys_basebackup看起来处于闲置状态。

备份将包括数据目录和表空间中的所有文件,包括配置文件以及由第三方放在该目录中的任何额外文件,不过由KingbaseES管理的特定临时文件除外。但只有常规文件和目录会被拷贝,但用于表空间的符号链接会被保留。指向KingbaseES已知的特定目录的符号链接被拷贝为空目录。其他符号链接和特殊设备文件会被跳过。

表空间默认将以普通格式备份到与它们在服务器上相同的路径中,除非使用了 --tablespace-mapping 选项。如果没有这个选项并且表空间正在使用,在同一台服务器上进行普通格式的基础备份将无法工作,因为备份必须要写入到与原始表空间相同的目录位置。

在使用 tar 格式模式时,用户应负责在启动 KingbaseES 服务器前解压每一个 tar 文件。如果有额外的表空间,用于它们的 tar 文件需要被解压到正确的位置。在这种情况下,服务器将根据包含在 base.tar 文件中的 tablespace_map 文件的内容为那些表空间创建符号链接。

sys_basebackup可以和具有相同或较低主版本的服务器一起工作,最低是KingbaseES V8R2 。WAL流模式( -X 流 )只能和版本为KingbaseES V8R3及以上版本的服务器一起工作。当前版本的 tar格式模式( --format=tar )只能用于版本KingbaseES V8R3及以上的服务器。

如果在源集群上启用了组权限,在 plain 以及 tar 模式中sys_basebackup将保留组权限。

参考链接:https://help.kingbase.com.cn/v8/admin/reference/ref-client/sys_basebackup.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论