k8s部署mysql主从复制
Mysql主从
准备环境
一,准备软件
官方docker_image :Mysql5.7.28
Docker Version: 19.03.4
K8s api-version: apps/v1
二,具体制作流程
1根据docker-image编写Dockerfile制作mysql-master镜像2.1根据docker-image编写Dockerfile制作mysql-salve镜像
From mysql:latest #基础镜像
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #设置无密码登录
COPY conf.sh /mysql/conf.sh #复制配置文件
COPY set.sql /mysql/set.sql #复制配置文件
CMD ["sh", "/mysql/conf.sh"] #容器启动时执行脚本
2.1配置文件conf.sh
#! /bin/bash
set -e
echo "1,设置mysql_server_ID....."
sed -i '/\[mysqld\]/a server-id=1\nlog-bin=/var/lib/mysql/mysql-bin\ngtid-mode=ON\nenforce-gtid-consistency=ON' /etc/mysql/mysql.conf.d/mysqld.cnf
echo "2.启动MySQL 。。。"
service mysql start
echo "3,设置密码。。。"
sed -i 's/MYSQLROOTPASSWOED/'$MYSQL_ROOT_PASSWORD'/' mysql/set.sql
sed -i 's/MYSQLREPLICATIONPASSWORD/'$MYSQL_REPLICATION_PASSWORD'/' mysql/set.sql
sed -i 's/MYSQLREPLICATIONUSER/'$MYSQL_REPLICATION_USER'/' mysql/set.sql
mysql < /mysql/set.sql
echo "4 service mysql status"
tail -f /dev/null
2.2配置文件set.sql 设置mysql——root密码 创建复制用户及密码
use mysql;
set password for root@'localhost' = password("MYSQLROOTPASSWORD");
grant all on *.* to "MYSQLREPLICATIONUSER"@'%' identified by "MYSQLREPLICATIONPASSWORD" with grant option;
grant all on *.* to 'root'@'%' identified by "MYSQLREPLICATIONPASSWORD" with grant option;
flush privileges;
1.3将三个文件放在同级目录构建mysql-master-image
执行命令
#docker build -t mysql5.7-master:001 .
创建完image后在本地docker环境配置容器看是否有无复制用户
#docker run --name mysql-master -e MYSQL_ROOT_PASSWORD="123456" -e MYSQL_REPLICATION_USER="rep1" -e MYSQL_REPLICATION_PASSWORD="123456" -d mysql5.7-master:01
进入容器>进去mysql>查看用户
#docker exec -it mysql-master bash
2.1根据docker-image编写Dockerfile制作mysql-salve镜像
From mysql:latest #基础镜像
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #设置无密码登录
COPY conf.sh /mysql/conf.sh #复制配置文件
COPY set.sql /mysql/set.sql #复制配置文件
CMD ["sh", "/mysql/conf.sh"] #容器启动时执行脚本
2.1配置文件conf.sh
#! /bin/bash
set -e
echo "1,设置mysql_server_ID....."
sed -i '/\[mysqld\]/a server-id=1\nlog-bin=/var/lib/mysql/mysql-bin\ngtid-mode=ON\nenforce-gtid-consistency=ON' /etc/mysql/mysql.conf.d/mysqld.cnf
echo "2.启动MySQL 。。。"
service mysql start
echo "3,设置密码。。。"
sed -i 's/MYSQLROOTPASSWOED/'$MYSQL_ROOT_PASSWORD'/' mysql/set.sql
sed -i 's/MYSQLREPLICATIONPASSWORD/'$MYSQL_REPLICATION_PASSWORD'/' mysql/set.sql
sed -i 's/MYSQLREPLICATIONUSER/'$MYSQL_REPLICATION_USER'/' mysql/set.sql
mysql < /mysql/set.sql
echo "4 service mysql status"
tail -f /dev/null
2.2配置文件set.sql 设置mysql——root密码 创建复制用户及密码
use mysql;
set password for root@'localhost' = password("MYSQLROOTPASSWORD");
grant all on *.* to 'root'@'%' identified by "MYSQLREPLICATIONPASSWORD" with grant option;
flush privileges;
2.3将三个文件放在同级目录构建mysql-slave-image
执行命令
#docker build -t mysql5.7-slave:001 .
2.4创建完image后在配置slave容器
2.4.1先查看master容器IP
# docker inspect mysql-master | grep IPAddr
2.5创建slave容器
docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD="123456" -e MYSQL_MASTER_SERVICE_HOST="172.17.0.10" -e MYSQL_REPLICATION_USER="rep1" -e MYSQL_REPLICATION_PASSWORD="123456" -d mysql5.7-slave:001
2.6进入容器>进去mysql>slave状态
#docker exec -it mysql-slave bash
三,将所创建mysql-images转入k8s镜像库作为底层pod基础
1 在本地环境docker保存刚刚创建的两个mysql镜像
#docker save -o mysql5.7-master.tar mysql5.7-master:001
#docker save -o mysql5.7-slave.tar mysql5.7-slave:001
2导入至k8s环境
# docker load -i mysql5.7-master.tar
# docker load -i mysql5.7-slave.tar
3编写mysql-master-deploy.yaml
apiVersion: apps/v1 #版本号
kind: Deployment #创建的资源类型
metadata: #该资源的元数据,name必选项
name: mysql-master #name描述
spec: #deployment的规格说明
replicas: 1 #副本数量
selector:
matchLabels:
name: mysql-master
template: #定义pod的模板,配置文件的重要部分
metadata: #定义pod的元数据,至少定义一个label
labels:
name: mysql-master
track: stable
spec: #描述pod的规格,定义pod中每个容器的属性,name和image必须
containers: #容器描述
- image: mysql5.7-master:001 #镜像来源名字
name: mysql-master
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_REPLICATION_USER
value: "rep1"
- name: MYSQL_REPLICATION_PASSWORD
value: "123456"
4编写mysql-mater-svc.yaml 映射端口为集群:31111
apiVersion: v1
kind: Service
metadata:
name: mysql-master
labels:
name: mysql-master
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 31111
protocol: TCP
selector:
name: mysql-master
5编写mysql-slave-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-slave
spec:
replicas: 3
selector:
matchLabels:
name: mysql-slave
template:
metadata:
labels:
name: mysql-slave
spec:
# hostNetwork: true
# endpoint-pod-names: mysql-master
containers:
- name: mysql-slave
image: mysql5.7-slave:001
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_REPLICATION_USER
value: "rep1"
- name: MYSQL_REPLICATION_PASSWORD
value: "123456"
- name: MYSQL_MASTER_SERVICE_HOST
value: 192.168.226.183
ports:
- name:
containerPort: 3306
查看pods状态
#kubectl get pods -o wide
验证 再master创建一张表看slave是否同步
k8s部署mysql主从复制的更多相关文章
- 2.快速部署MySQL主从复制
1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...
- k8s部署mysql数据持久化
在这里我部署mysql的目的是为了后面将上一篇博客docker打包的el-admin镜像部署到k8s上,所以本文主要是部署mysql并实现持久化. 1.将我们的应用都部署到 el-admin 这个命名 ...
- centos7下部署mysql主从复制
首先大致看一下这个图 环境说明: 系统:centos7 IP:master:192.168.7.235 slave:192.168.7.226 mysql版本MySQL-5.7 1.Master 下载 ...
- 安装部署MySQL主从复制
Environment:{ CentOS 7 两台 安装MySQL(mariadb mariadb-server) } !!!关闭防火墙SELinux 1.查看版本信息 2.启动mysql服务,查 ...
- docker 容器模式下部署mysql 主从复制
1.计划用两台host来部署,分别部署一台 mysql,一主一从,2.配置好主从mysql配置文件,更改文件名即可[client]port = 3306socket = /var/run/mysqld ...
- 使用docker部署mysql主从复制集群
一.环境搭建 虚拟机环境:centos7 IP: 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 doc ...
- Kubernetes 部署Mysql 主从复制集群
Mysql主从参考文章: https://www.jianshu.com/p/509b65e9a4f5 http://blog.51cto.com/ylw6006/2071864 Statefulse ...
- Ubuntu 16.04下使用docker部署MySQL主从复制
(以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作.) 首先更新 软件源 https://mirrors.tuna.tsinghua.edu.cn/help/ubu ...
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
随机推荐
- MediaStreamConstraints对象
MediaStreamConstraints对象作用是在调用getUserMedia()时用于指定应在返回的MediaStream中包括哪些轨道,以及(可选)为这些轨道的设置约束. 属性 audio布 ...
- 配置ssh互信
配置基于密钥认证的免密登录 用到的命令: ssh-keygen:创建公钥和密钥,会生成id_rsa和id_rsa.pub两个文件 生成ssh密钥后,密钥将默认存储在家目录下的.ssh/目录中.私钥和公 ...
- 第二次作业:卷积神经网络 part 1
第二次作业:卷积神经网络 part 1 视频学习 数学基础 受结构限制严重,生成式模型效果往往不如判别式模型. RBM:数学上很漂亮,且有统计物理学支撑,但主流深度学习平台不支持RBM和预训练. 自编 ...
- js跳转界面
js页面跳转大全 所谓的js页面跳转就是利用javesrcipt对打开的页面ULR进行跳转,如我们打开的是A页面,通过javsrcipt脚本就会跳转到B页面.目前很多垃圾站经常用js跳转将正常页面跳转 ...
- 利用Jsoup爬取新冠疫情数据并存至数据库
需要用到的jar包(用来爬取的jsoup,htmlunit-2.37.0-bin以及连接数据库中的mysql.jar) 链接:https://pan.baidu.com/s/1VlylWmlhjd8K ...
- 重温这几个屌爆的Python技巧!
我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用.这些年来的经历让我学到了很多的小技巧和知识,大多数是通过阅读很流行的开源软件,如Djan ...
- 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
- Python爬取招聘网站数据,给学习、求职一点参考
1.项目背景 随着科技的飞速发展,数据呈现爆发式的增长,任何人都摆脱不了与数据打交道,社会对于“数据”方面的人才需求也在不断增大.因此了解当下企业究竟需要招聘什么样的人才?需要什么样的技能?不管是对于 ...
- Linux中文解决
中文编码问题 安装中文语言包 locale -a | grep zh 查看是否有中文语言包 local 查看是否 LC_TYPE 为空 在 /etc/profile.d/ 下创建 lc_type.sh ...
- JDK 1.8 中文 API CHM
链接: https://pan.baidu.com/s/1AiJn6RM1KoEL1n_96qoQhQ 提取码: n2ya