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

创建容器:
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配置文件
[mysqld]
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
扩展阅读
docker 下 mysql 集群的搭建的更多相关文章
- Centos7环境下etcd集群的搭建
Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...
- linux环境(CentOS-6.7)下redis集群的搭建全过程
linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...
- centos下mysql集群初尝试
原文:http://www.lvtao.net/database/mysql-cluster.html 五台服务器篇 安装要求 安装环境:CentOS-6.3安装方式:源码编译安装软件名称:mysql ...
- Linux环境下SolrCloud集群环境搭建关键步骤
Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...
- Linux环境下HDFS集群环境搭建关键步骤
Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...
- Linux环境下ZooKeeper集群环境搭建关键步骤
ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...
- Docker部署Mysql集群
单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...
- MySQL集群-PXC搭建以及使用innobackupex工具进行全局备份和增量备份
环境:centos7 vm1:10.154.47.236 vm2:10.154.52.189 vm3:10.105.12.50 目的:pxc使用三个节点构建mysql集群,使用innobackupex ...
- MYSQL集群的搭建
按照此配置完全可以配置成功!! 一.介绍========测试环境:Server1:ndbd 192.168.1.225Server2:ndbd 192.168.1.226Server3:mysqld ...
随机推荐
- Pig limit用法举例
lmt = limit data 10; 只获取指定条数的数据,不能保证每次得到的结果一致,先执行order再limit可以保证一致. 输入数据全部载入. 会触发reduce阶段 a ...
- java基础(九) 可变参数列表介绍
一.可变参数简介 在不确定参数的个数时,可以使用可变的参数列表. 1. 语法: 参数类型...(三个点) 例如: void printArray(Object...) 注意: 每个方法最多只有一个可变 ...
- ExpressRoute 合作伙伴和对等位置
本文中的表格提供有关 ExpressRoute 连接提供商.ExpressRoute 地理覆盖范围.通过 ExpressRoute 支持的 Azure 服务以及 ExpressRoute 系统集成商 ...
- Linux wget安装详解
Wget是一个十分常用命令行下载工具,多数Linux发行版本都默认包含这个工具.如果没有安装可在 http://www.gnu.org/software/wget/wget.html下载最新版本,并使 ...
- Oracle EBS 锁
这里仅提供查询锁和解锁.有时,锁是正常的,所以杀掉正锁着的进程有一定的风险性. 具体步骤如下: -- 1.0 查看 holder的进程 , 'Holder: ', 'Waiter: ') || sid ...
- Vue2学习笔记:组件(Component)
组件 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...
- Inter-System Differencing between GPS and BDS for Medium-Baseline RTK Positioning-12-18
顾及系统间偏差的双系统中长基线RTK定位 主要适用于:严峻地区,比如城市峡谷和被高大树木遮挡. 伪距码系统间偏差可以通过先验标定进行改正或者参数化.已知先验载波系统间偏差,那么两个系统重叠频率的模糊度 ...
- #003 React 组件 继承 自定义的组件
主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属 ...
- 【Anisble 文档】【译文】测试策略
最近在琢磨 ansible,想使用这个搞一个自动发布部署系统,google以下发现了中文文档,但是里面很多感觉不专业,念都念不顺.看英文版又费劲,只能啃完中文啃英文. 本篇是译文第一篇,后续持续维护. ...
- Paxos算法简单陈述
上文二段式和三段式提交协议是相对比较容易理解的.1990年Leslie Lamport 提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法.但是Paxos算法比较复杂,对于不能沉心学 ...