下载程序&&创建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

创建容器:

docker images 命令查看可用镜像:

创建有目录映射的容器:

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

附开始:

cd ~

vim http_prox.profile

加入如下文字:

export http_proxy=http://172.16.0.20:3128
export https_proxy=https://172.16.0.20:3128

source http_prox.profile

wget http://www.baidu.com

如下图,说明代理成功

附结束:

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

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

查看缺少的库文件:

安装库:

centos:

  yum install  libaio-devel.x86_64

ubuntu:

apt-get install libaio1 libaio-dev
或者从已有的系统中,拷贝动态库过来,自己建立软连接

ln -s 源文件 目标文件。

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

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

动态库不再缺少:

 mysql 文件配置:

①配置管理结点:

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

[ndbd default]

NoOfReplicas=2

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

#参考网站:https://blog.csdn.net/chenxingzhen001/article/details/7592021

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
 
参考网站:

https://blog.csdn.net/hwhua1986/article/details/78188231

附结束:

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

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的初始密码,如下图:

④ 修改目录属性

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

 生成容器测试:

①  启动管理节点:

修改完配置文件,启动节点,一定要加上--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

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

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

登录成功后修改密码

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

修改权限:【参考https://www.cnblogs.com/skyWings/p/5952795.html

例如: 你想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;

  使修改生效,就可以了

启动集群效果如下:

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

参考文章:https://www.cnblogs.com/wangfg/p/7815734.html

https://www.cnblogs.com/skyWings/p/5952795.html

扩展阅读

mysql集群——(三)多管理节点

docker 下 mysql 集群的搭建的更多相关文章

  1. Centos7环境下etcd集群的搭建

    Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...

  2. linux环境(CentOS-6.7)下redis集群的搭建全过程

    linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...

  3. centos下mysql集群初尝试

    原文:http://www.lvtao.net/database/mysql-cluster.html 五台服务器篇 安装要求 安装环境:CentOS-6.3安装方式:源码编译安装软件名称:mysql ...

  4. Linux环境下SolrCloud集群环境搭建关键步骤

    Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...

  5. Linux环境下HDFS集群环境搭建关键步骤

    Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...

  6. Linux环境下ZooKeeper集群环境搭建关键步骤

    ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...

  7. Docker部署Mysql集群

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...

  8. MySQL集群-PXC搭建以及使用innobackupex工具进行全局备份和增量备份

    环境:centos7 vm1:10.154.47.236 vm2:10.154.52.189 vm3:10.105.12.50 目的:pxc使用三个节点构建mysql集群,使用innobackupex ...

  9. MYSQL集群的搭建

    按照此配置完全可以配置成功!! 一.介绍========测试环境:Server1:ndbd 192.168.1.225Server2:ndbd 192.168.1.226Server3:mysqld ...

随机推荐

  1. 登录MySQL提示ERROR 1045 (28000)错误解决方法

    今天,登录服务器准备修改数据库的一些东西.但输入密码,却进不了数据库并提示一个错误,如下图 再确认密码没错的情况下,还是进不了数据库.便在网上找到了解决方法,记录下来,供参考学习. 解决方法: 总体思 ...

  2. HBase RegionServer宕机处理恢复

    本文分析RegionServer宕机后这个region server上的region是如何在其他region server上恢复的. region server宕机后发生了什么   HMaster有一 ...

  3. [微信] 客服接口调用的时候返回 40003 Invalid OpenID

    首先确认收件人在24小时内主动向公众号发过消息.该消息的 FromUserId 即是客服消息的 touser 参数的 OpenId 2017-05-19 更新:可以使用UTF-8了 string ur ...

  4. 使用UISearchDisplayController

    使用UISearchDisplayController 虽然UISearchDisplayController名字中带有controller,可他不是一个UIView相关的controller,因为, ...

  5. mysql宕机,导致innodb_force_recovery恢复不了

    https://serverfault.com/questions/698038/mysql-innodb-recovery-from-datafiles https://serverfault.co ...

  6. Linux 系统的网络配置文件

    系统的网络配置文件 方式一: 界面操作 setup -->界面配置网络,网关等 方式二: 修改配置文件 # 修改配置 vim /etc/sysconfig/network-scripts/ifc ...

  7. Js 运算符(加减乘除)

    1.加法 + +NaN //NaN,有一个为NaN就为NaN var box=Infinity+Infinity //Infinity var box=-Infinity + -Infinity // ...

  8. Numpy 的常用操作

    1.创建数组array # 创建数组array import numpy as np a = np.array([1,2,3]) #创建数组 b = np.array([(1.5,2,3), (4,5 ...

  9. iOS: 聊聊 Designated Initializer(指定初始化函数):NS_DESIGNATED_INITIALIZER

    总结:指定函数的调用规则: 初始化函数的调用顺序与初始化顺序相反. 上面关于指定初始化的规则讲了那么多,其实可以归纳为两点: 便利初始化函数只能调用自己类中的其他初始化方法 指定初始化函数才有资格调用 ...

  10. Loj #2256. 「SNOI2017」英雄联盟

    题目 我就是个丝薄 如果要用\(dp_i\)表示凑出\(i\)的最小花费显然不可能的 之后大力猜想能凑出来的状态不会很多,我的暴力也告诉我不是很多,好像也确实不多的样子,大概\(4e4\)左右 但是我 ...