如何在k8s上部署mysql 8.0 MGR

分类:编程技术 时间:2024-02-20 15:33 浏览:0 评论:0
0
本文介绍《如何在k8s上部署mysql 8.0 MGR》的相关知识。在实际案例操作过程中,很多人都会遇到这样的困境。接下来就让小编带领大家学习一下这些情况该如何处理吧!我希望你能仔细阅读并学到一些东西!

1.环境概览

k8s环境:1个master节点,3个node节点。

在三个节点上构建MGR集群。 mysql的数据文件挂载在本地存储中。镜像完成后,需要将初始化的数据文件复制到三个节点的本地挂载点/data/mysql/data/。另外,auto.cnf需要修改。 uuid,使三个节点的uuid不同。

两个。构建步骤

制作mysql 8.0.15镜像

跳过此步骤,参考mysql官方二进制包安装步骤,https://dev.mysql.com/doc/refman/ 8.0/en/binary-installation.html。安装完成后,创建镜像。

准备为三个节点 Pod 生成相关的 yaml 文件。

---创建命名空间文件namespace.yaml:

apiVersion: v1
kind: Namespace
metadata:
name : mysqldb

---节点1的配置映射文件mysql-mgr-cnf-0.yaml:

apiVersion: v1
data :< br/> mysql-mgr-0.cnf: |
[mysqld]
port = 3306
character_set_server = utf8
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
  log-error = /data/mysql/data/mysql.err
pid-file = /data/mysql/data/mysql.pid
datadir = / data/mysql/data
server_id = 092832
log_bin=mysql-bin
relay-log=relay-bin
#back_log=500
#max_connections=3000
/> #wait_timeout = 5022397
Interactive_timeout = 5022397
max_connect_errors = 1000
relay-log-recovery=1
#max_allowed_pa​​cket = 32M
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 8M
​ thread_cache_size = 64
​ #tmp_table_size = 256M
/>​log_slave_updates=1
​long_query_time = 1
 slow_query_log = 1
 slow_query_log_file = /data/mysql/data/slow_sql.log
skip-name-resolve
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_buffer_pool_size=700M
#innodb_data_file_path = ibdata1:1 024M:autoextend
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size = 16M
innodb_log_file_大小=256M
innodb_log_files_in_group = 2
innodb_max_dirty_pages_pct = 50
sync_binlog=1
master_info_repository=TABLE
/> Relay_log_info_repository = 表
log_timestamps = 系统
gtid_mode = 开
ENFORCE_GTID_CONSISISTENCY = 开
Master_info_RePositionor y = 表
Relay_log_info_repository = 表
log_slave_updates = 开
  binlog_checksum = NONE
log_slave_updates = ON
Slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=8
slave-preserve-commit-order=on
#group_replication_compression_threshold=200000
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="mysql-mgr-0 .m grtest.mysqldb .svc.cluster.local.:13306"
loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest .mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
loose-group_replication_bootstrap_group = off
loose-group_replication_ip_whitelist='10.244 .0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
report_host = mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local
[mysqldump]< br/> 快速
max_allowed_pa​​cket = 32M
种类:ConfigMap
元数据:
名称:mysql-mgr-0-cnf
命名空间:mysqldb


---节点2的配置映射文件mysql-mgr-cnf-1.yaml:

api版本:v1
数据:
mysql -mgr-1.cnf: |
[mysqld]
端口 = 3306
character_set_server = utf8
套接字=/tmp/mysql.sock
basedir=/usr/local/mysql
日志错误=/data/mysql/data/mysql.err
pid-file = /data/mysql/data/mysql.pid
datadir = /data/mysql/data
server_id = 092231
log_bin = mysql-bin
 relay-log = relay-bin
#back_log = 500
#max_connections = 3000
#wait_timeout = 5022397
Interactive_timeout = 5022397
max_connect_errors = 1000
中继日志恢复=1
#max_allowed_pa​​cket = 32M
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 8M
thread_cache_size = 64
#tmp_table_size = 256M
log_slave_updates=1
long_query_time = 1
Slow_query_log = 1
Slow_query_log_file = /data/mysql/data/slow_sql.log
Skip-name-resolve
/> sql_mode= NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_buffer_pool_size=700M
#innodb_data_file_path = ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innod b_max_dirty_pages_pct = 50
sync_binlog=1
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_timestamps=SYSTEM
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_updates=ON
binlog_checksum=NONE
log_slave_updates = ON
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=8
slave-preserve-commit-order=on
  #group_replication_compression_threshold=200000
transaction_write_set_extraction = XXHASH64
松散- group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="mysql -mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306" loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
loose-group_replication_bootstrap_group = off
loose-group_replication_ip_whitelist =' 10.244.0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
report_host = mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local
[mysqldump]
快速
  max_allowed_pa​​cket = 32M
种类:ConfigMap
元数据:
名称:mysql-mgr-1-cnf
命名空间:mysqldb

< p>

---节点3的配置映射文件mysql-mgr-cnf-2.yaml:

api版本:v1
数据:
mysql-mgr-2.cnf: |
[mysqld]
port = 3306
character_set_server = utf8
socket = /tmp/mysql.sock
basedir = /usr /local/mysql
/> log-error = /data/mysql/data/mysql.err
pid-file = /data/mysql/data/mysql.pid
datadir = /data /mysql/data
server_id = 092132
log_bin=mysql-bin
relay-log=relay-bin
#back_log=500
#max_connections=3000
#wait_timeout = 5022397
交互ive_timeout = 5022397
max_connect_errors = 1000
relay-log-recovery=1
#max_allowed_pa​​cket = 32M
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 8M
thread_cache_size = 64
#tmp_table_size = 256M
log_slave_updates=1
long_query_time = 1
Slow_query_log = 1
Slow_query_log_file = /data/mysql/data/slow_sql .log
跳过-name-resolve
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_buffer_pool_size=700M
#innodb_data_file_path = ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit =1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
  innodb_max_dirty_pages_pct = 50
sync_binlog=1
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_timestamps =SYSTEM
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_up日期 = ON
binlog_checksum = NONE
log_slave_updates = ON
Slave_parallel_type=LOGICAL_CLOCK
Slave_parallel_workers=8
Slave-preserve-commit-order=on
  #group_replication_compression_threshold =200000
  transaction_write_set_extraction = XXHASH64
 loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
 loose-group_replication_start_on_boot=off
loose-group_replication_local_address="mysql-mgr- 2.mgrtest.mysqldb.svc.cluster.local.:13306"
loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest .mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
loose-group_replication_bootstrap_group = off
loose-group_replication_ip_whitelist='10.244 .0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
report_host = mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local
[mysqldump]< br/> 快速
max_allowed_pa​​cket = 32M
kind:ConfigMap
元数据:
名称:mysql-mgr-2-cnf
命名空间:mysqldb

----节点1的pod的yaml文件:
api版本:v1
种类:Pod
元数据:
名称:mysql-mgr-0
命名空间:mysqldb
标签:
名称:mysql- mgr
规格:
亲和力:
节点亲和性:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
                                                                                                                                                                                                                                          子域:mgrtest
容器:
- 图像: 172.16.110.102:5000/mysql8.0:latest
name: mysql-mgr-0
imagePullPolicy: IfNotPresent
command command : [ "/bin/bash", "-ce", "cd /usr/local/mysql && bin/mysqld_safe --defaults-file=/etc/my.cnf && tail -f /dev/null" ]
#env:
#- name: MYSQL_ROOT_PASSWORD
# value: noc-mysql
ports:
-containerPort:3306
volumeMounts:
-name: tz-config
挂载路径:/etc/localtime
- 名称:mysql-data
挂载路径:/data/mysql/data/
- 名称:mysql-config
/> mountPath: /etc/my.cnf
subPath: my.cnf
env:
- name: INNODB_BUFFER_POOL_SIZE
value: 500M
#- name: REPORT_HOST< br/> # 值:mysql-mgr-0.mgrtest.mysqldb.svc.cluster。本地
卷:
- 名称:tz-config
主机路径:
路径:/etc/localtime
- 名称:mysql-data
主机路径:< br/> 路径:/data/mysql /data/
                                                                                                                                                                                  /data/ .cnf
路径:my.cnf
----节点2的pod的yaml文件:

api版本:v1
种类:Pod
元数据:
名称:mysql-mgr-1
命名空间:mysqldb
标签:
名称: mysql-mgr
规格:
亲和性:
节点亲和性:
requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:。 1"]
主机名:mysql-mgr-1
子域:mgrtest
容器:
- 镜像:172.16.110.102:5000/mysql8.0:latest
名称: mysql-mgr-1
imagePullPolicy: IfNotPresent
命令: [ "/bin/bash", "-ce", "cd /usr/local/mysql && bin/mysqld_safe --defaults-file= /etc/my.cnf && tail -f /dev/null" ]
#env:
#- name: MYSQL_ROOT_PASSWORD
  # value: noc-mysql
ports:
- 容器端口:3306
volumeMounts:
- 名称:tz-config
挂载路径:/etc/localtime
- 名称:mysql-data
挂载路径:/data /mysql/data
- 名称:mysql-config
挂载路径:/etc/my.cnf
子路径:my.cnf
env:
- 名称:INNODB_BUFFER_POOL_SIZE< br/> 值:500M
卷:
- 名称:tz-config
主机路径:
路径:/etc/localtime
- 名称:mysql-data
hostPath:
路径: /data/mysql/data/
-name: mysql-config
configMap:
name: mysql-mgr-1-cnf< br/> items:
- key: mysql-mgr-1.cnf
path: my.cnf

---节点3的pod的yaml文件:

api版本:v1
种类:Pod
元数据:
名称:mysql-mgr-2
命名空间:mysqldb
标签:
名称: mysql-mgr
规格:
亲和性:
节点亲和性:
requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
                                                                                                                                      sp;运算符:In
值:[“mysql-mgr-2”]
主机名:mysql-mgr-2
子域:mgrtest
容器:
-图像:172.16 .110.102:5000/mysql8.0:latest
name: mysql-mgr-2
imagePullPolicy: IfNotPresent
command: [ "/bin/bash", "-ce", " cd / usr/local/mysql && bin/mysqld_safe --defaults-file=/etc/my.cnf && tail -f /dev/null" ]
#env:
  #- 名称:MYSQL_ROOT_PASSWORD
# 值:noc-mysql
端口:
- 容器端口:3306
volumeMounts:
- 名称:tz-config
/> 挂载路径:/etc/localtime
- 名称:mysql-data
挂载路径:/data/mysql/data
- 名称:mysql-config
挂载路径:/etc/my .cnf
子路径:my.cnf
env:
- 名称:INNODB_BUFFER_POOL_SIZE
值:500M
卷:
- 名称:tz-config
主机路径:
路径:/etc/localtime
- 名称:mysql -data
      主机路径:
     路径:/data/mysql/data/
     - 名称: mysql-config
      configMap:
     name: mysql-mgr-2-cnf
       items:
       - key: mysql-mgr-2.cnf
                                                                              sp; path: my.cnf

---为三个 Pod 创建的服务的 yaml 文件

apiVersion: v1
kind: Service
metadata :
名称:mgrtest
命名空间:mysqldb
规范:
选择器:
名称:mysql-mgr
集群IP:无
端口:
/> -name: foo
port: 3306
targetPort: 3306

创建命名空间、服务、configmap、pod

kubectl create - f 命名空间.yaml

kubectl create -f mysql-mgr-svc.yaml

kubectl create -f mysql-mgr-cnf-0.yaml

kubectl创建-f mysql-mgr-cnf-1.yaml

kubectl create -f mysql-mgr-cnf-2.yaml

kubectl create -f mysql-mgr -0-pod .yaml

kubectl create -f mysql-mgr-1-pod.yaml

kubectl create -f mysql-mgr-2-pod.yaml

作为创建后如下所示:



配置节点1:

root @dkm:/app/mgr# kubectl exec -it mysql-mgr-0 -n mysqldb /bin/bash

root@mysql-mgr-0:/# /usr/local/mysql/bin/ mysql -uroot -p


更改由'Mysql123!@#'标识的用户'root'@'localhost';
set sql_log_bin=0;
创建由“Rpl_pass@123”标识的用户rpl_user@'%';
将*.*上的复制从属授予rpl_user@'%';
刷新权限;
set sql_log_bin=1;
将master更改为master_user='rpl_user',master_password='Rpl_pass@123' for 通道'group_replication_recovery';
安装PLUGIN group_replication SONAME 'group_replication.so';

重置master;
设置全局group_replication_single_primary_mode=FALSE;
set global group_replication_enforce_update_everywhere_checks=TRUE;
set global group_replication_bootstrap_group=ON;
start group_replication;
set global group_replication_bootstrap_group=OFF;
select * from Performance_schema.replication_group_members;


配置节点2:

set sql_log_bin=0;
创建由'Rpl_pass@标识的用户rpl_user@'%' 123';
将 *.* 上的复制从属授予 rpl_user@'%';
刷新权限;
设置 sql_log_bin=1;
将 master 更改为 master_user ='rpl_user', master_password='Rpl_pass@123' 对于通道 'group_replication_recovery';
安装插件 group_replication SONAME 'group_replication.so';

重置 master;
设置全局 group_replication_single_primary_mode =FALSE;
设置全局group_replication_enforce_update_everywhere_checks=TRUE;
设置全局group_replication_recovery_get_public_key=on;
启动group_replication;
从performance_schema.replication_group_members中选择*;


配置节点3:

set sql_log_bin=0;
创建由'Rpl_pass@123'标识的用户rpl_user@'%';
将*.*上的复制从属授予rpl_user@' %';
刷新权限;
设置sql_log_bin=1;
将通道'group_replication_recovery'的master更改为master_user='rpl_user',master_password='Rpl_pass@123';
安装插件group_replication SONAME 'group_replication.so';

重置主服务器;
设置全局group_replication_single_primary_mode=FALSE;
设置全局group_replication_enforce_update_everywhere_checks=TRUE;
设置全局group_replication_recovery_get_public_key=on;
启动group_replication;
从performance_schema.replication_group_members中选择*;


总结:

(1) 节点与各个节点进行通信通过域名。域名组成为:hostname.service.namespace.svc.cluster.local。

(2)注意每个节点的配置文件中配置report_host作为该节点的域名,即主机名.service.namespace.svc.cluster.local。否则会报错:

2023-04-10T09:16:53.607069+08:00 55 [ERROR] [MY-010584] [Repl] Slave I/O for Channel 'group_replication_recovery':连接到主服务器“rpl_user@mysql-mgr-0:3306”时出错 - 重试时间:60 次重试:1,Error_code:MY-002005
...

2023-04-10T09: 17:53.682099+ 08:00 24 [错误] [MY-011582] [Repl] 插件 group_replication 报告:'连接到捐赠服务器时出现错误。请检查group_replication_recovery通道凭据以及performance_schema.replication_group_members表的所有MEMBER_HOST列值是否正确并且DNS可解析。'

“如何在这结束“部署MySQL 8.0 MGR”的介绍在 k8s 上”。感谢您的阅读。如果您想了解更多行业资讯,可以关注网站,小编将为大家输出更多优质实用文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在k8s上部署mysql 8.0 MGR

用户评论