MySQL Cluste—分布式数据库集群搭建
一、为什么要用MySQL Cluset分布式集群?
大家可以看这两位大佬的文章:
https://blog.csdn.net/qq_15092079/article/details/82665307
https://www.cnblogs.com/jesselzj/p/5609705.html
二、环境说明
2.1 系统环境
服务器 | 角色 | 环境说明 |
---|---|---|
192.168.1.97 | 管理节点 | 系统:Ubuntu 16.04.6 |
192.168.1.99 | 数据节点 | 系统:Ubuntu 16.04.6 |
192.168.1.98 | SQL节点 | 系统:Ubuntu 16.04.4 |
192.168.1.94 | SQL节点 | 系统:Ubuntu 16.04.4 |
2.2 软件环境
mysql cluster 集群版本:mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64
可到官网下载:https://dev.mysql.com/downloads/cluster/
三、 安装MySQL Cluster
所有服务器均需执行执行以下操作
。
注意:在安装mysql cluster之前,必须得先检查该服务器上是否已安装了普通mysql,若安装了则需先把mysql删除干净,因为mysql cluster就包括了普通版mysql;
1. 删除mysql a. sudo apt-get autoremove --purge mysql-server-5.0(版本可不写5.0)b. sudo apt-get remove mysql-serverc. sudo apt-get autoremove mysql-serverd. sudo apt-get remove mysql-common (必须)2. 清理缓存数据dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
在安装管理节点、数据节点和sql节点时,最好以root用户登录执行,否则有一些步骤需要用到sudo命令来执行。
3.1、开始安装
第一步:tar -xavf mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64\ .tar.gz
第二步,解压过后:sudo mkdir /usr/local/mysql
第三步:sudo cp -r /home/xgp/python_tools/mysql-cluster-gpl-7.6.12-linux-glibc2.12-x86_64/* /usr/local/mysql每个服务器都需要一份
四、配置安装管理节点
在服务器 192.168.1.97
上执行以下操作。
注意,管理节点的防火墙端口开放,默认是1186。
4.1、 拷贝命令
#将文件ndb_mgm和ndb_mgmd拷贝到/usr/local/bin/目录下
1:sudo cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/
2:sudo chmod +x /usr/local/bin/ndb_mgm*
4.2、配置文件
# 创建数据库集群配置文件的目录1:sudo mkdir /var/lib/mysql-cluster# 创建并编辑配置文件2:sudo vim /var/lib/mysql-cluster/config.ini3:[ndbd default]NoOfReplicas=1DataMemory=200MIndexMemory=64M[ndb_mgmd]NodeId=1hostname=192.168.1.97datadir=/var/lib/mysql-cluster[ndbd]NodeId=3hostname=192.168.1.99datadir=/usr/local/mysql/data/[mysqld]NodeId=4hostname=192.168.1.94[mysqld]NodeId=5hostname=192.168.1.98[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。
4.3、启动管理节点
# 第一次启动
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
# 以后启动
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini
# 如果以后修改配置文件
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reloadndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。
如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,
不然添加的节点不会作用在mysql cluster中
五、 配置安装数据节点
在服务器 192.168.1.99
上执行以下操作。
注意,数据节点的端口开放问题,最好把防火墙关闭,虽然之前版本的默认端口号时2202,但是好像时5.1之后的端口号就没有限制(看哪个端口空闲就用哪个端口),即与sql节点通信的端口号会随机变换。若没有关闭防火墙,后面在管理节点查看集群状态的时候,可能会出现mysql节点老是连接不上的问题。
5.1、配置my.cnf文件
sudo vim /etc/my.cnf
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
# 以下两句可要可不要,给单张表添加大小
tmp_table_size = 500M
max_heap_table_size = 500M[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[mysql_cluster]
ndb-connectstring=192.168.1.97:1186
5.2、安装mysql数据库
5.2.1 更改权限#分别添加mysql组和mysql用户groupadd mysqluseradd mysql -g mysql#进入mysql目录cd /usr/local/mysql/#把mysql的目录设置成所有者为rootchown -R root .#创建data目录,并把data目录设置所有者为mysqlmkdir datachown -R mysql data#把mysql的目录改成所属组为mysqlchgrp -R mysql .
5.2.2 执行安装脚本
一:sudo ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
结果如下:2019-11-07T10:20:33.970981Z 1 [Note] A temporary password is generated for root@localhost: ,sFna=hgQ3rP # 初始账号:root,密码:,sFna=hgQ3rP
5.2.3 修改数据库密码# 加入到service服务sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldsudo chmod +x /etc/init.d/mysqldsudo update-rc.d ./mysqld defaults (/etc/init.d 在这个目录下操作)sudo service mysqld start
5.2.4 进入数据库sudo /usr/local/mysql/bin/mysql -uroot -p # 这里输入最开始的原始密码set password=password('新的密码');mysql> show databases;# 结果如下:+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)
5.2.5 开启远程1,use mysql2,update user set host = '%' where user = 'root';3,flush privileges;
5.3、启动数据节点
第一次启动如下:sudo /usr/local/mysql/bin/ndbd --initial
非第一次启动如下:sudo /usr/local/mysql/bin/ndbd安装后第一次启动数据节点时要加上--initial参数。在以后的启动过程中,
则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。
六、配置SQL节点
分别在服务器192.168.1.194
和192.168.1.98
上执行以下操作。
6.1、配置my.cnf文件
mysql服务启动时会默认加载/etc/my.cnf作为其配置文件,故需要修改/etc/my.cnf配置文件。
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
tmp_table_size = 500M
max_heap_table_size = 500M[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[mysql_cluster]
ndb-connectstring=192.168.1.97:1186
default-storage-engine,数据库建表时的默认引擎为ndbcluster,否则数据会同步失败。
6.2、安装MySQL数库 同上:5.2 安装mysql数据库步骤
6.3、启动sql节点
service mysqld start
七、测试
7.1、用管理节点查看
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 1 node(s)
id=3 @192.168.1.99 (mysql-5.7.28 ndb-7.6.12, Nodegroup: 0, *)[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.97 (mysql-5.7.28 ndb-7.6.12)[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.94) # 因为 94服务器运维正在维修。
id=5 @192.168.1.98 (mysql-5.7.28 ndb-7.6.12)
7.2、测试数据
连接任何一个sql节点,在此sql节点上操作,创建数据库、创建表结构、增删改等操作,在其他的sql节点上也会同步这些操作,使数据保持一致。在 192.168.1.98
上进行操作
#登陆数据库
sudo /usr/local/mysql/bin/mysql -uroot -p
Enter password:输入密码#创建数据库mytest
mysql> create database mytest;#切换到mytest数据库
mysql> use mytest;#创建表结构sys_myfirst
mysql> create table sys_myfirst(id varchar(36) primary key, name varchar(100), memo varchar(255));#在sys_myfirst中添加几条数据
mysql> insert into sys_myfirst(id, name, memo) values('1','test1','hello world!');
mysql> insert into sys_myfirst(id, name, memo) values('2','test2','hello world haha!');
mysql> insert into sys_myfirst(id, name, memo) values('3','test3','hello world hehe!');#查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name | memo |
+----+-------+-------------------+
| 2 | test2 | hello world haha! |
| 1 | test1 | hello world! |
| 3 | test3 | hello world hehe! |
+----+-------+-------------------+
3 rows in set (0.00 sec)
在sql节点192.168.1.94
上查看数据
#这里就省去登陆mysql客户端的步骤了
#查看数据
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name | memo |
+----+-------+-------------------+
| 1 | test1 | hello world! |
| 3 | test3 | hello world hehe! |
| 2 | test2 | hello world haha! |
+----+-------+-------------------+
3 rows in set (0.00 sec)以上是从别人的文章直接粘贴过来的,但是自己已经操作过了,是可行的连接如下:
原文链接:https://blog.csdn.net/qq_15092079/article/details/82665307
八、启动和停止集群
启动顺序:管理节点—数据节点—sql节点
停止顺序:管理节点(会同时停止管理节点和数据节点)—sql节点
以上是看网上的人都是这么说的,但是根据我的实践,其实sql节点可以一直保持启动状态(即使管理节点停止了也没关系,下次启动的时候会自动连接上此sql节点),只要第一次启动的时候遵循上面的顺序即可。
8.1、停止管理节点
#第一种方法
ndb_mgm -e shutdown#第二种方法
ndb_mgm
ndb_mgm> shutdown;
8.2、停止sql节点
# 其实就是停止mysql服务
service mysqld stop
以上配置就结束了,参考大佬连接如下:
https://blog.csdn.net/qq_42784891/article/details/86626163
https://blog.csdn.net/qq_15092079/article/details/82665307
九、总结
总体部署起来不算太难,以后用的时候在写心得
MySQL Cluste—分布式数据库集群搭建相关推荐
- MySQL Cluste(入门篇)—分布式数据库集群搭建
目录 前言 1 概述 1.1 分布式数据库集群 1.2 数据库的分布式和主从的区别 2 环境说明 2.1 系统环境 2.2 软件环境 3 安装MySQL Cluster 4 配置安装管理节点 4.1 ...
- MySQL NDB Cluste-分布式数据库集群搭建
1 概述 1.1 分布式数据库集群 Mysql cluster是适用于分布式计算环境的高可用.高冗余版本的mysql,其技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysq ...
- mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...
为什么80%的码农都做不了架构师?>>> <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...
- MinIO纠错码、分布式MinIO集群搭建及启动
文章目录 前言 一.MinIO纠删码 二.分布式集群部署 1.分布式存储可靠性常用的方法 2.分布式MinIO 3.分布式MinIO集群搭建 3.1 下载MinIO 3.2 为每一台虚拟机创建目录并上 ...
- 【Data Cluster】真机环境下MySQL数据库集群搭建
真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(share ...
- mysql cluster linux_【完美】Mysql-cluster数据库集群搭建(linux)
介绍 <Mysql-cluster数据库集群介绍> 安装系统:Linux CentOS7.4查看是否安装mysqlrpm -qa | grep mysql普通删除rpm -e mysql强 ...
- Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们已经讲了,对于数据库来说,mycat可以,我们通过搭建一主一从,双主双从,来实现数据库集群 ...
- 大型分布式数据库集群的研究
1.为什么要设计成分布式数据库,数据为什么要分区? 当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响了最终用户的体验. 在大数据量下对数据库的装载与导出,备份 ...
- Ceph分布式文件系统集群搭建详解
1.Ceph分布式文件系统简介 Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. Ceph 独一无二地在一个统一的系统中同时提供了对象.块.和文件存储功能. 基开发目标是: ...
最新文章
- map 小模板~~~ 写的不好 继续添加
- mysql损坏表修复
- ACE中的Proactor介绍和应用实例
- 计算机语言发展及未来方向
- 异步通知实验(信号)
- 用.NetCore 编译国产老牌PHP论坛DiscuzX ,世界上最好的语言从此属于.Net 的一员
- 基于Windows 7旗舰版搭建WinCE6.0开发环境的过程
- NOIP2005复赛 普及组 第1题 陶陶摘苹果
- es6 Object.is()方法
- 微信小程序实现日历功能(附加签到、迟到、未签的状态显示)
- 【Python】区分List 和String
- 【Java并发性和多线程】竞态条件与临界区
- 一个简单的进程池版的爬虫程序
- jQuery中文文档(jQuery 3.1 参考手册+jQuery.api.3.2.1)
- C#带命令行参数调用外部程序
- 妹子,你早该放弃了...
- C语言中 两个分号啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
- 蚂蚁金服 Service Mesh 技术风险思考和实践
- 常用的前端JavaScript方法封装
- esim工业路由器,爱陆通4G工业路由器5G工业路由器全网通工业路由器
热门文章
- 通达信 移动平均算法_通达信组合指标,如何使用股票池进行自动交易?实现程序化交易...
- 【数据结构】单链表的递归算法
- EmpireCMS_V7.5的一次审计
- 安卓使用无障碍服务监听微信和QQ的收款信息
- Linux 安装添加新的字体
- php 中insert into,php – INSERT INTO SQL Heredoc正确的语法
- 通达信,底峰形(买入信号之一)
- 阿里云服务器租用费用_轻量和ECS价格表
- KPI考核管理:有效提升企业绩效指标
- 大疆A型板使用经验分享(七)——大疆M3508电机和PID控制