本文用于测试使用,所以用的hostpath类型pv卷,实际使用不建议使用hostpath作于持久化存储。
mysql配置文件
配置yaml文件
cat mysql_config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
namespace: mysql
labels:
app: mysql
data:
master.cnf: |
[client]
socket = /data/mysqldata/3306/tmp/mysql.sock
default-character-set = utf8mb4
[mysqld]
skip_ssl
skip-name-resolve
port = 3306
character-set-server = utf8mb4
server-id = 78
gtid_mode = ON
enforce_gtid_consistency= ON
binlog_format = ROW
log-bin = /data/mysqldata/3306/binlog/mysql-bin
expire_logs_days = 90
binlog_cache_size = 4M
innodb_buffer_pool_size = 42G
innodb_log_buffer_size = 64M
innodb_log_file_size = 2G
innodb_read_io_threads = 12
innodb_write_io_threads = 12
sort_buffer_size = 16M
socket = /data/mysqldata/3306/tmp/mysql.sock
basedir = /usr/lib/mysql
plugin_dir = /usr/lib64/mysql/plugin
datadir = /data/mysqldata/3306/data
tmpdir = /data/mysqldata/3306/tmp
log-error = /data/mysqldata/3306/logs/mysql-3306.log
pid-file = /data/mysqldata/3306/tmp/mysql-3306.pid
slow_query_log_file = /data/mysqldata/3306/logs/slow.log
open_files_limit = 65535
thread_cache_size = 300
max_connections = 2000
max_connect_errors = 100000
interactive_timeout = 2400
wait_timeout = 2400
slave.cnf: |
[client]
socket = /data/mysqldata/3306/tmp/mysql.sock
default-character-set = utf8mb4
[mysqld]
skip_ssl
skip-name-resolve
port = 3306
character-set-server = utf8mb4
server-id = 79
gtid_mode = ON
enforce_gtid_consistency= ON
relay-log = /data/mysqldata/3306/binlog/relay-log-bin
innodb_buffer_pool_size = 42G
innodb_log_buffer_size = 64M
innodb_log_file_size = 2G
innodb_read_io_threads = 12
innodb_write_io_threads = 12
sort_buffer_size = 16M
socket = /data/mysqldata/3306/tmp/mysql.sock
basedir = /usr/lib/mysql
plugin_dir = /usr/lib64/mysql/plugin
datadir = /data/mysqldata/3306/data
tmpdir = /data/mysqldata/3306/tmp
log-error = /data/mysqldata/3306/logs/mysql-3306.log
pid-file = /data/mysqldata/3306/tmp/mysql-3306.pid
slow_query_log_file = /data/mysqldata/3306/logs/slow.log
open_files_limit = 65535
thread_cache_size = 300
max_connections = 2000
max_connect_errors = 100000
interactive_timeout = 2400
wait_timeout = 2400
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-init-sql
namespace: mysql
data:
init-master.sql: |
CREATE USER IF NOT EXISTS 'repl'@'%' IDENTIFIED WITH mysql_native_password BY '****';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
init-slave.sql: |
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='repl',
MASTER_PASSWORD='***',
MASTER_AUTO_POSITION=1;
START SLAVE;
svc部署无头服务
cat mysql_pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-master-pvc
namespace: mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
volumeName: mysql-master-pv
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-slave-pvc
namespace: mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
volumeName: mysql-slave-pv
pv卷部署
cat mysql_pv.yaml
kind: PersistentVolume
metadata:
name: mysql-slave-pv
namespace: mysql
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
hostPath:
path: /data/mysql-slave
type: DirectoryOrCreate
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- slave02
主节点与从节点部署
cat mysql_master.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql-master
namespace: mysql
spec:
serviceName: mysql-master
replicas: 1
selector:
matchLabels:
app: mysql-master
template:
metadata:
labels:
app: mysql-master
spec:
initContainers:
- name: init-dirs
image: busybox
command:
- sh
- -c
- |
mkdir -p /data/mysqldata/3306/data &&
mkdir -p /data/mysqldata/3306/tmp &&
mkdir -p /data/mysqldata/3306/logs &&
mkdir -p /data/mysqldata/3306/binlog &&
mkdir -p /application/mysql &&
chown -R 999:999 /data/mysqldata &&
chmod -R 775 /data/mysqldata &&
ls -la /data/mysqldata/3306
securityContext:
runAsUser: 0
volumeMounts:
- name: data
mountPath: /data/mysqldata
containers:
- name: mysql
image: mysql:8.0
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "2002"
volumeMounts:
- name: data
mountPath: /data/mysqldata
- name: config
mountPath: /etc/my.cnf
subPath: master.cnf
- name: mysql-init
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: config
configMap:
name: mysql-config
items:
- key: master.cnf
path: master.cnf
- name: data
persistentVolumeClaim:
claimName: mysql-master-pvc
- name: mysql-init
configMap:
name: mysql-init-sql
items:
- key: init-master.sql
path: init-master.sql
---
apiVersion: v1
kind: Service
metadata:
name: mysql-master
namespace: mysql
spec:
clusterIP: None
selector:
app: mysql-master
ports:
- port: 3306
targetPort: 3306
---
cat mysql_slave.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql-slave
namespace: mysql
spec:
serviceName: mysql-slave
replicas: 1
selector:
matchLabels:
app: mysql-slave
template:
metadata:
labels:
app: mysql-slave
spec:
initContainers:
- name: init-dirs
image: busybox
command:
- sh
- -c
- |
mkdir -p /data/mysqldata/3306/data &&
mkdir -p /data/mysqldata/3306/tmp &&
mkdir -p /data/mysqldata/3306/logs &&
mkdir -p /data/mysqldata/3306/binlog &&
mkdir -p /application/mysql &&
chown -R 999:999 /data/mysqldata &&
chmod -R 775 /data/mysqldata &&
ls -la /data/mysqldata/3306
securityContext:
runAsUser: 0
volumeMounts:
- name: data
mountPath: /data/mysqldata
containers:
- name: mysql
image: mysql:8.0
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "2002"
volumeMounts:
- name: data
mountPath: /data/mysqldata
- name: config
mountPath: /etc/my.cnf
subPath: slave.cnf
- name: mysql-init
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: config
configMap:
name: mysql-config
items:
- key: slave.cnf
path: slave.cnf
- name: data
persistentVolumeClaim:
claimName: mysql-slave-pvc
- name: mysql-init
configMap:
name: mysql-init-sql
items:
- key: init-slave.sql
path: init-slave.sql
---
apiVersion: v1
kind: Service
metadata:
name: mysql-slave
namespace: mysql
spec:
clusterIP: None
selector:
app: mysql-slave
ports:
- port: 3306
targetPort: 3306
4325

被折叠的 条评论
为什么被折叠?



