kubectl mysql 集群_转载 k8s-部署mysql集群

apiVersion: apps/v1

kind: StatefulSet

metadata:

name: mysqlnamespace: mt-math

spec:

selector:

matchLabels:

app: mysql

serviceName: mysql

replicas:2template:

metadata:namespace: mt-math

labels:

app: mysql

spec:

initContainers:- name: init-mysql

image: mysql:5.7command:-bash- "-c"

- |

set -ex

# Generate mysql server-id frompod ordinal index.

[[ `hostname`=~ -([0-9]+)$ ]] || exit 1ordinal=${BASH_REMATCH[1]}

echo [mysqld]> /mnt/conf.d/server-id.cnf

# Add an offset to avoid reserved server-id=0value.

echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf

# Copy appropriate conf.d filesfrom config-map to emptyDir.if [[ $ordinal -eq 0]]; then

cp/mnt/config-map/master.cnf /mnt/conf.d/

elsecp/mnt/config-map/slave.cnf /mnt/conf.d/fi

volumeMounts:-name: conf

mountPath:/mnt/conf.d- name: config-map

mountPath:/mnt/config-map- name: clone-mysql

image: twoeo/gcr.io-google-samples-xtrabackup

command:-bash- "-c"

- |

set -ex

# Skip the cloneifdata already exists.

[[-d /var/lib/mysql/mysql ]] && exit 0# Skip the clone on master (ordinal index0).

[[ `hostname`=~ -([0-9]+)$ ]] || exit 1ordinal=${BASH_REMATCH[1]}

[[ $ordinal-eq 0 ]] && exit 0# Clone datafromprevious peer.

ncat--recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql

# Prepare the backup.

xtrabackup--prepare --target-dir=/var/lib/mysql

volumeMounts:-name: data

mountPath:/var/lib/mysql

subPath: mysql-name: conf

mountPath:/etc/mysql/conf.d

containers:-name: mysql

image: mysql:5.7env:-name: MYSQL_ALLOW_EMPTY_PASSWORD

value:"1"ports:-name: mysql

containerPort:3306volumeMounts:-name: data

mountPath:/var/lib/mysql

subPath: mysql-name: conf

mountPath:/etc/mysql/conf.d

resources:

requests:

cpu: 500m

memory: 1Gi

livenessProbe:

exec:

command: ["mysqladmin", "ping"]

initialDelaySeconds:30periodSeconds:10timeoutSeconds:5readinessProbe:

exec:

# Check we can execute queries over TCP (skip-networking isoff).

command: ["mysql", "-h", "127.0.0.1", "-e", "SELECT 1"]

initialDelaySeconds:5periodSeconds:2timeoutSeconds:1

-name: xtrabackup

image: twoeo/gcr.io-google-samples-xtrabackup

ports:-name: xtrabackup

containerPort:3307command:-bash- "-c"

- |

set -ex

cd/var/lib/mysql

# Determine binlog position of cloned data,ifany.if [[ -f xtrabackup_slave_info ]]; then

# XtraBackup already generated apartial "CHANGE MASTER TO"query

# because we're cloning from an existing slave.

mv xtrabackup_slave_info change_master_to.sql.in# Ignore xtrabackup_binlog_infoin this case (it's useless).

rm -f xtrabackup_binlog_info

elif [[-f xtrabackup_binlog_info ]]; then

# We're cloning directly from master. Parse binlog position.

[[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1rm xtrabackup_binlog_info

echo"CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\

MASTER_LOG_POS=${BASH_REMATCH[2]}"> change_master_to.sql.in

fi

# Checkifwe need to complete a clone by starting replication.if [[ -f change_master_to.sql.in]]; then

echo"Waiting for mysqld to be ready (accepting connections)"until mysql-h 127.0.0.1 -e "SELECT 1"; do sleep 1; done

echo"Initializing replication from clone position"# Incase of container restart, attempt this at-most-once.

mv change_master_to.sql.inchange_master_to.sql.orig

mysql-h 127.0.0.1 <

$(

MASTER_HOST='mysql-0.mysql',

MASTER_USER='root',

MASTER_PASSWORD='',

MASTER_CONNECT_RETRY=10;

START SLAVE;

EOF

fi

# Start a server to send backups when requested by peers.

exec ncat--listen --keep-open --send-only --max-conns=1 3307 -c \"xtrabackup --backup --slave-info --stream=xbstream --host=127.0.0.1 --user=root"volumeMounts:-name: data

mountPath:/var/lib/mysql

subPath: mysql-name: conf

mountPath:/etc/mysql/conf.d

resources:

requests:

cpu: 100m

memory: 100Mi

volumes:-name: conf

emptyDir: {}- name: config-map

configMap:

name: mysql

volumeClaimTemplates:-metadata:

name: datanamespace: mt-math

spec:

accessModes: ["ReadWriteOnce"]

resources:

requests:

storage: 5Gi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值