案例说明:

在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移。

适用版本:

KingbaseES V8R3

当前数据库版本:

TEST=# select version();
VERSION
-------------------------------------------------------------------------------------------------------------------------
Kingbase V008R003C002B0290 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row)

集群状态信息:

TEST=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+---------------+-------+--------+-----------+---------+------------+-------------------+-------------------
0 | 192.168.1.101 | 54321 | up | 0.500000 | standby | 0 | false | 0
1 | 192.168.1.102 | 54321 | up | 0.500000 | primary | 0 | true | 0
(2 rows)

流复制状态信息:

TEST=# select * from sys_stat_replication;
PID | USESYSID | USENAME | APPLICATION_NAME | CLIENT_ADDR | CLIENT_HOSTNAME | CLIENT_PORT | BACKEND_START | BACKE
ND_XMIN | STATE | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORITY | SYNC_STATE
-------+----------+---------+------------------+---------------+-----------------+-------------+-------------------------------+------
--------+-----------+---------------+----------------+----------------+-----------------+---------------+------------
18217 | 10 | SYSTEM | node101 | 192.168.1.101 | | 45972 | 2022-07-29 16:14:33.202101+08 |
| streaming | 0/2E0001B0 | 0/2E0001B0 | 0/2E0001B0 | 0/2E0001B0 | 1 | sync
(1 row)

一、在主库初始化新的实例

=注意:需要和原集群的配置环境一致,如大小写敏感性、字符集等。=

1、初始化新的实例

[kingbase@node102 bin]$ ./initdb -U system -W 123456  -E utf8 -D /data/kingbase/v8r3_290/data/
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.
......
syncing data to disk ... ok
Success. You can now start the database server using:
./sys_ctl -D /data/kingbase/v8r3_290/data/ -l logfile start

2、启动新的实例

[kingbase@node102 bin]$ ./sys_ctl -D /data/kingbase/v8r3_290/data/ start
server starting

3、测试数据库连接

[kingbase@node102 bin]$ ./ksql -U system -W 123456 test -p 54325
ksql (V008R003C002B0290)
Type "help" for help. test=# select version();
version
-------------------------------------------------------------------------------------------------------------------------
Kingbase V008R003C002B0290 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row)

4、关闭数据库服务

[kingbase@node102 bin]$ ./sys_ctl stop -D /data/kingbase/v8r3_290/data/
waiting for server to shut down.... done
server stopped

二、集群迁移单实例

1、停止集群服务

[kingbase@node101 bin]$ ./kingbase_monitor.sh stop
-----------------------------------------------------------------------
2022-07-29 16:31:57 KingbaseES automation beging...
2022-07-29 16:31:57 stop kingbasecluster [192.168.1.101] ...
......
2022-07-29 16:32:26 Done...
......................
all stop..

2、备份单实例data

[kingbase@node102 v8r3_290]$ mv data data.bk

3、拷贝集群data到单实例(适合数据量小环境)

[kingbase@node102 db]$ cp -r data /data/kingbase/v8r3_290/
[kingbase@node102 v8r3_290]$ chmod 700 data

4、启动单实例数据库

[kingbase@node102 bin]$ ./sys_ctl -D /data/kingbase/v8r3_290/data/ start
server starting
[kingbase@node102 bin]$ LOG: redirecting log output to logging collector process
HINT: Future log output will appear in directory "sys_log".

5、连接数据库访问

[kingbase@node102 bin]$ ./ksql -U SYSTEM -W 123456 TEST -p 54325
ksql (V008R003C002B0290)
Type "help" for help. TEST=# select version();
VERSION
-------------------------------------------------------------------------------------------------------------------------
Kingbase V008R003C002B0290 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
(1 row) TEST=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+-------------+-------------+--------------------
PROD | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
SAMPLES | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
SECURITY | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
TEMPLATE0 | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/SYSTEM +
| | | | | SYSTEM=CTcb/SYSTEM
TEMPLATE1 | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/SYSTEM +
| | | | | SYSTEM=CTcb/SYSTEM
TEMPLATE2 | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/SYSTEM +
| | | | | SYSTEM=CTcb/SYSTEM
TEST | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
TEST1 | SYSTEM | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(8 rows)

6、修改单实例kingbase.conf的data_diretory参数(适合数据量大环境)

=注意:对于数据量小的环境,可以直接拷贝集群的data到单实例下;但是对于数据量大的环境,迁移时间窗口和磁盘空间有限的情况下,可以直接修改单实例数据库的kingbase.conf文件的data_dirctory参数,将data目录指向原集群的data目录即可,无需拷贝,节省迁移时间。=

[kingbase@node102 data]$ cat kingbase.conf |grep data_directory
#data_directory = 'ConfigDir' # use data in another directory

三、总结

对于生产环境涉及到数据库服务的停止运行,所以要考虑申请停机窗口,对于数据量小的场景,可以直接拷贝集群data到单实例即可;对于大数据量的环境,cp数据会占用大量的时间,可以考虑直接修改单实例的kingbase.conf文件的data_directory参数,提高迁移的效率。

KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构的更多相关文章

  1. KingbaseES集群管理维护案例之---备库checkpoint分析

    ​ 数据库异常关闭时,数据库关闭时来不及或者没机会做checkpoint,则需要从上一个一致性检查的开始恢复.KingbaseES备机checkpoint是不能产生checkpoint WAL日志条目 ...

  2. KingbbaseES V8R6集群维护案例之---集群之间数据迁移

    案例说明: 生产环境是集群环境,测试环境是集群,现需要将生产环境的数据迁移到测试集群中运行,本文档详细介绍了从集群环境迁移数据的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingbase ...

  3. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  4. kingbaseES R3 集群备库转换为单实例库案例

    案例说明: 在生产环境需要将集群中架构转换为单实例环境,本案例以备库转换为单实例库为案例,介绍了两种方案,一种在数据库数据量小的环境下采用 sys_dumpall 导出导入方式建立单实例库:另外一种是 ...

  5. 基于 Clusternet 与 OCM 打造新一代开放的多集群管理平台

    背景 随着 5G.物联网设备的爆炸性增长以及智能终端不断增强的计算能力,带来了前所未有的数据量,传统的中心集中式计算捉襟见肘."新基建"战略的实施,工业互联网.车联网/自动驾驶.智 ...

  6. 整理全网最全K8S集群管理工具、平台

    整理常见的整理全网最全K8S集群管理工具.平台解决方案. 1 Rancher Rancher中文官网:https://docs.rancher.cn/ 2 KubeSphere 官网:https:// ...

  7. 【MSP是什么】MSP认证之成功的项目群管理

    同项目管理相比,项目群管理是为了实现项目群的战略目标与利益,而对一组项目进行的统一协调管理. 项目群管理 项目群管理是以项目管理为核心.单个项目上进行日常性的项目管理,项目群管理是对多个项目进行的总体 ...

  8. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  9. KingbaseES V8R3集群维护案例之---在线添加备库管理节点

    案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...

随机推荐

  1. 关于react的props你需要知道的一个简单方法

    //注意一点:函数名必须大写 function Clock(props) { return ( <div> <h1>Hello, world!</h1> <h ...

  2. Linux shell脚本算术运算和逻辑运算

    算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...

  3. bat-静默安装winrar并设置系统级环境变量

    @echo off Setlocal enabledelayedexpansion @REM vscode中自动开启延迟环境变量扩展 echo 安装winrar "winrar v.5.71 ...

  4. 端口被占用的问题解决 Web server failed to start. Port ×× was already in use

    出现此问题是端口被占用了,只需要关闭正在使用的端口就行 解决思路: 1.在服务器中更改port端口号,改为不冲突,没有被占用的端口. 2.找出被占用的端口,结束被占用的端口 解决结束被占用的端口的方法 ...

  5. 想看,但电脑没网怎么办,python教你保存整本成TXT~

    各位大佬好鸭!又是我小熊猫啦咱这次直接上代码 开始之前先解释下: 模块: requests >>> pip install requestsparsel >>> p ...

  6. nginx 出现An error occurred错误

    原因是我nginx中conf文件的配置里面 location中的 这一块内容是 #注释的那两行 所以报错出现这个错误. 后来将这两行注释掉,改成这两个就好了. root html; index ind ...

  7. EasyExcel导出创建Excel下拉框

    话不多说,上才艺. 下面代码粘贴即用 /** * * 导出表格带下拉框 */ @GetMapping("exportBox") public void export(HttpSer ...

  8. 静态static关键字概述和静态static关键字修饰成员变量

    static关键字 概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的.也就是说,既然属于类,就可以不靠创建对象来调用了 ...

  9. 【cartographer_ros】六: 发布和订阅路标landmark信息

    上一节介绍了陀螺仪Imu传感数据的订阅和发布. 本节会介绍路标Landmark数据的发布和订阅.Landmark在cartographer中作为定位的修正补充,避免定位丢失. 这里着重解释一下Land ...

  10. Java_占位符使用

    public class t7 { public static void main(String[] args) { // TODO Auto-generated method stub //Java ...