1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
mysql:
options:
delete: false
pods:
mysql_master:
kind: StatefulSet
sa: "adeidb"
service: { ports: [ 3306 ] }
network: { host: "{{ ands_hostnet_db | default(false) }}" }
sched: { replicas: 1, strategy: "Recreate", selector: { hostid: "3" } }
groups: [ "adei_db" ]
labels: { 'service': 'mysql' }
pvc: { 'adei_master': {} }
images:
- image: "chsa/mysql:5.7"
command: [ "run-mysqld-master" ]
env:
- { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/root-password" }
- { name: "MYSQL_USER", value: "adei" }
- { name: "MYSQL_USER_PRIV_SUPER", value: "1" }
- { name: "MYSQL_PASSWORD", value: "secret@adei/adei-password" }
- { name: "MYSQL_DATABASE", value: "adei" }
- { name: "MYSQL_EXTRADB", value: "adei_%" }
- { name: "MYSQL_MASTER_USER", value: "replication" }
- { name: "MYSQL_MASTER_PASSWORD", value: "secret@adei/service-password" }
- { name: "MYSQL_PMA_PASSWORD", value: "secret@adei/pma-password" }
- { name: "MYSQL_MAX_CONNECTIONS", value: "500" }
- { name: "MYSQL_INNODB_BUFFER_POOL_SIZE", value: "16G" }
- { name: "MYSQL_INNODB_BUFFER_POOL_INSTANCES", value: "8" }
- { name: "MYSQL_INNODB_LOG_FILE_SIZE", value: "2G" }
- { name: "MYSQL_INNODB_LOG_BUFFER_SIZE", value: "16M" }
- { name: "MYSQL_SYNC_BINLOG", value: "0" }
- { name: "MYSQL_BINLOG_SYNC_DELAY", value: "25000" }
- { name: "MYSQL_BINLOG_NODELAY_COUNT", value: "32" }
- { name: "MYSQL_INNODB_FLUSH_LOG_TYPE", value: "2" }
- { name: "MYSQL_INNODB_FLUSH_METHOD", value: "O_DIRECT" }
- { name: "MYSQL_INNODB_FLUSH_LOG_TIMEOUT", value: "300" }
- { name: "MYSQL_BINLOG_FORMAT", value: "ROW" }
# - { name: "MYSQL_BINLOG_FORMAT", value: "MIXED" }
mappings:
- { name: "adei_master", mount: "/var/lib/mysql/data" }
resources: { request: { cpu: 2000m, mem: 16Gi } }
probes:
- { type: "liveness", port: 3306 }
- { type: "readiness", command: [ /bin/sh, -i, -c, MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE -e 'SELECT 1' ], delay: "15", timeout: "5" }
mysql_slave:
kind: StatefulSet
sa: "adeidb"
service: { ports: [ 3306 ] }
network: { host: "{{ ands_hostnet_db | default(false) }}" }
sched: { replicas: 1, strategy: "Recreate", limit: { fat_storage: "1" } }
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- { key: "hostid", operator: "In", values: [ "1", "2" ] }
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
topologyKey: kubernetes.io/hostname
labelSelector:
matchExpressions:
- { key: name, operator: In, values: [ "mysql-master", "mysql-slave" ] }
groups: [ "adei_db" ]
labels: { 'service': 'mysql' }
pvc: { 'adei_slave': {} }
images:
- image: "chsa/mysql:5.7"
command: [ "run-mysqld-slave" ]
env:
- { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/root-password" }
- { name: "MYSQL_USER", value: "adei" }
- { name: "MYSQL_USER_PRIV_SUPER", value: "1" }
- { name: "MYSQL_PASSWORD", value: "secret@adei/adei-password" }
- { name: "MYSQL_DATABASE", value: "adei" }
- { name: "MYSQL_EXTRADB", value: "adei_%" }
- { name: "MYSQL_MASTER_USER", value: "replication" }
- { name: "MYSQL_MASTER_SERVICE_NAME", value: "mysql-master" }
- { name: "MYSQL_MASTER_PASSWORD", value: "secret@adei/service-password" }
- { name: "MYSQL_SUPER_READ_ONLY", value: "1" }
- { name: "MYSQL_PMA_PASSWORD", value: "secret@adei/pma-password" }
- { name: "MYSQL_MAX_CONNECTIONS", value: "500" }
- { name: "MYSQL_INNODB_BUFFER_POOL_SIZE", value: "16G" }
- { name: "MYSQL_INNODB_BUFFER_POOL_INSTANCES", value: "8" }
- { name: "MYSQL_INNODB_LOG_FILE_SIZE", value: "1G" }
- { name: "MYSQL_LOG_BIN", value: "1" }
- { name: "MYSQL_SYNC_BINLOG", value: "0" }
- { name: "MYSQL_LOG_SLAVE_UPDATES", value: "0" }
- { name: "MYSQL_BINLOG_SYNC_DELAY", value: "100000" }
- { name: "MYSQL_BINLOG_NODELAY_COUNT", value: "128" }
- { name: "MYSQL_INNODB_FLUSH_METHOD", value: "O_DIRECT" }
- { name: "MYSQL_INNODB_FLUSH_LOG_TYPE", value: "2" }
- { name: "MYSQL_INNODB_FLUSH_LOG_TIMEOUT", value: "300" }
- { name: "MYSQL_SLAVE_WORKERS", value: "16" }
- { name: "MYSQL_SLAVE_SKIP_ERRORS", value: "1007,1008,1050,1051,1054,1060,1061,1068,1094,1146,1304,1359,1476,1537" }
- { name: "MYSQL_BINLOG_FORMAT", value: "ROW" }
mappings:
- { name: "adei_slave", mount: "/var/lib/mysql/data" }
# - { name: "adei_init", mount: "/var/lib/init" }
resources: { request: { cpu: 2000m, mem: 16Gi } }
probes:
- { type: "liveness", port: 3306 }
- { type: "readiness", command: [ /bin/sh, -i, -c, test $(MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE -e 'SHOW SLAVE STATUS\G' | grep Seconds_Behind_Master | awk '{print $2}') -lt 120 ], delay: "15", timeout: "5" }
# hooks:
# - { type: "postStart", command: [ "/bin/bash", "/var/lib/init/mysql/initdb.sh" ] }
|