mysql集群迁移到swarm(二代)

11 篇文章 0 订阅
3 篇文章 0 订阅

一、实验环境

1.ubuntu14.04虚拟机

2.docker-1.12.3

3、搭建本地私有registry(参考我以前博客)

4。虚拟机ip分别是192.168.110.155(manager节点)和192.168.110.147(worker节点)

二、实验步骤

1、下载mysqcluster安装包(mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz)

2、相关配置文件

(1)config.ini,文件内容如下

[NDBD DEFAULT]    
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[NDB_MGMD]                      
hostname=mysql-m
datadir=/var/lib/mysql-cluster

[NDBD]                          
hostname=mysql-d1
datadir=/usr/local/mysql/data/

[NDBD]                          
hostname=mysql-d2
datadir=/usr/local/mysql/data/


[MYSQLD]                        
hostname=mysql-s

其中mysql-m是管控节点的service name

mysql-d1是数据节点1的service name

mysql-d2是数据节点2的service name

mysql-s是sql节点的servie name

(2)my.cnf文件,文件内容如下

# Options for mysqld process:
[MYSQLD]                        
ndbcluster                          # run NDB engine
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=mysql-m       # location of MGM node

# Options for ndbd process:
[MYSQL_CLUSTER]                 
ndb-connectstring=mysql-m       # location of MGM node

(3)run.sh 文件内容如下

#!/bin/bash

# Parameter values for $1:
# ndb_mgm:  console client (default)
# ndbd:     data node
# ndb_mgmd: manager node
# mysqld:   sql node

# Parameter value for $2 (optionally):
# The ndb_mgmd ip/hostname

MYSQL_CLUSTER_BIN=${MYSQL_CLUSTER_HOME}/bin
MYSQL_MANAGEMENT_SERVER=$2
MYSQL_MANAGEMENT_PORT=1186

INITIAL=""
RELOAD="--reload"
if [ ! -e ${MYSQL_CLUSTER_DATA}/.initial ]; then
    echo "First execution detected. Using --initial parameter."
    INITIAL="--initial"
    RELOAD=""
    touch ${MYSQL_CLUSTER_DATA}/.initial
else
    echo "Pre-initialized installation detected. Using --reload parameter."
fi

echo "Using management server ${MYSQL_MANAGEMENT_SERVER}"

if [ $1 == "ndbd" ]; then
    echo "Starting ndbd..."
    exec ${MYSQL_CLUSTER_BIN}/ndbd --nodaemon ${INITIAL} --connect-string="host=${MYSQL_MANAGEMENT_SERVER}:${MYSQL_MANAGEMENT_PORT}"
elif [ $1 == "ndb_mgmd" ]; then
    echo "Starting ndb_mgmd..."
    exec ${MYSQL_CLUSTER_BIN}/ndb_mgmd --nodaemon ${RELOAD} ${INITIAL} -f ${MYSQL_CLUSTER_CONFIG}
elif [ $1 == "mysqld" ]; then
    echo "Starting mysqld_safe..."
    exec ${MYSQL_CLUSTER_BIN}/mysqld_safe --ndbcluster --ledir=${MYSQL_CLUSTER_BIN} --ndb-connectstring=${MYSQL_MANAGEMENT_SERVER}
else
    echo "Starting ndb_mgm..."
    exec ${MYSQL_CLUSTER_BIN}/ndb_mgm ${MYSQL_MANAGEMENT_SERVER}
fi
(4)Dockerfile文件,文件内容如下

FROM debian:wheezy

MAINTAINER Henrik Sachse <t3x7m3@posteo.de>


####################################################
# User and group setup
####################################################
ENV MYSQL_USER mysql
ENV MYSQL_GROUP mysql

RUN groupadd mysql && useradd -g mysql mysql


####################################################
# Installation
####################################################
ENV MYSQL_CLUSTER_VERSION 7.4
ENV MYSQL_CLUSTER_MICRO_VERSION 12
ENV MYSQL_CLUSTER_ARCH x86_64

ENV MYSQL_CLUSTER_ARCHIVE_NAME mysql-cluster-gpl-${MYSQL_CLUSTER_VERSION}.${MYSQL_CLUSTER_MICRO_VERSION}-linux-glibc2.5-${MYSQL_CLUSTER_ARCH}
ENV MYSQL_CLUSTER_ARCHIVE ${MYSQL_CLUSTER_ARCHIVE_NAME}.tar.gz

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
    && apt-get update \
    && apt-get install -y perl-modules libaio1 curl

ENV MYSQL_CLUSTER_HOME /usr/local/mysql
ENV MYSQL_CLUSTER_DATA ${MYSQL_CLUSTER_HOME}/data
ENV MYSQL_CLUSTER_LOG /var/lib/mysql-cluster
ENV MYSQL_CLUSTER_CONFIG /etc/mysql-cluster.ini

COPY mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz /var/tmp

RUN cd /var/tmp \
    && mkdir -p ${MYSQL_CLUSTER_HOME} \
    && mkdir -p ${MYSQL_CLUSTER_CONFIG} \
    && mkdir -p /usr/local/mysql/sock \
    && tar --strip 1 -C ${MYSQL_CLUSTER_HOME} -xzvf ${MYSQL_CLUSTER_ARCHIVE} \
    && rm -v ${MYSQL_CLUSTER_ARCHIVE} \
    && mkdir -p ${MYSQL_CLUSTER_DATA} \
    && chown -R root ${MYSQL_CLUSTER_HOME} \
    && chown -R ${MYSQL_USER} ${MYSQL_CLUSTER_DATA} \
    && chown -R mysql.mysql /usr/local/mysql/sock \
    && chgrp -R ${MYSQL_GROUP} ${MYSQL_CLUSTER_HOME}

RUN cd ${MYSQL_CLUSTER_HOME} \
    && ./scripts/mysql_install_db --user=${MYSQL_USER} --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

VOLUME ${MYSQL_CLUSTER_LOG}
VOLUME ${MYSQL_CLUSTER_DATA}


####################################################
# Configuration
####################################################
ADD my.cnf /etc/my.cnf
ADD config.ini ${MYSQL_CLUSTER_CONFIG}

EXPOSE 1186 3306


####################################################
# Startup
####################################################
ADD run.sh /run.sh
RUN chmod +x /run.sh
ENTRYPOINT ["/run.sh"]
CMD ["ndb_mgm"]

3.将Dockerfile、config.ini、my.cnf、run.sh和 mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz放在一个目录下,

然后执行如下命令,创建镜像:docker build -t dockertest1:5000/mysql-cluster .

4、相关服务启动脚本

(1)mysql-m.sh 文件内容如下

docker service create \
  --name mysql-m \
  --network mysql \
  --publish 1186:1186 \
  dockertest1:5000/mysql-cluster \
  ndb_mgmd

(2) mysql-m.sh 文件内容如下
docker service create \
  --name mysql-s \
  --network mysql \
  --publish 3306:3306 \
  dockertest1:5000/mysql-cluster \
  mysqld mysql-m
(3) mysql-d1.sh 文件内容如下
docker service create \
  --name mysql-d1 \
  --network mysql \
  dockertest1:5000/mysql-cluster \
  ndbd mysql-m

(4) mysql-d2.sh 文件内容如下

docker service create \
  --name mysql-d2 \
  --network mysql \
   dockertest1:5000/mysql-cluster \
  ndbd mysql-m

5、分别启动脚本mysql-s.sh    mysql-d1.sh   mysql-d2.sh   mysql-m.sh,注意启动的现货顺序

6、实验结果

root@dockertest1:/home/docker/xu# docker service ls
ID            NAME      REPLICAS  IMAGE                           COMMAND
a5ueuik6t9to  mysql-d1  1/1       dockertest1:5000/mysql-cluster  ndbd mysql-m
bystf4li98vb  mysql-m   1/1       dockertest1:5000/mysql-cluster  mdb_mgmd
e652wdqsozxn  mysql-s   1/1       dockertest1:5000/mysql-cluster  mysqld mysql-m
f1uo88b3j5ut  mysql-d2  1/1       dockertest1:5000/mysql-cluster  ndbd mysql-m

看见上面的结果说明实验搭建成功,接下来还需要验证集群的效果,后续文章会介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值