作者归档: Anel Husakovic
在这篇博客中,我们将演示如何使用二进制日志将运行在 Docker 容器中(我们称之为主库)的 MariaDB 数据库复制到一个或多个运行在 Docker 容器中(我们称之为副本库)的 MariaDB 服务器。二进制日志是一种创建包含数据库所有更改(数据和结构)记录的二进制日志文件和索引的方法。你可以在此处找到关于复制工作原理的概述,并在此处找到如何设置复制。示例可以在此 GitHub 脚本中找到。
…
在上一篇博客中,我们创建了一个无状态应用,使用 K8s Deployment 资源进行部署。这种方式允许复制应用,但在 Pod 重启时数据会丢失,这意味着数据没有一致性。在同一篇博客中,我们使用了 PersistentVolumeClaim 来动态配置 PersistentVolume,但我们使用的是用于无状态应用的 Deployment 资源,这种方式对于每个副本都应有自己的持久卷的有状态集应用来说是*不推荐的*。实现这一目标的正确方法是使用Statefulset资源,本文将对此进行介绍。
在 K8s 中,可以创建一个有状态应用,例如数据库应用。这种应用需要将数据保存到持久磁盘存储中,供服务器/客户端/其他应用使用,以跟踪其状态,并能够在分布式系统中进行复制和使用。
…
在上一篇博客MariaDB 与 K8s:创建 Secret 并在 MariaDB 部署中使用中,我们使用了 Secrets 资源来隐藏敏感的 root 用户数据;而在该系列更早的博客MariaDB 与 K8s:容器/部署之间的通信中,我们在一个 Pod 中创建了 2 个容器(即 MariaDB 和 phpmyadmin)。那种部署方式没有任何持久卷。
在这篇博客中,我们将为 MariaDB 和 WordPress 应用分别创建独立的 Deployment,并为两者创建一个 Service 以便连接。此外,我们还将在 MariaDB Deployment 的 Pods 中创建一个 Volume。
…
在上一篇博客中,我们创建了一个无状态应用,使用 K8s Deployment 资源进行了部署,并暴露了 root 密码,这在安全性方面显然是不推荐的。K8s 允许使用特定的 K8s 资源来隐藏敏感数据。
让我们看看如何在 K8s 中使用Secrets。
K8s 中的 Secrets
为了保存敏感数据,可以使用一个称为Secret 的 K8s 资源。
可以通过运行 kubectl create secret 命令从 CLI 创建 Secret。
这里我们将使用两种方法来创建 Secret。
…
Seppo Jaakola 将在MariaDB Server 安全大会(2022 年 4 月 6 日星期三)上就“MariaDB Galera 集群安全”这一主题进行演讲。
我正在观看他的讲座。让我分享一些细节。Seppo 并没有谈论 Galera 默认支持的 MariaDB 本地安全功能,而是由于分布式集群拓扑结构需要额外的安全相关措施。他谈到了集群拓扑、集群通信安全、Galera 增强的静态数据加密以及新的 10.9 版本特性“通过 IP 允许列表进行节点筛选”。
你有什么问题想问 Seppo 吗?
…
在上一篇博客中,从 YAML 文件创建了一个后台 Deployment 资源,它由一个充当后台容器的单一容器(MariaDB)组成。
在这篇博客中,我们将继续创建前端容器,通过Service和其他资源与后端进行通信。
关于 Services
当应用通过 Deployment 运行时,Pods 会被动态创建和销毁。创建时,它们会在集群中获得内部 IP 地址。由于它们是短暂的,因此需要一种稳定的方式来允许 Pod 之间进行通信。
…
这是本系列博客的第一篇,解释了如何在 Kubernetes (K8s) 中使用 MariaDB,并介绍了一些 K8s 和 MariaDB 的重要概念。
这篇博客解释了如何在 K8s 中使用 CLI 将 MariaDB 作为无状态应用启动,并探讨了可以在 CLI 上运行的不同命令。
前提是你已经安装了kubectl(它也会安装 Docker 运行时)和minikube(本地 K8s)。
我们先启动 minikube
$ minikube start && kubectl get nodes
名称 状态 角色 年龄 版本
minikube Ready control-plane,master 104d v1.22.2
Pod 是 K8s 资源,也是 K8s 中的最小单元。
…
在这篇博客中,我们将看到如何创建指向远程服务器的链接,并使用它一次访问多个表。
在上一篇博客中,我们了解了如何在 Docker 容器之间建立远程连接。
我们这样做的方式是指定连接字符串只引用单个表。
但是如果我们需要更多表,或者需要整个数据库呢?
解决方案是使用CREATE SERVER语句链接到远程数据库。
以这种方式获得的链接可以传递给存储引擎 (SE) 的 CREATE TABLE 语句,以建立连接;使用表发现功能,SE 将了解表字段并创建表。
…