V8R6小版本升级步骤(单机环境)

news2024/9/20 5:33:42

在KingbaseES V8R6版本提供了sys_upgrade的升级工具。

sys_upgade介绍

sys_upgrade实现KingbaseES服务器实例版本升级。

sys_upgrade 允许将存储在KingbaseES数据文件中的数据升级到一个更高的KingbaseES主版本,而无需进行主版本升级(例如从 V8R6C4 到 V8R6C5)通常所需的数据转储/重载。

主 KingbaseES 版本通常会加入新的特性,这些新特性常常会更改系统表的布局,但是内部数据存储格式很少改变。 sys_upgrade 使用这一事实来通过创建新系统表并且重用旧的用户数据文件来执行快速升级。

如果未来的主要版本以一种使旧数据格式不可读的方式更改数据存储格式,则 sys_upgrade 将无法用于此类升级。 sys_upgrade 会尽最大努力确保新旧集簇是二进制兼容的,例如,通过检查编译设置是否兼容(是否以 32/64 位编译二进制文件)。

保持外部模块也是二进制兼容的也很重要,尽管 sys_upgrade 无法检查这一点。 sys_upgrade 支持从 V8R6(20211031版本) 及其后版本升级到当前的KingbaseES主版本,包括快照和beta版本。

sys_upgrade 目前暂不支持 Windows 版本的KingbaseES升级。

sys_upgade相关参数

sys_upgrade { -b | --old-bindir } oldbindir { -B | --new-bindir } newbindir { -d | --old-datadir } olddatadir { -D | --new-datadir } newdatadir [ option ...]

参数说明

sys_upgrade 接受下列命令行参数:

-b bindir --old-bindir= bindir  --旧的 KingbaseES 可执行文件目录; 环境变量 KBBINOLD
-B bindir --new-bindir= bindir  --新的 KingbaseES 可执行文件目录; 环境变量 KBBINNEW
-c --check  --只检查集簇,不更改任何数据。
-d datadir --old-datadir= datadir  旧的集簇数据目录;环境变量 KBDATAOLD
-D datadir --new-datadir= datadir  新的集簇数据目录;环境变量 KBDATANEW 
-j --jobs  --要同时使用的进程或线程数。
-k --link  --使用硬链接来代替将文件拷贝到新集簇。
-o options --old-options options --直接传送给旧 kingbase 命令的选项,多个选项可以追加在后面。
-O options --new-options options --直接传送给新 kingbase 命令的选项,多个选项可以追加在后面。
-p port --old-port= port --旧的集簇端口号;环境变量 KBPORTOLD 。
-P port --new-port= port --新的集簇端口号;环境变量 KBPORTNEW 。
-r --retain  --即使在成功完成后也保留 SQL 和日志文件。
-s dir --socketdir=dir  --升级期间用于 kingbase 套接字的目录;默认为当前工作目录;环境变量 KINGBASE_SOCKETDIR 。
-U username --username= username --集簇的安装用户名;环境变量 KBUSER 。
-v --verbose  --启用详细的内部日志。
-V --version  --显示版本信息,然后退出。
--clone --使用高效的文件拷贝(在某些系统上也称为 reflinks ),而不是将文件复制到新集簇。这会导致数据文件近乎即时复制,从而在不影响旧集簇的同时提供 -k/--link 的速度优势。
文件拷贝仅在某些操作系统和文件系统上受支持。如果它被选中但不受支持,则 sys_upgrade 运行将出错。目前,它在带有 Btrfs 和 XFS(在使用 reflink 支持创建的文件系统上)的 Linux(内核 4.5 或更高版本)以及带有 APFS 的 macOS 上受支持。
-? --help  --显示帮助,然后退出。

注意事项

应该运行新服务器而不是旧服务器的 sys_upgrade 二进制文件。 sys_upgrade 需要指定新旧集簇的数据和可执行文件( bin )目录。你也可以指定用户和端口值,以及你是否想要用链接来取代默认的复制行为对数据文件进行处理。

如果你使用链接模式,升级将会快很多(不需要文件拷贝)并且将使用更少的磁盘空间,但是在升级后一旦启动新集簇,旧集簇就无法被访问。

链接模式也要求新旧集簇数据目录位于同一个文件系统中(表空间和 sys_wal 可以在不同的文件系统中)。完整的选项列表可见 sys_upgrade --help 。

--jobs 选项允许多个 CPU 核心被用来复制/链接文件以及并行地转储和重载数据库模式。这个选项一个比较好的值是 CPU核心数和表空间数的最大值。这个选项可以显著地减少升级运行在一台多处理器机器上的多数据库服务器的时间。

一旦启动, sys_upgrade 将验证两个集簇是否兼容并且执行升级。你可以使用 sys_upgrade --check 来只执行检查,这种模式即使在旧服务器还在运行时也能使用。

sys_upgrade --check 也将列出任何在更新后需要做的手工调整。如果你将要使用链接模式,你应该使用 --link 选项和 --check 一起来启用链接模式相关的检查。

sys_upgrade 要求在当前目录中的写权限。显然,没有人可以在升级期间访问这些集簇。 sys_upgrade 默认会在端口 50432上运行服务器来避免意外的客户端连接。

在做升级时,可以对两个集簇使用相同的端口号,因为新旧集簇不会在同时被运行。不过,在检查一个旧的运行中服务器时,新旧端口号必须不同。

如果在恢复数据库模式时发生错误, sys_upgrade 将会退出并且你必须恢复旧集簇。要再次尝试 sys_upgrade ,你将需要修改旧集簇,这样 sys_upgrade 模式会成功恢复。

如果问题是一个 contrib 模块,你可能需要从旧集簇中卸载该模块并且在升级后重新把它安装在新集簇中,不过这样做的前提是该模块没有被用来存储用户数据。

参考文档:12. sys_upgrade — KingbaseES产品手册

升级需求

将Kingbase V008R006C005B0023升级至V008R006C008B0014

原版本库构建测试数据

ksql -Usystem test -p 54321
create database fuwa;
\c fuwa system
create table tbl_batch2 (id int4,info text); 
insert into tbl_batch2(id,info) 
select generate_series(1,1000),'batch2'; 
select * from tbl_batch2;

create database yangbao;
\c yangbao system
create table tbl_batch2 (id int4,info text); 
insert into tbl_batch2(id,info) 
select generate_series(1,1000),'batch2'; 
select * from tbl_batch2;

升级步骤

升级前查看数据库版本信息

--查看进程,确定正在使用的安装目录和数据目录
[root@node1 ~]# ps -ef | grep Kingbase 
kingbase  12139      1  0 15:38 ?        00:00:00 /KingbaseES/V8/Server/bin/kingbase -D /data

#升级前查数据库版本
法一:
[root@node1 ~]# /KingbaseES/V8/Server/bin/ksql -V
ksql (Kingbase) V008R006C005B0023

法二:
[kingbase@node1 ~]$ ksql -Usystem -W test -p 54327
口令:
ksql (V8.0)
test=# select version();
                                                     version                                                        
----------------------------------------------------------------------------------------------------------------------
 KingbaseES V008R006C005B0023 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 行记录)

版本说明:
V008R006C005B0023 为整个详细版本号
V008为大版本号
R006为版本号 R006即为R6 R003为R3
C005B0023为小版本号

如果旧版本数据库中有新增插件相关的so 库,而新版本数据库中没有的,需要把相关so 拷贝到新版本数据库lib 目录下。

升级前查看原版本相关参数配置

必须保证升级前后版本的数据库字符集及lc_ctype一致。

将sys_hba.conf的认证改为trust,升级期间,便于新旧版本之间访问连接。

--查看进程,确定正在使用的安装目录和数据目录
[root@node1 ~]# ps -ef | grep Kingbase 
kingbase  12139      1  0 15:38 ?        00:00:00 /KingbaseES/V8/Server/bin/kingbase -D /data


--关闭原版本的归档
[kingbase@node1 ~]$ cd /data/
[kingbase@node1 data]$ cp kingbase.conf kingbase.conf_bak_`date +%F`
[kingbase@node101 data]$ cat kingbase.conf |grep archive_mode
archive_mode = off              # enables archiving; off, on, or always

--编辑原版本sys_hba.conf文件
[kingbase@node101 ]$ cd /data
[kingbase@node101 data]$ cp sys_hba.conf sys_hba.conf_bak_`date +%F`
[kingbase@node101 data]$ sed -i "s/scram-sha-256/trust/g" sys_hba.conf
[kingbase@node101 data]$ cat sys_hba.conf
.......
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             ::0/0                   trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

--编辑原版本kingbase.conf文件
将端口更改为54327
[kingbase@node1 bin]$ vi /data/kingbase.conf
port = 54327 

--重启老的数据库实例
[kingbase@node1 ~]$ /KingbaseES/V8/Server/bin/sys_ctl restart -D /data

test=# show server_encoding;
 server_encoding 
-----------------
 UTF8
(1 row)

test=# show port;
 port  
-------
 54327
(1 行记录)

--重启数据库



test=# \l+
                                                                List of databases
yangbao=# \l+
                                                                    数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      | 大小  |   表空间    |                    描述                    
-----------+--------+----------+-------------+-------------+-------------------+-------+-------------+--------------------------------------------
 fuwa      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 13 MB | sys_default | 
 security  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 12 MB | sys_default | 
 template0 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +| 12 MB | sys_default | unmodifiable empty database
           |        |          |             |             | system=CTc/system |       |             | 
 template1 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +| 13 MB | sys_default | default template for new databases
           |        |          |             |             | system=CTc/system |       |             | 
 test      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 13 MB | sys_default | default administrative connection database
 yangbao   | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 13 MB | sys_default | 
(6 行记录)


test=# show block_size;
 block_size 
------------
 8192
(1 row)

test=# show wal_segment_size;
 wal_segment_size 
------------------
 16MB
(1 row)

test=# show enable_ci;   --off是敏感,on是不敏感
 enable_ci 
-----------
 off
(1 row)

test=# show database_mode;
 database_mode 
---------------
 oracle
(1 row)

--查看已创建的扩展
test=# \dx
                                                                        已安装扩展列表
        名称         | 版本 |  架构模式  |                                                        描述                                                    
     
---------------------+------+------------+----------------------------------------------------------------------------------------------------------------
-----
 dbms_ddl            | 1.0  | sys        | DBMS_DDL system package
 dbms_output         | 1.0  | sys        | DBMS_OUTPUT system package
 dbms_utility        | 1.0  | sys        | dbms_utility extension package
 kdb_cast            | 1.0  | sys        | kdb_cast extension
 kdb_license         | 1.0  | pg_catalog | kdb_license extension
 kdb_oracle_datatype | 1.1  | sys        | kdb_oracle_datatype extension
 kdb_schedule        | 1.0  | sys        | A KingbaseES job scheduler
 kdb_tinyint         | 1.0  | pg_catalog | Create a new data type tinyint and its functions operators and indexes
 kingbase_version    | 1.0  | pg_catalog | This is a utility that provides function related to version number,  it is used to get the Kingbase version num
ber.
 owa_util            | 1.0  | sys        | owa_util system package
 plpgsql             | 1.0  | pg_catalog | PL/pgSQL procedural language
 plsql               | 1.0  | pg_catalog | PL/SQL procedural language
 sys_freespacemap    | 1.2  | sys        | examine the free space map (FSM)
 sys_stat_statements | 1.9  | public     | track parsing, planning and execution statistics of all SQL statements executed
 sysaudit            | 1.0  | sysaudit   | provides auditing functionality
 sysmac              | 1.0  | sysmac     | Mac for Kingbase
 xlog_record_read    | 1.0  | pg_catalog | xlog_record_read functions
(17 行记录)

安装新版本数据库软件及初始化新的实例

注意:

  • 新版本和旧版本的相关参数:字符集、lc_ctype、数据块大小保证一致。
  • 必须使用旧版本数据库initdb时使用的操作系统用户。
  • 必须使用和旧版本数据库一样的数据库用户,及-U 参数保持一致。
  • block_size 和wal_segsize 必须和旧版本数据库的data 保持一致。
  • initdb 初始化的所有参数必须和旧版本数据库initdb 时保持一致。
  • 若不一致,在后续的升级兼容性检查也会检测出具体信息。

安装新版数据库软件

下载新版数据库软件和相应的授权文件
  • 新版数据库软件下载地址:

https://kingbase.oss-cn-beijing.aliyuncs.com/KESV8R3/V008R006C008B0014/KingbaseES_V008R006C008B0014_Lin64_install.iso

上传至/opt

  • 数据库授权文件下载地址:人大金仓-成为世界卓越的数据库产品与服务提供商

授权文件下载后本地解压然后再上传至服务器/home/kingbase目录下

规划新版本数据库安装目录和数据目录

新安装目录:/KingbaseESV8R60814

新数据目录:/dataV8R60814

新实例端口:54321

su - root
mkdir -p /KingbaseESV8R60814
mkdir -p /dataV8R60814
mkdir -p /home/kingbase/installdir_`date +%F`
chown kingbase:kingbase /home/kingbase/license*.dat
chown -R kingbase:kingbase /KingbaseESV8R60814
chown -R kingbase:kingbase /dataV8R60814
chown -R kingbase:kingbase /home/kingbase/installdir*
安装新版本数据库软件和初始化数据库实例
--挂载镜像
[root@node1 opt]# mount /opt/KingbaseES_V008R006C008B0014_Lin64_install.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载

--安装
[root@node1 opt]# cd /mnt
[root@node1 mnt]# ls -l
总用量 6
dr-xr-xr-x. 2 root root 2048 9月   2 04:59 setup
-r-xr-xr-x. 1 root root 3933 9月   2 04:59 setup.sh

[root@node1 mnt]# cp -r /mnt/* /home/kingbase/installdir_2024-01-02/
[root@node1 mnt]# chown -R kingbase:kingbase /home/kingbase/installdir_2024-01-02/

[kingbase@node1 ~]$ cd installdir_2024-01-02/
[kingbase@node1 installdir_2024-01-02]$ export LANG=zh_CN.UTF-8
[kingbase@node1 installdir_2024-01-02]$ ./setup.sh -i console

或
分成2个步骤:
(1)安装数据库软件
(2)初始化实例
export LANG=zh_CN.UTF-8
cd /KingbaseESV8R60814/Server/bin/
./initdb -U system -W --enable-ci -E utf8 --lc-ctype="zh_CN.UTF-8" -D /dataV8R60814

--更改端口为54321
[kingbase@node1 bin]$ vi /dataV8R60814/kingbase.conf
port = 54321 

--启动数据库
/KingbaseESV8R60814/Server/bin/sys_ctl start -D /dataV8R60814

[kingbase@node1 installdir_2024-01-02]$ cat /KingbaseESV8R60814/install/script/root.sh
#查看新版本数据库信息
[root@node1 opt]# /KingbaseESV8R60814/Server/bin/ksql -Usystem test  -p 54327
ksql (V8.0)
Type "help" for help.

test=# \l+
                                                                    数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      | 大小  |   表空间    |                    描述                    
-----------+--------+----------+-------------+-------------+-------------------+-------+-------------+--------------------------------------------
 kingbase  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 11 MB | sys_default | default administrative connection database
 security  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 11 MB | sys_default | 
 template0 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +| 11 MB | sys_default | unmodifiable empty database
           |        |          |             |             | system=CTc/system |       |             | 
 template1 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +| 11 MB | sys_default | default template for new databases
           |        |          |             |             | system=CTc/system |       |             | 
 test      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 11 MB | sys_default | default administrative connection database
(5 行记录)

test=# show port;
 port  
-------
 54321
(1 行记录)

test=# show block_size;
 block_size 
------------
 8192
(1 行记录)

test=# show wal_segment_size;
 wal_segment_size 
------------------
 16MB
(1 行记录)

test=# show enable_ci;   --off是敏感,on是不敏感
 enable_ci 
-----------
 off
(1 row)

test=# show database_mode;
 database_mode 
---------------
 oracle
(1 row)

--对system用户登录信息加入密码文件
[kingbase@node1 ~]$ sys_encpwd -H \* -P \* -D \* -U system -W kingbase
[kingbase@node1 ~]$ cat .encpwd 
*:*:*:system:a2luZ2Jhc2U=

安装扩展共享对象文件

许多扩展和自定义模块,无论是来自contrib还是其他来源,都使用共享对象文件(或 DLL),例如 kbcrypto.so ,如果旧集簇使用它,则必须在新集簇中安装与新服务器二进制文件匹配的共享对象文件,通常通过操作系统命令。

不要加载模式定义,例如,CREATE EXTENSION kbcrypto,因为它们将从旧集群中复制。如果扩展更新可用, sys_upgrade 将报告此情况并创建一个可以稍后运行以更新它们的脚本。

将原版本相关配置文件拷贝到新版本下

[kingbase@node1 bin]$ cp /data/kingbase.conf /dataV8R60814/kingbase.conf 
[kingbase@node1 bin]$ cp /data/kingbase.auto.conf /dataV8R60814/kingbase.auto.conf 
[kingbase@node1 bin]$ cp /data/sys_hba.conf /dataV8R60814/sys_hba.conf 

--更改端口为54321
[kingbase@node1 bin]$ vi /dataV8R60814/kingbase.conf
port = 54321 

--去掉kingbase.conf中
[kingbase@node1 data]$ vi /dataV8R60814/kingbase.conf 
shared_preload_libraries = 'liboracle_parser, synonym, plsql, force_view, kdb_flashback,plugin_debugger, plsql_plugin_debugger, plsql_plprofiler, ora_commands,kdb_ora_expr, sepapower, dblink, sys_kwr, sys_ksh, sys_spacequota, sys_stat_statements, backtrace, kdb_utils_function'
去掉ora_commands  和 sys_ksh

关闭新旧2套数据库服务

--关闭老的数据库实例
[kingbase@node1 ~]$ /KingbaseES/V8/Server/bin/sys_ctl stop -D /data

--关闭新的数据库实例
[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_ctl stop -D /dataV8R60814/

原数据库执行物理备份

备份数据目录

[kingbase@node1 ~]$ cp -r /data /home/kingbase/data_bak_`date +%F`
或压缩备份(不建议)
[kingbase@node1 ~]$ tar -cvf /home/kingbase/data_bak_`date +%F`.tar.gz /data

更改环境变量

[kingbase@node1 ~]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
#export PATH=/KingbaseES/V8/Server/bin:$PATH
#export KINGBASE_DATA=/data
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$KINGBASE_HOME/bin
export KINGBASE_HOME=/KingbaseESV8R60814/Server
export LD_LIBRARY_PATH=$KINGBASE_HOME/lib:$PATH
export KINGBASE_DATA=/dataV8R60814
export KINGBASE_USER=system
export KINGBASE_PORT=54321
export KINGBASE_DATABASE=test

版本升级前兼容性检查

在新版本数据库bin目录下执行sys_upgrade工具

[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814 -c -p 54327 -P 54321 -U system
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database safety function switch is off             ok
Checking for extension that do not support upgrading        ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

*集簇是兼容的*

如上所示,新旧版本之间兼容性检查通过。

参数说明:

-b bindir --old-bindir= bindir  --旧的 KingbaseES 可执行文件目录 绝对路径; 环境变量 KBBINOLD 。
-B bindir --new-bindir= bindir  --新的 KingbaseES 可执行文件目录 绝对路径; 环境变量 KBBINNEW 。
-c --check --只检查集簇,不更改任何数据。
-d datadir --old-datadir= datadir  --旧的集簇数据目录 绝对路径;环境变量 KBDATAOLD 。
-D datadir --new-datadir= datadir --新的集簇数据目录 绝对路径;环境变量 KBDATANEW 。
-j --jobs --要同时使用的进程或线程数。
-k --link --使用硬链接来代替将文件拷贝到新集簇。
-o options --old-options options --直接传送给旧 kingbase 命令的选项,多个选项可以追加在后面。
-O options --new-options options --直接传送给新 kingbase 命令的选项,多个选项可以追加在后面。
-p port --old-port= port --旧的集簇端口号;环境变量 KBPORTOLD 。
-P port --new-port= port --新的集簇端口号;环境变量 KBPORTNEW 。
-r --retain --即使在成功完成后也保留 SQL 和日志文件。
-s dir --socketdir=dir  --升级期间用于 kingbase 套接字的目录;默认为当前工作目录;环境变量 KINGBASE_SOCKETDIR 。
-U username --username= username  --集簇的安装用户名;环境变量 KBUSER 。
-v --verbose  --启用详细的内部日志。
-V --version --显示版本信息,然后退出。
--clone --使用高效的文件拷贝(在某些系统上也称为 reflinks ),而不是将文件复制到新集簇。这会导致数据文件近乎即时复制,从而在不影响旧集簇的同时提供 -k/--link 的速度优势。
文件拷贝仅在某些操作系统和文件系统上受支持。如果它被选中但不受支持,则 sys_upgrade 运行将出错。目前,它在带有 Btrfs 和 XFS(在使用 reflink 支持创建的文件系统上)的 Linux(内核 4.5 或更高版本)以及带有 APFS 的 macOS 上受支持。
-? --help  --显示帮助,然后退出。

问题处理

好像有一个KingbaseES正在为新集簇服务
--问题描述:
/KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814 -c -p 54327 -P 54321 -U system
好像有一个KingbaseES正在为新集簇服务。
请关闭那个KingbaseES,然后再试一次。
故障,退出

--解决办法:
新旧2套数据库实例服务均需要停止,升级过程中有启动实例的操作。
无法访问文件 "ora_commands"
--问题处理
command: "/KingbaseESV8R60814/Server/bin/sys_ctl" -w -l "sys_upgrade_server.log" -D "/dataV8R60814" -o "-p 54327 -b -c synchronous_commit=off -c fsync=off -c full_page_writes=off  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/data'" start >> "sys_upgrade_server.log" 2>&1
等待服务器进程启动 ....2024-01-02 11:50:30.696 GMT [10222] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2024-01-02 11:50:30.696 GMT [10222] 提示:  max_connect的值设置为 10
2024-01-02 11:50:30.696 GMT [10222] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2024-01-02 11:50:30.696 GMT [10222] 提示:  max_connect的值设置为 10
2024-01-02 19:50:30.699 CST [10222] 致命错误:  无法访问文件 "ora_commands": 没有那个文件或目录
2024-01-02 19:50:30.699 CST [10222] 日志:  数据库系统已关闭
 已停止等待
sys_ctl: 无法启动服务器进程
检查日志输出.

--解决办法
[kingbase@node1 data]$ vi /dataV8R60814/kingbase.conf 
shared_preload_libraries = 'liboracle_parser, synonym, plsql, force_view, kdb_flashback,plugin_debugger, plsql_plugin_debugger, plsql_plprofiler, ora_commands,kdb_ora_expr, sepapower, dblink, sys_kwr, sys_ksh, sys_spacequota, sys_stat_statements, backtrace, kdb_utils_function'
去掉ora_commands
无法访问文件 "sys_ksh": 没有那个文件或目录
--问题处理
等待服务器进程启动 ....2024-01-02 11:52:16.226 GMT [10348] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2024-01-02 11:52:16.226 GMT [10348] 提示:  max_connect的值设置为 10
2024-01-02 11:52:16.226 GMT [10348] 警告:  max_connections should be less than or equal than 10 (restricted by license)
2024-01-02 11:52:16.226 GMT [10348] 提示:  max_connect的值设置为 10
2024-01-02 19:52:16.229 CST [10348] 日志:  sepapower扩展初始化完成
2024-01-02 19:52:16.231 CST [10348] 日志:  太多后台工作进程
2024-01-02 19:52:16.231 CST [10348] 详细信息:  当前设置里最多可以注册2个后台工作进程.
2024-01-02 19:52:16.231 CST [10348] 提示:  考虑增大配置参数 "max_worker_processes"的值.
2024-01-02 19:52:16.231 CST [10348] 日志:  太多后台工作进程
2024-01-02 19:52:16.231 CST [10348] 详细信息:  当前设置里最多可以注册2个后台工作进程.
2024-01-02 19:52:16.231 CST [10348] 提示:  考虑增大配置参数 "max_worker_processes"的值.
2024-01-02 19:52:16.231 CST [10348] 致命错误:  无法访问文件 "sys_ksh": 没有那个文件或目录
2024-01-02 19:52:16.231 CST [10348] 日志:  数据库系统已关闭
 已停止等待
sys_ctl: 无法启动服务器进程
检查日志输出.

--解决办法
[kingbase@node1 data]$ vi /dataV8R60814/kingbase.conf 
shared_preload_libraries = 'liboracle_parser, synonym, plsql, force_view, kdb_flashback,plugin_debugger, plsql_plugin_debugger, plsql_plprofiler, ora_commands,kdb_ora_expr, sepapower, dblink, sys_kwr, sys_ksh, sys_spacequota, sys_stat_statements, backtrace, kdb_utils_function'
去掉sys_ksh
连接到数据库失败: fe_sendauth: no password supplied
--问题描述
[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814 -c -p 54327 -P 54321 -U system
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database safety function switch is off             ok
Checking for extension that do not support upgrading        ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok

连接到数据库失败: fe_sendauth: no password supplied

无法连接到用命令启动的目标KingbaseES :
"/KingbaseESV8R60814/Server/bin/sys_ctl" -w -l "sys_upgrade_server.log" -D "/dataV8R60814" -o "-p 54327 -b -c synchronous_commit=off -c fsync=off -c full_page_writes=off  -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/home/kingbase'" start
故障,退出

--解决办法
创建密码文件
[kingbase@node1 ~]$ sys_encpwd -H \* -P \* -D \* -U system -W kingbase
再次升级检查
[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814 -c -p 54327 -P 54321 -U system
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database safety function switch is off             ok
Checking for extension that do not support upgrading        ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

*集簇是兼容的*

执行版本升级

Tips: 升级前对原数据库执行物理备份。

在新版本数据库bin目录下执行sys_upgrade工具

[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814  -p 54327 -P 54321 -U system
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database safety function switch is off             ok
Checking for extension that do not support upgrading        ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

如果sys_upgrade在这一点之后失败,在继续之前必须重新初始化新集群.

正在执行升级
------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new sys_xact                            ok
Copying old sys_xact to new server                          ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new sys_multixact/offsets               ok
Copying old sys_multixact/offsets to new server             ok
Deleting files from new sys_multixact/members               ok
Copying old sys_multixact/members to new server             ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Copying wallet files                                        ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
                                                            ok
正在复制用户关系文件
                                                            ok
复制用户cstotre_fdw文件
                                                            ok
复制全局关系文件
                                                            ok
Setting next OID for new cluster                            ok
Sync data directory to disk                                 ok
Creating script to analyze new cluster                      ok
Creating script to delete old cluster                       ok

升级完成
--------
Optimizer statistics are not transferred by sys_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh --port KBPORT

运行此脚本将删除旧集簇的数据文件:
    ./delete_old_cluster.sh

问题处理

[kingbase@node1 data]$ /KingbaseESV8R60814/Server/bin/sys_upgrade -b /KingbaseES/V8/Server/bin -B /KingbaseESV8R60814/Server/bin -d /data -D /dataV8R60814  -p 54327 -P 54321 -U system
正在执行一致性检查
-----------------------------
Checking cluster versions                                   ok
Checking database safety function switch is off             ok
Checking for extension that do not support upgrading        ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok

如果sys_upgrade在这一点之后失败,在继续之前必须重新初始化新集群.

正在执行升级
------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new sys_xact                            ok
Copying old sys_xact to new server                          ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new sys_multixact/offsets               ok
Copying old sys_multixact/offsets to new server             ok
Deleting files from new sys_multixact/members               ok
Copying old sys_multixact/members to new server             ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Copying wallet files                                        
*failure*

有关故障的可能原因,请查阅"sys_upgrade_utility.log"的最后几行。
故障,退出

--查看日志
tail -500f sys_upgrade_utility.log
command: "/KingbaseESV8R60814/Server/bin/sys_resetwal" -O 0 -m 1,1 "/dataV8R60814" >> "sys_upgrade_utility.log" 2>&1
重置预写日志
command: "/KingbaseESV8R60814/Server/bin/sys_resetwal" -l 000000010000000000000003 "/dataV8R60814" >> "sys_upgrade_utility.log" 2>&1
重置预写日志
command: cp -Rf "/data/.wallet" "/dataV8R60814" >> "sys_upgrade_utility.log" 2>&1
cp: 无法获取"/data/.wallet" 的文件状态(stat): 没有那个文件或目录
....

--原因
将原版本/data目前删除,解压备份文件至/data
/data/目录下无.wallet导致,恢复快照

启动新数据库实例

[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/sys_ctl start -D /dataV8R60814/

对升级后的数据库执行统计分析

-查看统计分析脚本文件位置
[kingbase@node1 ~]$ ls -l
总用量 20
-rwx------. 1 kingbase kingbase  991 1月   2 15:13 analyze_new_cluster.sh
-rwx------. 1 kingbase kingbase   26 1月   2 15:13 delete_old_cluster.sh

--执行统计分析脚本
[kingbase@node1 ~]$ ./analyze_new_cluster.sh --port 54321
This script will generate minimal optimizer statistics rapidly
so your system is usable, and then gather statistics twice more
with increasing accuracy.  When it is done, your system will
have the default level of optimizer statistics.

If you have used ALTER TABLE to modify the statistics target for
any tables, you might want to remove them and restore them after
running this script because they will delay fast statistics generation.

If you would like default statistics as quickly as possible, cancel
this script and run:
    "/KingbaseESV8R60814/Server/bin/vacuumdb" -U system --all --analyze-only --port KBPORT

vacuumdb: processing database "kingbase": Generating minimal optimizer statistics (1 target)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "security": Generating minimal optimizer statistics (1 target)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "template1": Generating minimal optimizer statistics (1 target)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "test": Generating minimal optimizer statistics (1 target)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "kingbase": Generating medium optimizer statistics (10 targets)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "security": Generating medium optimizer statistics (10 targets)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "template1": Generating medium optimizer statistics (10 targets)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "test": Generating medium optimizer statistics (10 targets)
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "kingbase": Generating default (full) optimizer statistics
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "security": Generating default (full) optimizer statistics
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "template1": Generating default (full) optimizer statistics
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: processing database "test": Generating default (full) optimizer statistics
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表

Done
[kingbase@node1 ~]$ "/KingbaseESV8R60814/Server/bin/vacuumdb" -U system --all --analyze-only --port 54321
vacuumdb: vacuuming database "kingbase"
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: vacuuming database "security"
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: vacuuming database "template1"
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表
vacuumdb: vacuuming database "test"
警告:  跳过 “_kingbase_loginfo”---无法分析全局临时表

如上所示,数据库升级完成。这些警告信息和厂家沟通可忽略,因为环境变量也改了,但是依然有该警告。

查看新版本数据库数据(应该和原版本数据一致)


--查看版本
[kingbase@node1 ~]$ /KingbaseESV8R60814/Server/bin/ksql -V
ksql (Kingbase) V008R006C008B0014
[kingbase@node1 ~]$ ksql
输入 "help" 来获取帮助信息.

test=# select version();
                                                       version                                                        
----------------------------------------------------------------------------------------------------------------------
 KingbaseES V008R006C008B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 行记录)


--查看数据
[kingbase@node1 ~]$ cd /KingbaseESV8R60814/Server/bin/
[kingbase@node1 bin]$ ./ksql -U system test -p 54321
输入 "help" 来获取帮助信息.

test=# \l+
                                                                    数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则   |    Ctype    |     存取权限      | 大小  |   表空间    |                    描述                    
-----------+--------+----------+-------------+-------------+-------------------+-------+-------------+--------------------------------------------
 fuwa      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 15 MB | sys_default | 
 kingbase  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 14 MB | sys_default | default administrative connection database
 security  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 14 MB | sys_default | 
 template0 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system        +| 14 MB | sys_default | unmodifiable empty database
           |        |          |             |             | system=CTc/system |       |             | 
 template1 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | system=CTc/system+| 15 MB | sys_default | default template for new databases
           |        |          |             |             | =c/system         |       |             | 
 test      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 15 MB | sys_default | default administrative connection database
 yangbao   | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |                   | 15 MB | sys_default | 
(7 行记录)


test=# \c fuwa system
You are now connected to database "fuwa" as userName "system".
fuwa=# select * from tbl_batch2 limit 10;
 id |  info  
----+--------
  1 | batch2
  2 | batch2
  3 | batch2
  4 | batch2
  5 | batch2
  6 | batch2
  7 | batch2
  8 | batch2
  9 | batch2
 10 | batch2
(10 行记录)

删除原版本数据(慎重)

如果服务器磁盘空间充足,该步骤可省略或等运行一段时间稳定后再删除,方便回退。

--在新版本数据库bin目录下执行清理脚本
[kingbase@node1 ~]$ cd
[kingbase@node1 ~]$ ls -l
总用量 113668
-rwx------. 1 kingbase kingbase       991 1月   2 19:25 analyze_new_cluster.sh
-rw-rw-r--. 1 kingbase kingbase 116367360 1月   2 19:25 data_bak_2024-01-02.tar.gz
-rwx------. 1 kingbase kingbase        26 1月   2 19:25 delete_old_cluster.sh

[root@node1 ~]# cd /home/kingbase/
[root@node1 kingbase]# ./delete_old_cluster.sh 

#原版本data目录下数据已经被删除
[root@node1 kingbase]# ls -l /data
ls: 无法访问/data: 没有那个文件或目录

原版本数据库相关数据文件被删除。

参考链接:金仓数据库KingbaseES V8R6单机小版本升级 - 掘金

12. sys_upgrade — KingbaseES产品手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1354721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JUC】Synchronized及JVM底层原理

Synchronized使用方式 Synchronized有三种应用方式 作用于实例方法,当前示实例加锁进入同步代码前要获得当前实例的锁,即synchronized普通同步方法,调用指令将会检查方法的ACC_SYNCHRONIZED访问标志是否被设置。 如果设置了,执行…

Spring相关重点API

一:ApplicationContext的继承体系 ApplicationContext:接口类型,代表应用上下文,可以通过其实例获得Spring容器中的Bean对象 二:ApplicationContext的实现类 1:ClassPathXmlApplicationContext 它是从类的根路径下…

【无标题】idea的lombok插件支持@SuperBuilder注解啦

在我的博客阅读本文 1. 前言 今早进公司打开idea,弹出更新提示,简单看了下,原来是idea的lombok插件更新了,惊喜的发现update log上写着Add support for SuperBuilder。 为什么说是惊喜呢?因为之前也有用到这个的场景…

DIY 云成本优化的5大挑战

外星人。 黑暗骑士。 帝国反击战。 在 Incredibuild,如果有一样东西我们喜欢,那就是我们的话题永远有续集。我们将针对云端优化推出一个更深入的续集, 但这一次我们谈论的是云成本优化,采用 DIY 的方式。(如果你还不…

Kubernetes Gateway API V1.0:您应该切换吗?

自Kubernetes Gateway API 发布 v1.0以来已经过去两个多月了,这标志着其一些关键 API 已经进入普遍可用状态。 去年,当网关 API升级为测试版时,我曾写过有关该 API的文章,但一年后,问题仍然存在。您是否应该从 Ingres…

SV-DJS-I13 深圳锐科达电梯 IP 五方对讲规格书

SV-DJS-I13 深圳锐科达电梯 IP 五方对讲规格书 DJS-I13 是专门对行业用户需求研发的一款 SIP 电梯五方对讲。它不仅有稳定性 好、电信级音质的优点,且完美兼容当下所有基于 SIP 的主流 IPPBX/软交换/IMS 平台, 如 Asterisk, Broadsoft, 3CX, Elastix 等。它集…

【MySQL用户管理】

目录: 前言用户管理创建用户删除用户修改用户密码修改用户密码安全检测设置 用户权限添加权限回收权限 总结 前言 剑指offer:一年又13天 用户管理 mysql> show databases; -------------------- | Database | -------------------- | inf…

[Python进阶] Python处理txt文件:open

7.1 Python处理txt文件:open 在Python中,通过open函数可以打开一个文件,创建一个file对象,然后对该对象进行读写。 函数语法: open(name[, mode[, buffering]…]) 参数说明: name:文件名 mode&…

你真的知道2024程序员搞钱新姿势吗?

2023年已经过去,2024的序曲已经奏响!回顾2023,我们经历了降薪裁员的大趋势,身为程序员也有点惶惶不可终日,害怕会失去工作,害怕面对家人无奈的模样,害怕跟不上时代的步伐,沦为被大环…

Minitab 各版本安装指南

Minitab下载链接 https://pan.baidu.com/s/1PLqocknkoRGGI9lbV3e45A?pwd0531 1.鼠标右击【Minitab 21(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 Minitab 21(64bit)】。 2.打开解压后的文件夹,鼠标右击【setu…

众和策略安全可靠:如何区分大盘股和小盘股?大盘股指数有哪些?

股票根据流转盘能够划分为大盘股、中盘股、小盘股这三大类,那么,怎么区别大盘股和小盘股?大盘股指数有哪些?下面众和策略为我们准备了相关内容,以供参考。 怎么区别大盘股和小盘股? 根据个股的市值来区别…

使用异构图学习破解推荐系统 - 第 1 部分

Lokesh Sharma – Medium 一、说明 所以,这是独家新闻:异质图拥有一个充满潜力的世界,而常规图却无法做到这一点。传统的同构图很难处理不同关系和边类型的复杂性。现在是大炮的时候了——先进的架构可以解决具有多种边缘和关系类型的数据集的…

Go后端开发 -- Go Modules

Go后端开发 – Go Modules 文章目录 Go后端开发 -- Go Modules一、什么是Go Modules?二、GOPATH的工作模式1.GOPATH模式2.GOPATH模式的弊端 三、Go Modules模式创建项目1.go mod命令2.go mod环境变量3.使用Go Modules初始化项目4.修改模块的版本依赖关系 四、Go Modules下impo…

快速实现前后端表单交互(minui)

(1)使用minui快速生成表单 (2)修改样式,将生成的html文件发送给后端 (3)前后端交互(后端如何处理不太清楚) 表单初始化:新增修改(包括查看&…

如何远程修改plc程序?

​在工业自动化领域中,PLC(可编程逻辑控制器)是不可或缺的一部分。然而,传统方式下修改PLC程序需要亲临现场,这不仅耗时,还增加了成本。那么有没有一种更加高效、便捷的方法呢?答案是肯定的&…

【REST2SQL】03 GO读取JSON文件

REST2SQL需要一些配置信息,用JSON文件保存,比如config.json 1 创建config.json配置文件 {"hostPort":"localhost:5217","connString":"oracle://blma:5217127.0.0.1:1521/CQYH","_oracle":"ora…

6591A便携式光伏组串测试仪

01 6591A便携式光伏组串测试仪 产品综述: 6591A主要用于1500V光伏组串的测试,能够方便、快速的测试1500V光伏组串在自然光照下的工作特性,可为太阳能电站设计、验收、维护提供测试保障,是电站建设单位、质检部门、生产厂家、科研…

Navicat 技术干货 | 聚合查询的介绍

基础 SQL 查询可以检索、插入、更新和删除记录,而聚合查询可通过提供求和、平均值或最大/最小值等的大型结果集,将数据库交互提升到一个新的水平。本文中,我们将探索聚合 SQL 查询的基础知识,并研究如何有效的利用他们来分析和汇总…

边坡安全监测预警系统——高效率

安装边坡安全监测预警系统的原因是多方面的,涉及到社会效益、经济效益和环境效益。随着国家基础设施建设的快速发展,边坡安全监测预警系统的需求越来越迫切。 边坡安全监测预警系统对于保障人民生命财产安全具有重要意义。在山区、丘陵地带,边…

牛客网面试题知识点记录-03

1.题目讲解重写后子类调用父类的方法总结:当子类重写了父类方法A,父类方法直接调用被重写的父类方法后,调用的是子类的重写的父类方法A。 class Test {public static void main(String[] args) {System.out.println(new B().getValue());}st…