容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

摘要: 通过阿里云Kubernetes容器服务,开启你的数据服务之旅 (一)云上运维自建数据库之痛,使用容器服务自动恢复数据库postgresql实例 概述 本文为大家介绍一种容器化的数据服务 posgresql db on ACK,通过使用云盘自动挂载实现的块存储PVC来做到数据库的免运维恢复。

容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

概述

本文为大家介绍一种容器化的数据服务 posgresql db on ACK,通过使用云盘自动挂载实现的块存储PVC来做到数据库的免运维恢复。借助阿里云Kubernetes服务与阿里云存储资源的深度整合,打造数据库实例的免运维异地(ECS)恢复的不死神话。

先决条件

1. 你已经通过阿里云容器服务创建了一个Kubernetes集群,详细步骤参见创建Kubernetes集群
2. 阿里云容器服务的存储插件(默认情况存储插件已经自动部署在阿里云Kubernetes容器服务)

从容器服务控制台创建一个posgresql实例

使用三次点击来创建一个postgresql的不死实例

1. 登录 https://cs.console.aliyun.com/
2. 点击 “应用目录”
3. 选择 “postgresql”

图片描述

4.(可选)选择你的Kubernetes集群. e.g. k8s-gpu
5.(可选)选择你的应用的命名空间。默认: default
6. 给你的数据库应用取个容易记住的名字。 e.g. postgresql-online

图片描述

7.(可选) 点击 “参数” 来定制你的数据库实例

1.修改 persistence.size: 20Gi 增加数据库云盘的容量
2.修改 persistence.storageClass: alicloud-disk-efficiency 调整数据卷所在云盘的性能。比如改为alicloud-disk-ssd 挂载ssd类型的

图片描述

## Persist data to a persitent volume
persistence:enabled: true## A manually managed Persistent Volume and Claim## Requires persistence.enabled: true## If defined, PVC must be created manually before volume will be bound# existingClaim:## database data Persistent Volume Storage Class## if defined, user has to define storageClassName: alicloud-disk to support dynamic provision of alicloud-disk## If defined, storageClassName: <storageclass>## If set to "-", storageClassName: "", which disables dynamic provisioning## If undefined (the default) or set to null, no storageClassName spec is##   set, choosing the default provisioner.  (gp2 on AWS, standard on##   GKE, AWS & OpenStack)###storageClass: "alicloud-disk-ssd"storageClass: "alicloud-disk-efficiency"accessMode: ReadWriteOncesize: 20GisubPath: "postgresql-db"

8 点击 “部署”, 完成数据发布
9 点击 “Kubernetes 控制台”,查看部署实例

图片描述

10 点击容器组,点击 postgresql-online-postgresql 查看数据库实例密码。容器实例启动在节点:cn-hangzhou.i-bp1fazljd8u2ylk2otdo

图片描述

图片描述

11 测试postgresql数据库的异地(ECS)恢复

1.添加测试数据

ssh <public ip="" of="" kubernetes="" master="" node="">`# kubectl run my-pg-postgresql-client --rm --tty -i --image postgres \
--env "PGPASSWORD=$PGPASSWORD" \
--command -- psql -U postgres \
-h postgresql-online-postgresql  postgresIf you don't see a command prompt, try pressing enter.postgres=# create table t1 (id int);
CREATE TABLE
postgres=# insert into t1 values(10);
INSERT 0 1
postgres=# select * from t1;id
----10
(1 row)

驱逐数据库实例从ECS节点 i-bp1fazljd8u2ylk2otdo 到 i-

bp1fazljd8u2ylk2otdp
#kubectl get pod -o wide | grep postgresql-online-postgresql
postgresql-online-postgresql-78884fbcf6-6mfzz    1/1       Running   0          36m       172.30.4.4   cn-hangzhou.i-bp1fazljd8u2ylk2otdo#kubectl cordon cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl delete pod postgresql-online-postgresql-78884fbcf6-6mfzz
pod "postgresql-online-postgresql-78884fbcf6-6mfzz" deleted
# kubectl get pod -o wide|grep postgresql-online-postgresql
#postgresql-online-postgresql-78884fbcf6-87ttg    0/1       Running   0          15s       172.30.3.5   cn-hangzhou.i-bp1fazljd8u2ylk2otdp

检验数据,实例迁移, 数据库实例自动化恢复, 数据不丢失。

# kubectl get pod -o wide|grep postgresql-online-postgresql
#postgresql-online-postgresql-78884fbcf6-87ttg    0/1       Running   0          15s       172.30.3.5   cn-hangzhou.i-bp1fazljd8u2ylk2otdpkubectl run my-pg-postgresql-client --rm --tty -i --image postgres \
> --env "PGPASSWORD=$PGPASSWORD" \
> --command -- psql -U postgres \
> -h postgresql-online-postgresql  postgres
If you don't see a command prompt, try pressing enter.
postgres=# select * from t1;id
----10
(1 row)

CLI控: 使用命令行完成postgresql实例的创建,迁移验证

login k8s master and deploy an postgresql db in seconds.

ssh <public ip="" of="" kubernetes="" master="" node="">helm install -n postgresql-online --set 'persistence.size=30Gi,persistence.storageClass=alicloud-disk-ssd' stable/postgresql

To get your user password run:

PGPASSWORD=$(kubectl get secret --namespace default my-pg-postgresql -o jsonpath="{.data.postgres-password}" | base64 --decode; echo)

To connect to your database run the following command (using the env variable from above):

 kubectl run my-pg-postgresql-client --rm --tty -i --image postgres \--env "PGPASSWORD=$PGPASSWORD" \--command -- psql -U postgres \-h postgresql-online-postgresql  postgres

To connect to your database directly from outside the K8s cluster:

 PGHOST=127.0.0.1PGPORT=5432# Execute the following commands to route the connection:export POD_NAME=$(kubectl get pods --namespace default -l "app=my-pg-postgresql" -o jsonpath="{.items[0].metadata.name}")kubectl port-forward $POD_NAME 5432:5432
#kubectl get pod -o wide | grep postgresql-online-postgresql
postgresql-online-postgresql-78884fbcf6-6mfzz    1/1       Running   0          36m       172.30.4.4   cn-hangzhou.i-bp1fazljd8u2ylk2otdo#kubectl cordon cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl delete pod postgresql-online-postgresql-78884fbcf6-6mfzz
pod "postgresql-online-postgresql-78884fbcf6-6mfzz" deleted
# kubectl get pod -o wide|grep postgresql-online-postgresql
#postgresql-online-postgresql-78884fbcf6-87ttg    0/1       Running   0          15s       172.30.3.5   cn-hangzhou.i-bp1fazljd8u2ylk2otdp

Test original postgresql db could be recovered on different node.

#kubectl get pod -o wide|grep postgresql-online-postgresql
#postgresql-online-postgresql-78884fbcf6-87ttg    0/1       Running   0          15s       172.30.3.5   cn-hangzhou.i-bp1fazljd8u2ylk2otdpkubectl run my-pg-postgresql-client --rm --tty -i --image postgres \
> --env "PGPASSWORD=$PGPASSWORD" \
> --command -- psql -U postgres \
> -h postgresql-online-postgresql  postgres
If you don't see a command prompt, try pressing enter.
postgres=# select * from t1;id
----10
(1 row)

原文链接

干货好文,请关注扫描以下二维码:
图片描述

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

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

相关文章

今日头条技术架构分析

戳蓝字“CSDN云计算”关注我们哦&#xff01;今日头条创立于2012年3月&#xff0c;到目前仅4年时间。从十几个工程师开始研发&#xff0c;到上百人&#xff0c;再到200余人。产品线由内涵段子&#xff0c;到今日头条&#xff0c;今日特卖&#xff0c;今日电影等产品线。一、产品…

mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

贝尔梅尔娜美2019.03.15采纳率&#xff1a;60% 等级&#xff1a;39已帮助&#xff1a;91565人数据库系统的基本概念数据&#xff1a;实际上就是描述事物的符号记录。数据的特点&#xff1a;有一定的结构&#xff0c;有型与值之分&#xff0c;如整型、实型、字符型等。而数据…

dom文档对象手册_HTML5学习之DOM编程

DOM是Document Object Model的缩写&#xff0c;中文名称是文档对象模型。DOM是处理HTML页面的标准编程接口&#xff0c;【前端精选40G资料包赠送co&#xff0c;每日新闻资讯ding,每天进步一点点bb&#xff0c;小写英文为微信】DOM可被JavaScript用来读取、改变HTML的内容和结构…

Kubernetes之路 2 - 利用LXCFS提升容器资源可见性

摘要&#xff1a; 这是本系列的第2篇内容&#xff0c;将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。本系列文章记录了企业客户在应用Kubernetes时的一些常见问题 第一篇&#xff1a;Java应用资源限制的迷思 第二篇&#xff1a;利用LXCFS提升容器资…

mysql数据库模型相应解释_数据库事务系列-MySQL跨行事务模型

说来和MySQL倒是有缘&#xff0c;毕业的第一份工作就被分配到了RDS团队&#xff0c;主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道&#xff0c;但说实话那段时间并没有很深入的理解MySQL内核&#xff0c;做的事情基本都是围绕着MySQL做管控系统&#xff0c;比…

springboot项目jar冲突问题解决

问题&#xff1a;大概意思就是项目中有两个jar&#xff0c;同时是要是想slf4j的接口的&#xff0c;这样程序不知道使用哪个&#xff0c;就会报错了。也不算错&#xff0c;项目照样运行。但是就是报日志错误 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found …

火热的云计算,你知道这些吗?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Dan Muse译者 | 风车云马如今云计算已经渗透到IT的各个领域&#xff0c;从应用程序到基础设施无处不在。为了了解IT领导者是如何规划各自企业的云战略&#xff0c;Insider Pro采访了数百名技术决策者。面对炙手可热的云计算&…

Kubernetes Ingress 高可靠部署最佳实践

摘要&#xff1a; 在Kubernetes集群中&#xff0c;Ingress作为集群流量接入层&#xff0c;Ingress的高可靠性显得尤为重要&#xff0c;今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。 简介 在Kubernetes集群中&#xff0c;Ingress是授权入站连接到达集群服务的规则…

容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

摘要&#xff1a; 容器开启数据服务之旅系列&#xff08;二&#xff09;&#xff1a;Kubernetes如何助力Spark大数据分析 &#xff08;二&#xff09;&#xff1a;Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark OSS on ACK&#xff0c;允许…

三步走——带你打造一份完美的数据科学家简历|(附件有PPT福利)

摘要&#xff1a; 本文介绍了关于写数据科学家简历的一些技巧&#xff0c;主要包含三个部分&#xff0c;分别为简历前的材料准备&#xff0c;写简历时应注意的地方以及对整个简历的整理。不管你是不是数据科学领域的工作者&#xff0c;本文对于即将求职或找实习的同学而言是一份…

你的目的是什么是谁指使你_电视剧《谁说我结不了婚》第25-27集剧情:魏书帮程璐搞定投资人...

电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25集剧情介绍&#xff1a;程璐向魏书请教感情困扰 田蕾帮徐海峰彻底打垮凯文程璐来找魏书诉苦&#xff0c;小哈最近不但躲着她&#xff0c;还撒谎骗她不在上海&…

纪·阿晶的首次AWS之行!

戳蓝字“CSDN云计算”关注我们哦&#xff01;这是阿晶的第一次AWS之行&#xff0c;在上海&#xff0c;2019世界人工智能大会。一年前&#xff0c;同样在上海&#xff0c;AWS成立其亚太地区首个人工智能研究院。还记得当时振奋人心的官宣&#xff1a;AWS上海人工智能研究院将重点…

阿里云与WPS深度合作,开放数据处理生态

摘要&#xff1a; 在3月28日举行的2018云栖大会-深圳峰会上&#xff0c;阿里云与金山办公达成深度合作&#xff0c;WPS在线预览与格式转换能力落地阿里云。标志着阿里云存储开放的数据湖体系不但面向计算引擎&#xff0c;还面向应用开放。 在3月28日举行的2018云栖大会-深圳峰会…

interp1函数matlab_【原创】干货:用MATLAB搭建电化学单粒子模型(中)

上一期讲到Eq.1中所需要求解的参数&#xff0c;我们已经获取了3个&#xff0c;需要注意的是&#xff0c;上期所获得的电化学反应过电势已经转化成时间的函数&#xff0c;接下来只需要求正负极的固相电势随时间的变化就可以了。Eq.1 固相电势与材料的soc或体相锂离子浓度…

官宣!CSDN“2019 优秀 AI、IoT 应用案例 TOP 30+”重磅发布!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 王金许、伍杏玲责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;「Talk is cheap. Show me the case.」在 AI、IoT 技术当道的时代下&#xff0c;空泛的概念炒作永远说服不了抱有质疑的消费者。如今随…

用html设计一个logo页面_如何设计一个Logo?——Bobu Africa旅行品牌Logo设计

负空间Logo听起来很牛逼&#xff0c;但是到底要怎么做&#xff1f;Bobu Africa是一家位于肯尼亚&#xff0c;主营泛非洲奢侈旅行与工艺品销售的品牌。Africa当然指的是其主要业务范围——非洲。Bobu则是猴面包树Baobabu的一种本地化称谓。树形Logo通常的设计方式大概是写实剪影…

云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

摘要&#xff1a; 使用过开源HBase的人都知道&#xff0c;运维HBase是多么复杂的事情&#xff0c;集群大的时候&#xff0c;读写压力大&#xff0c;配置稍微不合理一点&#xff0c;就可能会出现集群状态不一致的情况&#xff0c;糟糕一点的直接导致入库、查询某个业务表不可用,…

来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle

执行计划&#xff08;execution plan&#xff0c;也叫查询计划或者解释计划&#xff09;是数据库执行 SQL 语句的具体步骤&#xff0c;例如通过索引还是全表扫描访问表中的数据&#xff0c;连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想&#xff0c;我们首先应…

linux 升级mysql版本 lamp_Linux 下安装 LAmp及配置

第一步&#xff1a;配置防火墙(默认情况下&#xff0c;端口80和3306是拒绝访问的&#xff0c;在防火墙上进行配置)&#xff1a;vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下两句)-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许8…

阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统

摘要&#xff1a; 本文主要介绍视频直播间系统&#xff0c;以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量&#xff0c;低延迟的视频直播间服务。 背景 视频直播间作为直播系统对外的表现形式&#xff0c;在整个系统中处于核心地位。通常除了视频直播窗口外&#…