consul 备份还原导入导出

正文


工作中要保证生产环境部署的consul的集群能够安全稳定地对外提供服务,即使出现系统故障也能快速恢复,这里将讲述部分的备份还原操作及KV的导入导出操作。

备份与还原  配置文件、服务器状态


需要备份的主要有两类数据:consul相关的配置文件、consul的服务器状态,采用下面的脚本备份就可以了:

ts=$(date +%Y%m%d%H%M%S)# 备份配置文件
tar -czpf consul_config_$ts.tar.gz /etc/consul/config.json /etc/consul/consul.d# 备份consul的服务器状态,注意由于该consul开启了ACL,执行consul snapshot save时必须带Management Token,关于consul ACL token的说明见上一篇"consul安全加固"
consul snapshot save --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 consul_state_$ts.snap# 查看一下生成的consul服务器状态文件
consul snapshot inspect consul_state_$ts.snap

最后将生成的consul_config_xxx.tar.gzconsul_state_xxx.snap拷贝到其它服务器妥善存储。

还原也比较简单,采用下面的脚本就可以了:

# 还原配置文件
tar -xzpf consul_config_20180521145032.tar.gz -C /# 还原consul服务器状态
consul snapshot restore --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 consul_state_20180521145032.snap

KV存储的导入导出


consul直接提供命令对KV里存储的数据进行导入导出,如下:

$ ts=$(date +%Y%m%d%H%M%S)# 导出所有kv键值对,注意最后一个参数是导出键值对的前缀,为空字符串说明要导出所有
$ consul kv export --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 '' > consul_kv_$ts.json# 查看下导出的json文件格式
$ cat consul_kv_$ts.json
[
{
"key": "xxxxxx",
"flags": 0,
"value": "yyyyyy"
},
{
"key": "xxxxxx2",
"flags": 0,
"value": "eyJ2ZXJzaW9uX3RpbWVzdGFtcCI6IC0xfQ=="
},
]

发现是每个键值对都是json数值中一项,其中key为键值对Key的名称,value为键值对Value的base64编码,使用base64 -d命令编码就可以看到原始的value值,如:

$ echo 'eyJ2ZXJzaW9uX3RpbWVzdGFtcCI6IC0xfQ==' | base64 -d
{"version_timestamp": -1}

 导入就更简单了:

consul kv import --http-addr=http://10.12.142.216:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 @consul_kv_20180521150322.json

OVER..................................................................................................完结撒花

如常备份恢复更新脚本


consul_backup.sh 

[root@bastion back_consul]# cat consul_backup.sh 
#!/bin/bash
# Author:laujiants=$(date +"%Y_%m_%d_%H_%M")# 通过运行脚本添加参数 加consul 地址 token传进来
#consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
#http_addr='consul.hrfax.local'
http_addr='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
processName="consul_backup.sh"
processNum=`ps -ef | grep $processName | grep -v grep | wc -l`
#if [ $processName gt "3" ];then
#echo " $processName already existed!"
#exit 1
#fi#status_dir=`pwd`/status_dir
kv_dir=`pwd`/kv_dir#[ -d $status_dir ] || mkdir $status_dir
[ -d $kv_dir ] || mkdir $kv_dirstatus_backup() {`pwd`/consul snapshot save -token=${consul_token} -http-addr=${http_addr} $status_dir/consul_state_${ts}.snap}kv_backup() {`pwd`/consul kv export  -token=${consul_token} -http-addr=${http_addr} >  $kv_dir/consul_kv_${ts}_${http_addr}.json}kv_restore() {date=$1tar xPf $kv_dir/consul_kv_${date}.tar.gz -C /ls $kv_dir/consul_kv_${date}.json > /dev/nullif [ $? == 0 ];then`pwd`/consul kv import  -token=${consul_token} -http-addr=${http_addr} @$kv_dir/consul_kv_${date}.jsonfi}kv_backup

 update_consul.sh

#!/bin/bash
cd /data/deployment_mediums;git pull
sleep 5
consul_address='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
cd /data/deployment_mediums/$1
for yaml in `ls consul/*`;doconsul_key=`cat $yaml  |head -1 |sed 's/#//g' |sed 's/ //g'`consul_data=`cat $yaml | grep -v $consul_key`curl --location --request PUT "http://${consul_address}/v1/kv/${consul_key}?dc=hrfax" --header "X-Consul-Token: ${consul_token}" --header "Content-Type: text/plain" --data "${consul_data}"
doneif [[ $? -eq 0 ]];thenecho "更新consul成功"
fi
[root@bastion option-consul]# cat update_consul.sh 
#!/bin/bash
cd /data/deployment_mediums;git pull
sleep 5
consul_address='192.168.12.121:32000'
consul_token='8dc1eb67-1f5f-4e10-ad9d-5e58b047647c'
cd /data/deployment_mediums/$1
for yaml in `ls consul/*`;doconsul_key=`cat $yaml  |head -1 |sed 's/#//g' |sed 's/ //g'`consul_data=`cat $yaml | grep -v $consul_key`curl --location --request PUT "http://${consul_address}/v1/kv/${consul_key}?dc=hrfax" --header "X-Consul-Token: ${consul_token}" --header "Content-Type: text/plain" --data "${consul_data}"
doneif [[ $? -eq 0 ]];thenecho "更新consul成功"
fi

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

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

相关文章

淘客商品动态字符商品id转数字id

{ "code": 200, "data": { "itemId": "700407841432", "itemName": "安踏花苞短裤女五分裤夏季新款速干冰丝高腰宽松裤子透气工装短裤", "itemVideo": { "itemVideoThum…

Layui快速入门之第八节 表格渲染与属性的使用

目录 一:表格的渲染 API 方法配置渲染 模板配置渲染 静态表格渲染 二:表格的属性 基础属性 异步属性 返回数据中的特定字段 表头属性 重载 完整重载 仅数据重载 2.7 获取选中行 设置行选中状态 2.8 获取当前页接口数据 获取表格缓存数…

腾讯云2023年云服务器优惠活动价格表

腾讯云经常推出各种云产品优惠活动,为了帮助大家更好地了解腾讯云服务器的价格和优惠政策,下面给大家分享腾讯云最新云服务器优惠活动价格表,助力大家轻松上云! 一、轻量应用服务器优惠活动价格表 1、轻量应用服务器:…

【JAVA - List】差集removeAll() 四种方法实现与优化

一、场景: 二、结论: 1. 四种方法耗时 三、代码: 一、场景: 求差集 List1 - Lsit2 二、结论: 1. 四种方法耗时 初始条件方法名方法思路耗时 List1.size319418 List2.size284900 List..removeAll(Lsit2)1036987ms…

LINQ的内部联接、分组联接和左外部联接

最近在优化定时任务相关的代码,建议是把总查询放到内存中去坐,尽量减少打开的数据库连接 1. 内连接 指的是结果生成两张表可以连接的部分 private void button1_Click_1(object sender, EventArgs e){//初始化Student数组Student[] arrStu new Stude…

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程 一、群晖套件中下载Cloud Sync 二、同步到百度云盘 打开Cloud Sync,点击左上角的号,云供应商选择百度云。 这里可以选择双向备份,也可以只上穿到百度云的仅上传本地更改。因为百…

STM32H7 Azure RTOS

STM32H7 是意法半导体(STMicroelectronics)推出的一款高性能微控制器系列,基于 Arm Cortex-M7 内核。它具有丰富的外设和高性能计算能力,适用于各种应用领域。 Azure RTOS(原名 ThreadX)是一款实时操作系统…

第36章_瑞萨MCU零基础入门系列教程之步进电机控制实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

原题链接: https://leetcode.cn/problems/decode-xored-array/ 解题思路: 异或有如下性质: a ^ a 0a ^ 0 aa ^ b b ^ a 根据题意,已知encoded[i - 1] arr[i - 1] ^ arr[i],可以做如下转换: encoded[i…

python爬虫经典实例(二)

在前一篇博客中,我们介绍了五个实用的爬虫示例,分别用于新闻文章、图片、电影信息、社交媒体和股票数据的采集。本文将继续探索爬虫的奇妙世界,为你带来五个全新的示例,每个示例都有其独特的用途和功能。 1. Wikipedia数据采集 爬…

Redis 7 第九讲 微服务集成Redis 应用篇

Jedis 理论 Jedis是redis的java版本的客户端实现,使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式;并且,使用Jedis提供的对Redis的支持也最为灵活、全面;不足之处,就是编码复杂度较高。 …

【区块链 | IPFS】IPFS cluster私有网络集群搭建

对于联盟链的业务中搭建一个私有网络的 IPFS 集群还是很有必要的,私有网络集群允许 IPFS 节点只连接到拥有共享密钥的其他对等节点,网络中的节点不响应来自网络外节点的通信。 IPFS-Cluster 是一个独立的应用程序和一个 CLI 客户端,它跨一组 IPFS 守护进程分配、复制和跟踪 …

易基因: MeRIP-seq等揭示组蛋白乙酰化和m6A修饰在眼部黑色素瘤发生中的互作调控|肿瘤研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 组蛋白去乙酰化抑制剂(HDACis)在多种恶性肿瘤中显示出令人鼓舞的结果。N6-甲基腺嘌呤(m6A)是最普遍的mRNA修饰,在肿瘤发生调控中起重要作用。然而,对组蛋白乙酰化…

HDMI 直通 ILA 调试实验

FPGA教程学习 第十四章 HDMI 直通 ILA 调试实验 文章目录 FPGA教程学习前言实验原理程序设计实验过程实验尝试总结TODO 前言 HDMI 输入直通到 HDMI 输出的显示,完成一个简单的 HDMI 输入输出检测。 实验原理 开发板 HDMI 输出接口芯片使用 ADV7511,HD…

穿山甲报错 splashAdLoadFail data analysis error

使用swift接入穿山甲,未接入GroMore,这个时候如果代码位配置错误会导致如下错误: splashAdLoadFail(_:error:) Optional(“Error Domaincom.buadsdk Code98764 “data analysis error” UserInfo{NSLocalizedDescriptiondata analysis error,…

什么是区块链,解释区块链的原理和应用场景

1、什么是区块链,解释区块链的原理和应用场景。 区块链是一种分布式数据库,它由一系列按照时间顺序排列的数据块组成,并采用密码学方式保证不可篡改和不可伪造。区块链技术最初起源于比特币,作为比特币的底层技术,用于…

Vue 3.3 发布

本文为翻译 原文地址&#xff1a;宣布推出 Vue 3.3 |The Vue Point (vuejs.org) 今天我们很高兴地宣布 Vue 3.3 “Rurouni Kenshin” 的发布&#xff01; 此版本侧重于开发人员体验改进 - 特别是 TypeScript 的 SFC <script setup> 使用。结合 Vue Language Tools&…

HP惠普暗影精灵8P笔记本OMEN 17.3 英寸游戏本 17-ck1000(509V8AV)原厂Win11系统22H2

适用型号&#xff1a; 17-ck1000TX、17-ck1001TX、17-ck1002TX、17-ck1003TX、17-ck1004TX、17-ck1006TX、17-ck1007TX、17-ck1008TX 原装出厂系统自带所有驱动、出厂主题壁纸、Office办公软件、MyHP、惠普电脑管家、OMEN Command Center等预装程序 链接&#xff1a;https:/…

Kernel for SQL Database Recovery 21.1 Crack

SQL Server恢复工具 Kernel for SQL Database Recovery 21.1 具有针对不同 SQL Server 版本的全面恢复选项。它具有预览和选择功能来恢复精确的数据库对象。 好处 SQL 数据库恢复可为您带来多种好处。 完全恢复所有数据库组件 将损坏的 MDF/NDF 文件有效恢复到 Live SQL Serve…

DC/DC开关电源学习笔记(五)开关电源的主要技术指标

(五)开关电源的主要技术指标 1.输入参数2.输出参数3.效率4.电压调整率和负载调整率5.动态特性:负载突变时输出电压的变化6.电源启动时间(Set-Up Time)与保持时间(Hold-Up Time)1.输入参数 输入电压大小,交流还是直流,相数,频率等。 2.输出参数 输出功率,输出电压,输出…