summaryrefslogtreecommitdiffstats
path: root/setup/projects/adei/vars/mysql.yml
blob: 9b17fd7629b8eff7b59dc7d7c21e510b418473f1 (plain)
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,1062,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" ] }