在docker中部署mysql-cluster

    一直想部署个数据库集群,原来一直折腾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





可以使用Docker部署MySQL集群。以下是一个基本的步骤: 1. 安装Docker:首先,确保在你的机器上安装了Docker。你可以从官方网站下载并按照指南进行安装。 2. 创建Docker网络:为了让容器之间能够相互通信,我们需要创建一个自定义的Docker网络。使用以下命令创建一个网络: ``` docker network create mysql_cluster ``` 3. 创建MySQL容器:使用以下命令创建MySQL容器并将其连接到之前创建的网络: ``` docker run -d --name=mysql1 --network=mysql_cluster -e MYSQL_ROOT_PASSWORD=your_password mysql:latest docker run -d --name=mysql2 --network=mysql_cluster -e MYSQL_ROOT_PASSWORD=your_password mysql:latest docker run -d --name=mysql3 --network=mysql_cluster -e MYSQL_ROOT_PASSWORD=your_password mysql:latest ``` 这将创建三个具有相同密码的MySQL容器,并将它们连接到`mysql_cluster`网络。 4. 配置MySQL主从复制:为了创建MySQL集群,我们需要设置主从复制。首先,进入其一个MySQL容器: ``` docker exec -it mysql1 bash ``` 然后,在MySQL命令行执行以下命令: ``` mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%' IDENTIFIED BY 'replica_password'; FLUSH PRIVILEGES; SHOW MASTER STATUS; ``` 记下`File`和`Position`值,稍后将在其他节点上使用。 5. 配置其他节点:进入其他两个MySQL容器,执行以下命令: ``` docker exec -it mysql2 bash docker exec -it mysql3 bash ``` 在MySQL命令行,使用以下命令配置从节点: ``` mysql -u root -p CHANGE MASTER TO MASTER_HOST='mysql1', MASTER_USER='replica_user', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值