docker mysql 群集_docker 下 mysql 集群的搭建

下载程序&&创建docker容器

从mysql官网https://dev.mysql.com/downloads/cluster/上下载mysql集群库mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz。

将mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz 上传到linux。

使用 gunzip 命令解压

gunzip mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz

87b597480bc9e141791a29d7d71d0dc1.png

创建容器:

docker images 命令查看可用镜像:

78f0699b44c07234ff54bcd3539c9a4b.png

创建有目录映射的容器:

docker run --name mysql_test  -v /share:/home/kong/kong -it unbuntu_update_01:18.04  /bin/bash

9f3dc7af4ffd465ff25d0a879e3dccb0.png

附开始:

cd ~

vim http_prox.profile

加入如下文字:

export http_proxy=http://172.16.0.20:3128

export https_proxy=https://172.16.0.20:3128

b797d4f0e9d5af0cfb4b55b225686b66.png

source http_prox.profile

wget http://www.baidu.com

如下图,说明代理成功

f5dde9741466f53c657fe4783f32d460.png

附结束:

执行以下命令解压压缩包并且重命名:

mkdir -p /usr/local/mysql

cd /home/kong/kong/

cp mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar /usr/local/mysql/

cd /usr/local/mysql/

tar -xvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar

mv  mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64  mysql_7.5.10

设置环境变量:

vim /etc/profile

6cc85e9b28fcec80cbe8f9e8d4f7f780.png

查看缺少的库文件:

8c89c698a3a8d167fbd46a79e08da6f3.png

安装库:

centos:

yum install  libaio-devel.x86_64

ubuntu:

apt-get install libaio1 libaio-dev

或者从已有的系统中,拷贝动态库过来,自己建立软连接

b4726803472093277f184973318d3a96.png

ln -s 源文件 目标文件。

ce5a42adfb19322d5dfd51a6861b6ab9.png

19143e5ddef2fd0d35281917be441475.png

如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了.

ubuntu的就sudo apt-get install numactl就可以解决这个问题了

自己拷贝动态库的方法同①

动态库不再缺少:

dbb50ae78b337446e5e27b3c2af2aefa.png

mysql 文件配置:

①配置管理结点:

mkdir /var/lib/mysql-cluster && vim config.ini

[ndbd default]

NoOfReplicas=2

#linux机器的内存尽量大点,DataMemory设置为4096M,IndexMemory 设置为800M

DataMemory=1024M  #当成的设置,单机,3个docker容器,使用内存9.7G

IndexMemory=400M

#BackupMemory = 64M

MaxNoOfTables = 1024

MaxNoOfAttributes = 5000000

MaxNoOfOrderedIndexes = 10000

[ndb_mgmd]

NodeId=1

hostname=172.17.0.2

datadir=/var/lib/mysql-cluster

[ndbd]

NodeId=2

hostname=172.17.0.3

#hostname=172.17.0.2

datadir=/usr/local/mysql/mysql_7.5.10/data

[ndbd]

NodeId=3

hostname=172.17.0.4

datadir=/usr/local/mysql/mysql_7.5.10/data

[mysqld]

NodeId=4

hostname=172.17.0.3

#hostname=172.17.0.2

[mysqld]

NodeId=5

hostname=172.17.0.4

②配置数据结点:

vim /etc/my.cnf.data

[mysqld]

ndbcluster

basedir=/usr/local/mysql/mysql_7.5.10

datadir=/usr/local/mysql/mysql_7.5.10/data

socket=/usr/local/mysql/mysql_7.5.10/sock/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=172.17.0.2

③ 配置SQL结点

vim /etc/my.cnf.data

[client]

socket=/usr/local/mysql/mysql_7.5.10/client_sock/mysql.sock

[mysqld]

skip-name-resolve

ndbcluster

basedir=/usr/local/mysql/mysql_7.5.10

datadir=/usr/local/mysql/mysql_7.5.10/client_data

default-storage-engine=ndbcluster

socket=/usr/local/mysql/mysql_7.5.10/client_sock/mysql.sock

ndb-connectstring=172.17.0.2

user=mysql

[mysql_cluster]

ndb-connectstring=172.17.0.2

附开始:

navicat 连接docker 中的mysql出错:2013-Lost connection to MYSQL server at 'waiting for initial communication packet',system error:0

修改mysql配置文件

vi /etc/my.cnf

[mysqld]

#加上下面的代码,注意下面的这个代码最好是加在[mysqld]这段的第一行。因为,我第一次加到最后一行。结果mysqld服务启动不了。

skip-name-resolve

参考网站:

附结束:

初始化【该步骤可以在各个容器中分别去做】:

1. 添加mysql组和用户

在shell中运行以下命令:

groupadd mysql

useradd -g mysql mysql

2. 初始化数据节点:

①  创建文件夹

mkdir data sock

mkdir client_data   client_sock

② 初始化data节点数据:

cp /etc/my.cnf.data /etc/my.cnf

mysqld --initialize

③ 初始化mysql节点数据:

cp /etc/my.cnf.mysql  /etc/my.cnf

mysqld --initialize-insecure :自动生成无密码的root用户(mysqld --initialize : 是自动生成随机密码用户)

mysqld --initialize       #这个地方会显示mysql的初始密码,如下图:

13b68d876fa144feade12ee2999f8d8e.png

④ 修改目录属性

cd /usr/local/mysql/mysql_7.5.10

chown -R root .

chown -R mysql.mysql data/ sock/ client_data/ client_sock/

chgrp -R mysql .

制作镜像:

删除以上步骤命令生成的文件,部分步骤是测试用的,生成容器后再执行。

docker commit    容器id      mysql_base:v3

df09c8b7b4d6a19379ab761359a7148a.png

生成容器测试:

①  启动管理节点:

修改完配置文件,启动节点,一定要加上--reload 不然新配置的config.ini文件不会生效,用的还是缓存冲老的config.ini

/usr/local/mysql/mysql_7.5.10/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload

查看集群各节点的使用情况:

ndb_mgm> all report memory

fc1c4b8f282b9447d57062b8844a9fab.png

② 启动数据节点 与 sql 节点【集群的数据节点与sql节点放在同一个容器中】

另外两个容器执行一下过程。注意,最后/etc/my.cnf 是/etc/my.cnf.mysql 拷贝过来的,因为 [client] 域在这个文件中,当然也可以在/etc/my.cnf.data文件中追加该选项。

4b83b6198edc74c1ed22e8aae073661c.png

登录成功后修改密码

mysql>SET PASSWORD = PASSWORD('你的密码');

例如: 你想myuser使用mypassword(密码)从任何主机连接到mysql服务器的话。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY

'mypassword' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

使修改生效,就可以了

启动集群效果如下:

2b9db387b198e6b5c8caf2bb307e0a6b.png

使用Navicat连接,创建数据库,看同步效果:

0e7329ca43e05bd433c3b1ae440b5d77.png

扩展阅读

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值