一直想部署个数据库集群,原来一直折腾oracle可却没有成功,花了两天终于把mysql折腾成功啦;准备一台centos电脑和mysql-cluster程序包,下面我们开始吧。

第一步我们先安装docker程序,这一步就省略了:

[root@localhost ~]# docker -v
Docker version 1.12.6, build 1398f24/1.12.6
[root@localhost ~]#

第二步安装centos镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql-node          latest              d652cc0c3896        10 hours ago        3.878 GB
mysql-manager       latest              f2f3af5fbef5        10 hours ago        220.3 MB
docker.io/centos    latest              3bee3060bfc8        3 weeks ago         192.5 MB
[root@localhost ~]#

第三步我们准备网路环境

Docker守护进程启动以后会创建默认网桥docker0,其IP网段通常为172.17.0.1。在启动Container的时候,Docker将从这个网段自动分配一个IP地址作为容器的IP地址。最新版(1.10.3)的Docker内嵌支持在启动容器的时候为其指定静态的IP地址。

docker network create --subnet=172.18.0.0/16 shadownet

注:shadown为自定义网桥的名字,可自己任意取名。

第四步安装管理节点,运行docker并挂载mysql-cluster文件

docker run -itd --net shadownet --privileged=true  --ip 172.18.0.10 -v /document:/usr/Downloads centos /bin/bash

注:挂载的本地目录在容器中没有执行权限时,需要--privileged=true参数

cd /usr/Downloads

tar xvf mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz

cp bin/ndb_mgm* /usr/local/bin

cd /usr/local/bin

chmod +x ndb_mgm*

mkdir /var/lib/mysql-cluster

mkdir /usr/local/mysql

vi /var/lib/mysql-cluster/config.ini

配置内容如下,根据具体情况修改

[ndbd default]
NoOfReplicas=2
DataMemory=256M
IndexMemory=512M


[ndb_mgmd]
nodeid=1
HostName=172.18.0.10
DataDir=/var/lib/mysql-cluster


[ndb_mgmd]
nodeid=2
HostName=172.18.0.11
DataDir=/var/lib/mysql-cluster


[ndbd]
nodeid=21
HostName=172.18.0.12
DataDir=/var/lib/mysql-cluster


[ndbd]
nodeid=22
HostName=172.18.0.13
DataDir=/var/lib/mysql-cluster


[mysqld]
nodeid=31
HostName=172.18.0.12

port=3306


[mysqld]
nodeid=32
HostName=172.18.0.13

port=3307

初始化管理节点

[root@49cd9c30713b /]#  /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.7.18 ndb-7.5.6

注:保存docker镜像,启动作为第二个管理节点,初始化管理节点

docker commit mysql-manager

第五步安装数据节点和sql节点

新增用户组mysql和用户msyql

# groupadd mysql

# useradd -g mysql -s /bin/false mysql

新建文件夹并赋予权限

# mkdir /var/lib/mysql-cluster

# chown root:mysql /var/lib/mysql-cluster

docker run -itd --net shadownet --privileged=true  --ip 172.18.0.12 -v /document:/usr/Downloads centos /bin/bash

cd /usr/Donloads

mv mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64 /usr/local/mysql

cd /usr/local/mysql/bin/

./mysqld --initialize

生成临时密码: “o,Z2el6stDh”,这个密码待会要用到。

简单使用Mysql-Cluster-7.5搭建数据库集群

cd ..  

chown -R root .

chown -R mysql data

chgrp -R mysql .

cp support-files/mysql.server /etc/rc.d/init.d/

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

vi /etc/my.cnf

配置内容如下

[mysqld]
ndbcluster
ndb-connectstring=172.18.0.10,172.18.0.11

port=3306


[mysql_cluster]
ndb-connectstring=172.18.0.10,172.18.0.11


初始化数据节点

/usr/local/mysql/bin/ndbd --initial

2017-07-01 03:33:30 [ndbd] INFO     -- Angel connected to '172.18.0.10:1186'
2017-07-01 03:33:30 [ndbd] INFO     -- Angel allocated nodeid: 22
启动sql节点

/etc/init.d/mysql.server start

注:保存并重用, docker commit mysql-node

第六步集群状态

回到172.18.0.10节点的docker

cd /usr/local/bin/

ndb_mgm

ndb_mgm> show

Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=21    @172.18.0.12  (mysql-5.7.18 ndb-7.5.6, Nodegroup: 0, *)
id=22    @172.18.0.13  (mysql-5.7.18 ndb-7.5.6, Nodegroup: 0)

[ndb_mgmd(MGM)]    2 node(s)
id=1    @172.18.0.10  (mysql-5.7.18 ndb-7.5.6)
id=2    @172.18.0.11  (mysql-5.7.18 ndb-7.5.6)

[mysqld(API)]    2 node(s)
id=31    @172.18.0.12  (mysql-5.7.18 ndb-7.5.6)
id=32    @172.18.0.13  (mysql-5.7.18 ndb-7.5.6)

回到172.18.0.12数据节点的docker

修改mysql密码统一,修改mysql的访问权限

cd /usr/local/mysql/

bin/mysql --user=root -p

输入第五步中保存的临时密码

mysql> set password=password('root');

mysql>grant all privileges on *.* to root@'%' identified by 'root';

到此mysql-cluster集群安装结束

再次启动mysql集群时,启动顺序为:管理节点→数据节点→SQL节点。

启动的命令上面都有,删去--initial即可

关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可

管理节点关闭命令:ndb_mgm -e shutdown


问题

集群是安装成功了,程序中怎么访问以后再验证,下一步准备安装redis集群


引用

http://www.infocool.net/kb/Mysql/201704/336991.html





Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐