加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

20台mysql如何做集群_2-20 MySQL集群搭建实现高可用

发布时间:2022-10-27 11:13:09 所属栏目:MySql教程 来源:
导读:  MySQL集群概述和安装环境

  MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本.Cluster的汉语是“集群”的意思.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服
  MySQL集群概述和安装环境
 
  MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本.Cluster的汉语是“集群”的意思.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.
 
  MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单点故障.
 
  mysql 集群架构
 
  c64f300d98e1b6ade90867b9fa118b29.png
 
  上图是mysql的一种常见集群
 
  SQL节点: 给上层应用层提供sql访问.
 
  管理节点(MGM): 管理整个集群. 启动,关闭集群. 通过ndb_mgmd命令启动集群
 
  存储/数据节点: 保存cluster中的数据.
 
  数据节点,可以提供副本.实现数据冗余.
 
  NDB引擎:是一种 “内存中”的存储引擎 ,它具有可用性高和数据一致性好的特点.
 
  拓展:NDB引擎介绍
 
  NDB引擎
 
  MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G.NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题.
 
  缺陷
 
  ·基于内存,数据库的规模受集群总内存的大小限制
 
  ·基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证.
 
  ·多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢
 
  优点
 
  ·多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案.
 
  ·扩展性很好,增加节点即可实现数据库集群的扩展.
 
  ·冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断.
 
  Mysql cluster的下载地址:
 
  在我们做的实验中mysql cluster集群各机器角色如下分配:
 
  mysql管理结点:xiaogan63.cn IP:192.168.31.63
 
  mysql 数据结点:xiaogan63.cn IP:192.168.31.63
 
  mysql 数据结点:xiaogan64.cn IP:192.168.31.64
 
  msyql SQL结点:xiaogan63.cn IP:192.168.31.63
 
  msyql SQL结点:xiaogan64.cn IP:192.168.31.64
 
  将MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar
 
  上传到xiaogan63和xiaogan64上.
 
  实战:MySQL集群搭建
 
  环境清理以及安装
 
  xiaogan63和xiaogan64上执行下面内容:
 
  首先我们要清除旧版本,然后安装mysql cluster,最后是文件权限管理.
 
  1.mysql旧版本清除
 
  首先使用如下命令来清理之前操作系统自带的mysql安装:
 
  yum -y remove mysql
 
  然后使用如下命令:
 
  rpm -qa | grep mysql*
 
  对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:
 
  rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
 
  2.mysql cluster版本安装准备
 
  将MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar放到某个目录下(譬如/package) 下面,并且执行如下命令解压:
 
  tar -xf MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar
 
  # 当前时间不能晚于下载文件的时间,不然会报错
 
  # 避免报错,可以先用ntpdate 同步下时间
 
  # ntpdate time.windows.com
 
  # rpm -ivh /mnt/Packages/ntpdate-*
 
  得到如下文件清单:
 
  MySQL-Cluster-client-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-devel-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-embedded-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar
 
  MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-shared-compat-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-shared-gpl-7.4.13-1.el6.x86_64.rpm
 
  MySQL-Cluster-test-gpl-7.4.13-1.el6.x86_64.rpm
 
  3.创建文件夹
 
  (分如下4个类来创建对应的文件夹)
 
  数据结点存放数据:mkdir /var/lib/mysql
 
  管理节点:mkdir /var/lib/mysql-cluster SQL节点:可不用 文件夹授权
 
  进程DIR: mkdir /var/run/mysqld
 
  管理结点运行目录: /usr/mysql-cluster
 
  使用如下的命令来变更权限保证可写入:
 
  [root@xiaogan63 ~]# useradd -M -s /sbin/nologin mysql
 
  [root@xiaogan63 ~]# chown mysql:mysql -R /var/lib/mysql
 
  [root@xiaogan63 ~]# chown mysql:mysql -R /var/lib/mysql-cluster/
 
  [root@xiaogan63 ~]# chown mysql:mysql -R /var/run/mysqld/
 
  [root@xiaogan63 ~]# chown mysql:mysql -R /usr/mysqld-cluster/
 
  # 64中不需要创建/usr/mysqld-cluster
 
  4.安装mysql集群软件包(客户端)
 
  rpm -ivh MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64. rpm
 
  rpm -ivh MySQL-Cluster-client-gpl-7.4.13-1.el6.x86_64. rpm
 
  注意:MySQL-Cluster-server和MySQL-Cluster-client 的关系和mysql-server同mysql 包的关系一样.数据结点存放数据: /var/lib/mysql 会自动创建.
 
  会生成两个主要的命令文件:ndb_mgmd 和ndb_mgm
 
  [root@xiaogan63 ~]# which ndb_mgm
 
  /usr/bin/ndb_mgm
 
  [root@xiaogan63 ~]# rpm -qf /usr/bin/ndb_mgm
 
  MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64
 
  [root@xiaogan63 ~]# which ndb_mgmd
 
  /usr/sbin/ndb_mgmd
 
  [root@xiaogan63 ~]# rpm -qf /usr/sbin/ndb_mgmd
 
  MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64
 
  注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中.
 
  ---------------------------------------------------------------------------------------------------------
 
  0c7b79e4901470a314b7a2abfe3e0688.png
 
  5.查看mysql root用户密码
 
  [root@xiaogan64 ~]# cat /root/.mysql_secret
 
  # The random password set for the root user at Wed Apr 1 21:10:53 2015 (local time): NSblG9hMkThTgFHY
 
  搭建mysql集群
 
  经过复杂的初始配置,我们终于要搭建集群了.我们按配置,启动,测试的顺序来整理这一部分.
 
  各个机器上的配置
 
  我们先将需求配置到各台机器上
 
  1.xiaogan63创建管理结点上配置文件
 
  [root@xiaogan63 ~]# cd /var/lib/mysql-cluster
 
  [root@xiaogan63 mysql-cluster]# vi config.ini #写入以下内容
 
  [ndbd default]
 
  NoOfReplicas=2 #数据写入数量.2表示两份
 
  DataMemory=200M
 
  IndexMemory=100M #索引给100M
 
  [ndb_mgmd]
 
  id=1
 
  datadir=/var/lib/mysql-cluster # 管理结点的日志
 
  HostName=192.168.31.63 #管理结点的IP地址.本机IP
 
  ###### data node options: #存储结点
 
  [ndbd]
 
  HostName=192.168.31.63
 
  DataDir=/var/lib/mysql #mysql数据存储路径
 
  id=2
 
  [ndbd]
 
  HostName=192.168.31.64
 
  DataDir=/var/lib/mysql #mysql数据存储路径
 
  id=3
 
  # SQL node options: #关于SQL结点
 
  [mysqld]
 
  HostName=192.168.31.63
 
  id=4
 
  [mysqld]
 
  HostName=192.168.31.64
 
  id=5
 
  在这个文件里,我们分别给五个节点分配了ID,这有利于更好的管理和区分各个节点.当然,要是不指定,MySQL也会动态分配一个
 
  2.xiaogan63数据节点+SQL节点配置文档
 
  [root@xiaogan63 /]# vim /etc/my.cnf #写入以下内容
 
  [mysqld]
 
  datadir=/var/lib/mysql #mysql数据存储路径
 
  # 注:如果xiaogan63 只做 SQL节点mysql集群,则配置文档 没有datadir这一项
 
  # 说明:数据节点和SQL结点配置文件区别 ,就多一行
 
  # 数据结点有:datadir=/var/lib/mysql#mysql数据存储路径.
 
  # SQL节点上没有.
 
  ndbcluster #启动ndb引擎
 
  ndb-connectstring=192.168.31.63 # 管理节点IP地址
 
  [mysqld_safe]
 
  log-error=/var/log/mysqld.log
 
  pid-file=/var/run/mysqld/mysqld.pid
 
  [mysql_cluster]
 
  ndb-connectstring=192.168.31.63 #管理节点IP地址
 
  3.xiaogan64配置数据结点和SQL结点
 
  [root@xiaogan63 ~]# scp /etc/my.cnf 192.168.31.64:/etc/
 
  注意:xiaogan63和xiaogan64的/my.cnf的内容一样,可直接从xiaogan63复制过去
 
  MySQL Cluster启动
 
  初次启动命令以及用户密码更改调整:(请严格按照次序启动)
 
  先启动:管理结点服务->数据结点服务->sql结点服务
 
  关闭:关闭管理结点服务,关闭管理结点服务后,nbdb数据结点服务会自动关闭->手动把sql结点服务关了.
 
  执行初次启动前请先确认
 
  将两台机器的防火墙关闭(service iptables stop 或者 设定 防火墙端口可通,两个端口即通讯端口1186、数据端口3306 )
 
  1.xiaogan63上启动管理结点命令
 
  ndb_mgmd -f /var/lib/mysql-cluster/config.ini
 
  # mysql cluster 后台运行进程
 
  #尽量不要把 管理结点、数据结点、存储结点 配置在同一台机子上,否则一个挂了,就全挂了.
 
  查看端口号:
 
  2.xiaogan63和xiaogan 64启动数据结点服务
 
  [root@xiaogan63 ~]# ndbd --initial
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!