当前位置: 首页 > news >正文

Docker 搭建KingbaseES主备流复制


author: aming
email: jikcheng@163.com
title: Docker 安装KingbaseES读写分离集群
creation_date: 2023-02-16 13:59
Last modified date: 2023-02-16 19:18
tags: Docker 安装KingbaseES读写分离集群
File Folder with relative path: reading notes/doc/Docker技术入门与实战
remark:
other:

本章背景知识

大体步骤参考:[[流复制–V8R6手工搭建]]
docker安装集群 - 技术干货 - 金仓社区 (kingbase.com.cn)
本章使用三节点容器搭建主备流复制集群。

一、容器节点 IP规划

IP规划:
192.168.20.111	--节点一主机IP(主节点)
192.168.20.112	--节点二主机IP(备节点)
192.168.20.113	--节点三主机IP(备节点)

二、容器信息规划

部分说明
IP: 端口192.168.20.111:54321,192.168.20.112:54322,192.168.20.113:54 323。
主机名称c_node1,c_node2,c_node3。
容器名称kcm_kingbase01,kcm_kingbase02,kcm_kingbase03。

三、宿主机环境准备

1、下载网盘中的镜像 kignbase.v8r6c5b23.tar
2、将镜像导入 Docker 服务器中。

$ docker load -i kignbase.v8r6c5b23.tar 

3、查看是否导入成功。

$ docker images
REPOSITORY    TAG        IMAGE ID       CREATED         SIZE
kesimg86523   latest     64f5d3730270   24 hours ago    2.6GB

4、创建 Docker 容器私有网络。

$ docker network create --subnet=192.168.20.0/24 kcmnet

编者注:由于 Docker 自带的网络接口不允许指定静态 IP 地址,所以需要新建私有网络。

LAB01-Docker 容器准备

如果需要清空环境则需要执行以下命令。
```bash
docker rm -f `docker ps -aq`
```
此命令非常危险请只在测试环境上操作。

1、创建流复制所需的容器。

docker run -itd --privileged -h c_node1 --name kcm_kingbase01 --net kcmnet --ip 192.168.20.111  -p 54321:54321   --restart=on-failure:3  kesimg86523:latest /usr/sbin/initdocker run -itd  --privileged -h c_node2 --name kcm_kingbase02  --net kcmnet --ip 192.168.20.112  -p 54322:54321   --restart=on-failure:3  kesimg86523:latest /usr/sbin/initdocker run -itd  --privileged -h c_node3 --name kcm_kingbase03 --net kcmnet  --ip 192.168.20.113  -p 54323:54321   --restart=on-failure:3  kesimg86523:latest /usr/sbin/init

2、命令说明。

选项说明
-it使用 tty 伪终端,并进入交互式模式。
-d使用守护进程运行容器。
-h容器主机名。
–restart-=on-faulure: 3当容器故障退出,重启 3 次,3 次之后不会再重启。
–net kcmnet指定流复制私有网络环境。

LAB02-备节点数据目录清空

1、请执行以下操作进入 kcm_kingbase02, kcm_kingbase03 容器。
2、删除 kcm_kingbase02 数据目录。

docker$ docker exec -u kingbase -it kcm_kingbase02 /bin/bash
<contanier>$ sys_ctl stop 
<contanier>$ rm -rf /home/kingbase/data/*
<contanier>$ rm -rf /home/kingbase/data/.wallet
<contanier>$ exit

3、删除 kcm_kingbase03 数据目录。

docker$ docker exec -u kingbase -it kcm_kingbase03 /bin/bash
<contanier>$ sys_ctl stop 
<contanier>$ rm -rf /home/kingbase/data/*
<contanier>$ rm -rf /home/kingbase/data/.wallet
<contanier>$ exit

LAB03-容器主机名解析

一、所有容器配置 host 文件

1、c_node1。

$ docker exec -u root -it kcm_kingbase01 vi /etc/hosts------------------写入以下内容------------------
192.168.20.111 c_node1
192.168.20.112 c_node2
192.168.20.113 c_node3

2、c_node2。

$ docker exec -u root -it kcm_kingbase02 vi /etc/hosts
------------------写入以下内容------------------
192.168.20.111 c_node1
192.168.20.112 c_node2
192.168.20.113 c_node3

3、c_node3。

$ docker exec -u root -it kcm_kingbase03 vi /etc/hosts
------------------写入以下内容------------------
192.168.20.111 c_node1
192.168.20.112 c_node2
192.168.20.113 c_node3

二、验证主机名解析正确

1、node1。

docker exec -u root -it kcm_kingbase01 ping -c 4 c_node1
docker exec -u root -it kcm_kingbase01 ping -c 4 c_node2
docker exec -u root -it kcm_kingbase01 ping -c 4 c_node3

2、node2。

docker exec -u root -it kcm_kingbase02 ping -c 4 c_node1
docker exec -u root -it kcm_kingbase02 ping -c 4 c_node2
docker exec -u root -it kcm_kingbase02 ping -c 4 c_node3

3、node3。

docker exec -u root -it kcm_kingbase03 ping -c 4 c_node1
docker exec -u root -it kcm_kingbase03 ping -c 4 c_node2
docker exec -u root -it kcm_kingbase03 ping -c 4 c_node3

LAB04-配置主节点(c_node 1)

一、配置归档及流复制参数

1、进入 kcm_kingbase01 容器。

$ docker exec -u kingbase -it kcm_kingbase01 /bin/bash

2、配置流复制参数。

<contanier>$ cat >> $KINGBASE_DATA/kingbase.conf <<EOF
wal_log_hints=on
wal_level = replica             # minimal, replica, or logical
max_wal_senders = 10            # max number of walsender processes
max_replication_slots = 10
wal_keep_segments = 1024	# in logfile segments, 16MB each; 0 disables 
hot_standby = on
synchronous_commit = on
synchronous_standby_names = '1(c_node1,c_node2,c_node3)'
hot_standby_feedback=on
fsync=on
EOF
echo ''

二、配置主节点 sys_hba. conf 支持 replication

<contanier>$ cat >> $KINGBASE_DATA/sys_hba.conf <<EOF
host replication system 127.0.0.1/32 md5
host replication system 0.0.0.0/0 md5
EOF
echo ''
grep -Ev "^$|#" $KINGBASE_DATA/sys_hba.conf

三、重启主节点数据服务

<contanier>$ sys_ctl restart -D $KINGBASE_DATA

四、在主节点上创建 replication 复制槽

1、查看当前复制槽

$ docker exec -u kingbase -it kcm_kingbase01 /bin/bash
<contanier>$  ksql  -U system -d test
# \x 
SELECT * FROM sys_replication_slots;

2、创建复制槽

<contanier>$  ksql  -U system -d test
test# SELECT * FROM sys_create_physical_replication_slot('slot_node2');
test# SELECT * FROM sys_create_physical_replication_slot('slot_node3');
test# SELECT slot_name, slot_type, active FROM sys_replication_slots;

LAB05-配置备节点 (c_node 2)

一、用sys_basebackup全量传输

1、进入 kcm_kingbase 02 备节点。

$ docker exec -u kingbase -it kcm_kingbase02 /bin/bash

2、全量传输数据。

<contanier>$ sys_basebackup -h c_node1 -p 54321 -U system -Fp -X stream -v -P -D $KINGBASE_DATA
ls -lh $KINGBASE_DATA
du -sh $KINGBASE_DATA

二、配置 kingbase. conf

<contanier>$ cat >> $KINGBASE_DATA/kingbase.conf << EOF 
primary_conninfo='port=54321 host=c_node1 user=system password=kingbase application_name=c_node2' 
recovery_target_timeline='latest' 
primary_slot_name ='slot_node2'
EOF
touch $KINGBASE_DATA/standby.signal

三、启动备节点并开启流复制

sys_ctl start -D $KINGBASE_DATA
tail -f $KINGBASE_DATA/sys_log/kingbase*.log

LAB06-配置备节点 (c_node 3)

一、用 sys_basebackup 全量传输

1、进入kcm_kingbase02备节点

$ docker exec -u kingbase -it kcm_kingbase03 /bin/bash

2、全量传输数据。

<contanier>$ sys_basebackup -h c_node1 -p 54321 -U system -Fp -X stream -v -P -D $KINGBASE_DATA
ls -lh $KINGBASE_DATA
du -sh $KINGBASE_DATA

二、配置 kingbase.conf

<contanier>$ cat >> $KINGBASE_DATA/kingbase.conf << EOF 
primary_conninfo='port=54321 host=c_node1 user=system password=kingbase application_name=c_node3' 
recovery_target_timeline='latest' 
primary_slot_name ='slot_node3'
EOF
touch $KINGBASE_DATA/standby.signal

三、启动备节点并开启流复制

sys_ctl start -D $KINGBASE_DATA
tail -f $KINGBASE_DATA/sys_log/kingbase*.log

LAB07- 验证流复制环境

一、在主节点查看流复制状态

1、进入 kcm_kingbase 01 主节点。

$ docker exec -u kingbase -it kcm_kingbase01 /bin/bash

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

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

3、查看流复制状态

ksql -U system -d test 
SELECT * FROM sys_stat_replication;

4、查看复制槽信息。

SELECT * FROM sys_replication_slots;

二、在主节点创建测试数据

1、进入 kcm_kingbase01 容器。

$ docker exec -u kingbase -it kcm_kingbase01 /bin/bash

2、生成测试数据。

<contanier>$ ksql -U system -d test 
CREATE database prod01; 
TEST=# \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;

三、在主节点创建测试数据 (c_node 2)

1、进入 kcm_kingbase01 容器。

$ docker exec -u kingbase -it kcm_kingbase02 /bin/bash

2、查看数据。

SELECT * FROM t01 limit 2;

四、在主节点创建测试数据 (c_node 3)

1、进入 kcm_kingbase01 容器。

$ docker exec -u kingbase -it kcm_kingbase03 /bin/bash

2、查看数据。

SELECT * FROM t01 limit 2;

相关文章:

Docker 搭建KingbaseES主备流复制

author: aming email: jikcheng163.com title: Docker 安装KingbaseES读写分离集群 creation_date: 2023-02-16 13:59 Last modified date: 2023-02-16 19:18 tags: Docker 安装KingbaseES读写分离集群 File Folder with relative path: reading notes/doc/Docker技术入门与实战…...

java易错题锦集四

effective java 不要再构造方法中启动任何线程 g new GameServer(); g.start();构造器无返回值&#xff0c;但是不能void修饰 字符串 String是包装类型吗&#xff1f;答案&#xff1a; 不是 对应的基本类型和包装类如下表&#xff1a; 基本数据类型 包装类 byte Byte bool…...

每天10个前端小知识 【Day 17】

前端面试基础知识题 1.使用原生js实现以下效果&#xff1a;点击容器内的图标&#xff0c;图标边框变成border:1px solid red&#xff0c;点击空白处重置 const box document.getElementById(box); function isIcon(target) { return target.className.includes(icon); } b…...

Python语言零基础入门教程(二十三)

16、Python os.fpathconf() 方法 概述 os.fpathconf() 方法用于返回一个打开的文件的系统配置信息。 Unix上可用。 语法 fpathconf()方法语法格式如下&#xff1a; os.fpathconf(fd, name)参数 fd – 打开的文件的描述符。 name – 可选&#xff0c;和buffersize参数和Pyt…...

[ansible系列]ansible使用扩展

目录 一. 本地执行 二. 任务委托 三. 任务暂停 四. 滚动执行 五. 只执行一次 六. 设置环境变量 七. 交互提示 一. 本地执行 我们知道ansible的是操作被控端的&#xff0c;所有执行的动作都是在被控端上完成的&#xff0c;当然在某些特定的时候我们想要有些tas…...

Java工具类(时间格式转换)

import java.util.Date; import java.text.DateFormat; /** * 格式化时间类 * DateFormat.FULL 0 * DateFormat.DEFAULT 2 * DateFormat.LONG 1 * DateFormat.MEDIUM 2 * DateFormat.SHORT 3 * author Michael * version 1.0&#xff0c; 2007/03/09 */ public c…...

数据库(第五次作业)

1.1 Redis概述 1.1.1 什么是Redis 2008年&#xff0c;意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG&#xff0c;然而没过多久该公司的创始人 Salvatore Sanfilippo便开始对MySQL的性能感到失望&#xff0c;于是他决定亲自为LLOOGG量身定做一个数据…...

代码随想录【Day16】| 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和

110. 平衡二叉树 题目链接 题目描述&#xff1a; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,nul…...

套娃式工具!用 AI 识别 AI ?#AI classifier

2022年以来&#xff0c;市面上就出现了不少 AI 生成文本的工具&#xff0c;尤其是 OpenAI 推出的 ChatGPT &#xff0c;不仅能够协助完成撰写邮件、视频脚本、文案、翻译、代码等任务&#xff0c;还能通过学习和理解人类的语言来进行对话&#xff0c;并根据聊天的上下文进行互动…...

CURL error 60: SSL certificate problem: certificate has expired

项目使用guzzleHttp做的一个接口&#xff0c;报错&#xff1a;certificate has expired 因为在linux centos环境与window环境有所不同&#xff0c;在此记录一下解决过程。 目录 报错提示 原因 解决方式 1.去掉guzzlehttp的验证 2.更新CA证书 总结 报错提示 cURL error 60…...

接口自动化:requests

引言&#xff1a;目前软件测试对测试人员的能力要求 业务测试能力&#xff1a;占比5-6成接口、自动化、性能测试能力&#xff1a;占比4-5成流程规范&#xff1a;1成&#xff08;需要综合型的测试人才&#xff09;&#xff1a;业务能力、代码能力、开发思维&#xff08;封装&…...

极简TypeScript教程--数据类型

TypeScript最大的特点就是有类型检测&#xff0c;格式为let/const 标识符: 数据类型 赋值;例子:let msg: string Hello World这样msg这个变量就有了字符串类型,如果再给他赋值为数字类型&#xff0c;就会在编译期报错。变量的类型推导在开发中&#xff0c;有时候为了方便起见…...

JAVA开发测试(jmeter如何测试性能与估算)

对C的业务网站或应用&#xff0c;进行性能测试来评估使用服务器情况是必不可少的一项工作。 一、测试工具&#xff1a; Apache JMeter 可以用于对服务器、网络或对象模拟巨大的负载&#xff0c;来自不同压力类别下测试它们的强度和分析整体性能&#xff0c;是Apache组织开发的…...

【新解法】华为OD机试 - 求解连续数列 | 备考思路,刷题要点,答疑,od Base 提供

华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 求解连续数列 | 备考思路,刷题要点,答疑,od Base 提供 题目 已知连续正整数数列{K}=K1,K2,K3… Ki的各个数相加之和为S, i = N (0 < S < 100000, 0 < N < 100000), 求此数列K。 输入 输…...

Python3 File(文件) 方法

Python3 File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件&#xff0c;并返回文件对象。 在对文件进行处理过程都需要使用到这个函数&#xff0c;如果该文件无法被打开&#xff0c;会抛出 OSError。 注意&#xff1a;使用 open() 方法一定要保证关闭文件对…...

APP渗透抓包

APP渗透抓包1.APP渗透测试原理2.安装安卓模拟器抓包2.1.安装模拟器2.2.设置代理下载证书2.2.1.burp suite设置代理2.2.2.浏览器设置代理2.2.3.下载证书2.3.模拟器安装证书2.3.1.移动证书2.3.2.证书设置2.4.设置代理2.4.1.设置burp suite代理2.4.2.夜神模拟器代理2.5.抓包测试2.…...

力扣(LeetCode)414. 第三大的数(2023.02.16)

给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;第三大的数是 1 。 示例 2&#xff1a; 输入&#xff1a;[1, 2] 输出&#xff1a;2…...

Spring底层

一、什么是Spring&#xff1f;谈谈你对IOC和AOP的理解。Spring&#xff1a; 是一个企业级java应用框架&#xff0c;他的作用主要是 简化软件的开发以及配置过程&#xff0c;简化项目部署环境。Spring的有点&#xff1a;1、Spring低侵入设计&#xff0c;对业务代码的污染非常低。…...

Cache-Control 常见字段

Cache-Control 常见字段 参考&#xff1a;https://blog.csdn.net/qq_41996454/article/details/108644436 Cache-Control 可以在请求头或者响应头中设置&#xff0c;并且可以组合使用多种指令 no-cache 和 no-store 用作控制缓存&#xff0c;被服务器通过响应头 Cache-Contro…...

Flink Checkpoint 中的通用增量Checkpoint

文章目录知识点状态Flink容错恢复周期性的 Checkpoint错误检测 Failure Detected重新调度 Re-scheduling状态恢复 State Recovery通用增量Checkpoint知识点 状态 算子需要记录之前数据处理的中间结果&#xff0c;把中间结果暂时缓存在算子的内部&#xff0c;这就是算子的状态…...

金三银四必看的软件测试面试题宝典,背完offer随便拿

怎么来设计测试方案根据测试需求&#xff08;包括功能需求和非功能性需求&#xff09;&#xff0c;识别测试要点&#xff0c;识别测试环境要求&#xff0c;安排测试轮次&#xff0c;根据项目计划和开发计划做整体的测试安排。 被测试的特性&#xff1a;通过对需求规格说明书进行…...

企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…...

扬帆优配“数字经济+实体经济”融合发展,行业增长空间大!

组织以为&#xff0c;数字经济已经逐步成为工业商场和资本商场的共同主题。 2月16日&#xff0c;国家发改委在《求是》杂志发表文章《努力推进经济完成质的有效提升和量的合理增加》。文章指出要加速开展数字经济&#xff0c;加速实施“东数西算”等重大工程&#xff0c;推进数…...

分享82个HTML电脑主机模板,总有一款适合您

分享82个HTML电脑主机模板&#xff0c;总有一款适合您 82个HTML电脑主机模板下载链接&#xff1a;https://pan.baidu.com/s/13DGOCgvbxSksMPwJzi2z0g?pwdl0mi 提取码&#xff1a;l0mi Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 云虚拟主机运营商网站模板…...

.htaccess语法教程

RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ RewriteCond %{REQUEST_URI} !^/blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /blog/$1# 没有输入文件名的默认到到首页 RewriteCond %{HTTP_HOST} ^(w…...

C++ ——多态 下 (图解多态原理、虚函数的再认知)

目录 一、抽象类 1&#xff09;抽象类定义 2&#xff09;抽象类的继承 3&#xff09;抽象类实现多态 4&#xff09;抽象类的好处 二、多态的实现原理 1&#xff09;虚函数的存储方式 2&#xff09;子类中虚函数的存储方式 ① 子类将基类中的虚表原封不动的拷贝到自己的…...

cocos creater 3.x 构建QQ小游戏

一、目前 cocos creater 不支持直接构建QQ小游戏&#xff0c;需要构建成微信小游戏&#xff0c;然后修改成QQ小游戏 二、构建QQ小游戏不能勾选 分离引擎 的选项&#xff0c;勾选分离引擎的选项&#xff0c;需要安装cocos微信小游戏引擎插件&#xff0c;这个插件似乎目前只支持微…...

ArcGIS笔记3_如何编辑、修改和导出散点数据

本文目录前言Step 1 在ArcGIS中添加并显示坐标点Step 2 将坐标数据保存成shp文件Step 3 编辑或修改坐标数据Step 4 导出修改后的数据&#xff1a;法一&#xff1a;通过转换工具导出Step 5 导出修改后的数据&#xff1a;法二&#xff1a;通过dBASE表导出前言 本博文更多针对Arc…...

Computer Graphics From Scratch - Chapter 8

系列文章目录 简介&#xff1a;Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章&#xff1a;Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章&#xff1a;Computer Gr…...

金三银四”不香了?

“金三银四”不香了&#xff1f; “金三银四”这个词&#xff0c;放在三年前&#xff0c;勾勒的是无数踌躇满志的年轻人涌向职场&#xff0c;大中小企业血液更新与流动的鲜活画面。 尤其是互联网行业&#xff0c;这个在过去20多年里极大改变文化交流方式与商业形态的领域&…...

dante wordpress主题/如何在百度上投放广告

类的每一个属性都必须拥有一个唯一的名称,而类里定义的每一个索引器都必须拥有唯一的签名 或者参数列表,这样就可以实现索引器重载。属性可以是static,而索引器必须是实例成员。为索 引器定义的访问函数可以访问传递给索引器的参数,而属性访问函数则没有参数我们也可以为…...

wordpress自定义分类分页/百度关键词推广帝搜软件

一时好奇&#xff0c;看看这些大网站的 Web 服务器信息(操作系统/Web 服务器/应用服务器软件).Google 用哪些软件做 Web Server?除了有两个节点操作系统看出来是 Linux 外&#xff0c;其他的都是未知的. Web 服务器用的都是 GWS ? 我估计是 Google Web Server 的缩写&#xf…...

国外做ui的网站j/网站制作工具

#############################################################Nginx优点&#xff1a;1、Web服务器功能广泛2、7层 location可以设置负载 的http负载均衡3、性能强大&#xff0c;网络依赖小。4、安装配置简单 缺点&#xff1a;1、无法基于url的健康检查2、负载均衡算法少只有…...

汕头网站建设运营团队/网站优化服务

这篇文章主要介绍了关于mac下brew安装php及扩展&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下Mac HomeBrew [2018-03-31]起弃用homebrew/php&#xff0c;php版本改名(如&#xff1a;php70 > php7.0)&#xff0c;无法像以前…...

哪里有营销型网站/网址域名注册信息查询

Unity3d之Perfab 对于重复使用的游戏体可以将其制作成Perfab。首先在Project窗口中选择【Create】-【Prefab】创建一个空的Perfab。然后将该重复使用的游戏体拖到这个空的Perfab上就OK了。 比如说&#xff0c;gun发射子弹&#xff0c;子弹可以看作一个重复使用的游戏体&#xf…...

嘉定网站建设/新闻网站排行榜

最近做了个项目是在微信运行H5页面&#xff0c;背景是加在body上的页&#xff0c;在微信上打开背景图一闪而过&#xff0c;而用手机自带的浏览器打开又是正常的&#xff0c;在网上查了好多方法都不行。 之前是用的是&#xff1a;background-size: 100% body {background: #b2b…...