mysql在k8s环境里安装及搭建主从架构

1、环境准备

k8s集群,版本1.27.0

2、搭建nfs服务器

本次用的k8smaster节点作为nfs服务器,因为需要在两个工作节点上连接nfs,所以工作节点上也要安装nfs

yum install -y nfs-utils

我们直接在nfs服务器(k8s-master)当中创建这三个目录并写入 /etc/exports 文件夹中(创建的目录可以修改)

mkdir -p /data/nfs/{mysql-master,mysql-slaver-01,mysql-slaver-02}

cat >> /etc/exports << EOF

/data/nfs/mysql-master *(rw,sync,no_root_squash)

/data/nfs/mysql-slaver-01 *(rw,sync,no_root_squash)

/data/nfs/mysql-slaver-02 *(rw,sync,no_root_squash)

EOF

执行命令启动并验证目录是否暴露成功

systemctl enable --now nfs-server

showmount -e 192.168.15.21

3、安装mysql集群

(1) 创建命名空间

kubectl create namespace mysql

apiVersion: v1

kind: Namespace

metadata:

        name: mysql

spec: {}

status: {}

(2) 创建MySQL密码的Secret

创建一个存储了MySQL密码的Secret,我们可以直接使用这行命令生成这个Secret的资源清单文件:

# 注意修改root的密码和命名空间,我的root密码设置为的是qwerty,生成后存入yaml文件执行

kubectl create secret generic hamysql-password --namespace=mysql --from-literal=mysql_root_password=qwerty --dry-run=client -o=yaml

(3) 安装MySQL主节点

创建pv和pvc

apiVersion: v1

kind: PersistentVolume

metadata:

  name: deploy-mysql-master-nfs-pv

  namespace: mysql

spec:

  capacity:

    storage: 1Gi

  accessModes:

    - ReadWriteMany

  nfs:

    # 注意修改IP地址和暴露的目录(如果不一样)

    server: 192.168.1.160

    path: /data/nfs/mysql-master

  storageClassName: "nfs"

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: deploy-mysql-master-nfs-pvc

  namespace: mysql

spec:

  accessModes:

    - ReadWriteMany

  storageClassName: "nfs"

  resources:

    requests:

      storage: 1Gi

  volumeName: deploy-mysql-master-nfs-pv

创建pv和pvc kubectl apply -f xxx

kubectl get pv,pvc -n mysql

写一个my.cnf文件

[mysqld]

skip-host-cache

skip-name-resolve

datadir          = /var/lib/mysql

socket           = /var/run/mysqld/mysqld.sock

secure-file-priv = /var/lib/mysql-files

pid-file         = /var/run/mysqld/mysqld.pid

user             = mysql

secure-file-priv = NULL

server-id        = 1

log-bin          = master-bin

log_bin_index    = master-bin.index

binlog_do_db     =wvg_user

binlog_ignore_db = information_schema

binlog_ignore_db = mysql

binlog_ignore_db = performance_schema

binlog_ignore_db = sys

binlog-format    = ROW

[client]

socket           = /var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

注意几个配置

# server id,要注意多个mysql节点唯一

server-id        = 1

# 生成的logbin的文件名

log-bin          = master-bin

log_bin_index    = master-bin.index

# 同步哪个数据库,这里我们为了测试之同步wvg_user这个数据库,写*/不写就是所有都同步

binlog_do_db     = wvg_user

# 排除哪个数据库,可以写多行,排除的数据库不会被主从同步,这里写上mysql自带的几个数据库

binlog_ignore_db = information_schema

... # 还有几行省略

# binlog的格式

binlog-format    = ROW

接下来将创建一个ConfigMap来存储这个配置文件。可以使用以下配置生成yaml资源清单文件内容:

kubectl create configmap mysql-master-cm -n mysql --from-file=my.cnf --dry-run=client -o yaml

部署mysql主节点

apiVersion: v1

data:

  my.cnf: |

    [mysqld]

    skip-host-cache

    skip-name-resolve

    datadir          = /var/lib/mysql

    socket           =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值