k8smysql配置⽂件_更新k8s⾥的mysql配置⽂件
标签:
背景:
环境注意:在⽤rancher搭建的k8s⾥,mysql是起了⼀个pod,镜像是⽹上的mysql:5.7
开发⼈员提出了⼀个报错“查询时的ONLY_FULL_GROUP_BY错误”,让我改sql_mode,当时我觉得这很好改,将数据库的配置⽂件添
加⼀条sql_mode,重启数据库就⾏了。
但是,我起初通过rancher进⼊到mysql容器⾥⾯,执⾏命令 mysql -uroot -p密码 -e "set
@@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE 或者是进到mysql⾥⾯执⾏命令或者写到配置⽂件⾥重启mysql,会出现⼀些问题:设置只针对新建的数据,旧的数据还是不起作⽤;设置
只针对这次运⾏中的容器,下次重启更新pod,配置都会失效;写⼊配置⽂件再重启或重载mysql会出现整个pod都会更新,导致配置⽂件
恢复到初始。
既然不能在容器⾥⾯改,也不能修改镜像,所以就从mysql的yaml⽂件下⼿。
思路:
1.创建configmap,设置配置映射
mysql配置⽂件---configmap
apiVersion: v1
data:
mysqldf: |-
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREAT
kind: ConfigMap
metadata:
name: mysql-config
namespace: gymdev
其中,mysqldf是数据库配置⽂件的名称,后⾯跟的是配置⽂件的内容,最后⼀排就是更改报错的配置;metadata--name是这个configmap的名称,后⾯mysql的yaml⾥⾯会调⽤。
mysql
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-dev
namespace: icourt-dev
labels:
app: mysql-dev
spec:
replicas: 1
selector:
matchLabels:
app: mysql-dev
template:
metadata:
labels:
app: mysql-dev
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "密码"
ports:
- containerPort: 3306
protocol: TCP
name: 3306tcp01
volumeMounts:
mysql下载app-
mountPath: "/var/lib/mysql"
name: mysqlpv-icourt-dev
subPath: mysqldev-icourt-dev
- name: config-volume
mountPath: "/etc/f.d/"
volumes:
- name: mysqlpv-icourt-dev persistentVolumeClaim:
claimName: mysqlpvc-icourt-dev
- name: config-volume
configMap:
name: mysql-config
其中,(1)表⽰⼀个挂载点的名称
(2)表⽰新挂载点的路径,这⾥就是mysql配置⽂件的路径
(3)表⽰挂载点的名称
(4)使⽤configmap
(5)使⽤名为mysql-config
标签:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论