设为首页 收藏本站
查看: 1072|回复: 0

[经验分享] 使用MySQL-Cluster搭建MySQL数据库集群

[复制链接]

尚未签到

发表于 2018-9-27 07:43:49 | 显示全部楼层 |阅读模式
  1、MySQL集群的作用:
  - 解决访问节点的单点故障
  - 数据存储节点的单点故障
  - 解决数据存储节点数据备份问题
  2、集群:
  使用一组服务器提供相同的服务
  3、关于MySQL-Cluster:
  MySQL官方提供的集群版本
  已集成标准版MySQL程序,可独立安装使用
  采用NDB(Network DataBase)引擎
  假定每个节点都有独立内存、硬盘
  利用廉价硬件减少整个数据库的单点故障
  4、集群中服务器的角色
  - 数据节点:ndbd(单线程) ndb_mtd(多线程)   存储数据的(表里的记录)
  - Sql节点:mysqld  是客户端访问数据的接口,负责执行SQL命令
  可理解为支持NDB的标准MySQL服务器,仅存储表结构、独立的用户授权
  面向客户端提供用户鉴权、SQL查询等访问服务
  - 管理节点:ndb_mgmd  管理集群中的所有服务器
  客户端:client 访问数据
  5、案例拓扑:
DSC0000.png

  6、MySQL集群的搭建(配置)
  1)公共配置
  # rpm -qa | grep -i mysql
  # service mysql  stop ; chkconfig  mysql off
  # rpm -e --nodeps MySQL-devel MySQL-embeddedMySQL-test MySQL-server MySQL-client MySQL-shared MySQL-shared-compat
  //保留RHEL自带的mysql-libs包
  # rm -rf  /etc/my.cnf
  # rm -rf  /var/lib/mysql/*
  # tar -xvfMySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
  # rpm -Uvh MySQL-Cluster-*.rpm
  2)配置管理节点
  运行管理进程   ndb_mgmd

  配置文件  /etc/config.ini   (服务器的角色  和角色对应的ip >  [ndbd default] :数据节点的公共配置
  [ndb_mgmd] :指定管理节点
  [ndbd] :指定数据节点
  [mysqld] :指定sql节点
  # mkdir  -p    /var/log/mysql-cluster   //创建工作目录
  # vim /etc/config.ini   //编写主配置文件
  [ndbd default]
  NoOfReplicas=2       //保留2份数据拷贝
  DataMemory=80M     //数据缓存大小
  IndexMemory=18M   //索引缓存大小
  [ndb_mgmd]
  nodeid=7      //管理节点的ID标识
  hostname=192.168.4.100   //管理节点的IP地址
  datadir=/var/log/mysql-cluster    //工作目录
  [ndbd]           //设置数据节点ndbA
  nodeid=8      //数据节点ndbA的ID标识
  hostname=192.168.4.30     //此节点的IP地址
  datadir=/var/log/mysql-cluster/data     //工作目录
  [ndbd]         //设置数据节点ndbB
  nodeid=9
  hostname=192.168.4.40
  datadir=/var/log/mysql-cluster/data
  [mysqld]      //设置sql节点sqlA
  nodeid=10      //sql节点sqlA的ID标识
  hostname=192.168.4.10     //此节点的IP地址
  [mysqld]      //设置sql节点sqlB
  nodeid=11
  hostname=192.168.4.20
  :wq
  3)配置数据节点
  运行数据进程   ndbd
  配置文件:  /etc/my.cnf
  #mkdir -p   /var/log/mysql-cluster/data    //创建工作目录
  #vim    /etc/my.cnf
  [mysqld]
  datadir=/var/log/mysql-cluster/data       //工作目录
  ndb-connectstring=192.168.4.100    //管理节点IP地址
  ndbcluster                     //指定使用ndbcluster集群存储引擎
  [mysql_cluster]
  ndb-connectstring=192.168.4.100   //如何连接管理节点
  :wq
  4)配置sql节点
  运行mysql服务  mysql(此服务是由mysql-cluster软件包提供)
  #vim   /etc/my.cnf
  [mysqld]
  ndbcluster                                //指定使用ndbcluster集群存储引擎
  default-storage-engine=ndbcluster    //指定表的默认存储引擎是 ndbcluster
  ndb-connectstring=192.168.4.100
  [mysql_cluster]
  ndb-connectstring=192.168.4.100     //如何连接管理节点
  :wq
  7、启动不同角色服务器上进程
  1)  启动管理节点上的管理进程
  #ndb_mgmd  -f  /etc/config.ini
  //启动进程,结合-f选项读取.ini配置;默认后台模式,调试时可加--nodaemon;修改了配置以后,可加--initial重新初始化
  #netstat -untlap  |  grep   :1186    //查看进程
  #pkill  -9   ndb_mgmd      //杀死进程
  2)依次启动数据节点上的数据进程
  #ndbd
  //首次执行时,可加--initial初始化;多个数据节点的操作相同
  3)依次启动sql节点上的数据库服务
  #service   mysql start   //多个sql节点的操作相同
  8、查看集群状态
  1)管理节点上登录管理界面,查看状态
  #ndb_mgm
  ndb_mgm> show
  Cluster Configuration
  ---------------------
  [ndbd(NDB)]  2node(s)
  id=8 @192.168.4.30  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
  id=9 @192.168.4.40  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
  [ndb_mgmd(MGM)]      1 node(s)
  id=7 @192.168.4.100  (mysql-5.6.14 ndb-7.3.3)
  [mysqld(API)]       2 node(s)
  id=10      @192.168.4.10  (mysql-5.6.14 ndb-7.3.3)
  id=11      @192.168.4.20  (mysql-5.6.14 ndb-7.3.3)
  ndb_mgm>
  2)Sql节点的mysql初始化
  重设root密码;为客户端访问添加用户授权
  #service mysqlstart
  #mysql -uroot -p初始密码    //初始密码见/root/.mysql_secret文件
  3)在sql节点上,检查默认的存储引擎
  Mysql>show engines;
  9、测试访问节点的单点故障
  在sql节点上授权可以从远端的客户机连接自己
  Grant all on  webdb.* to webuser@”%”identified by “webuser88”;  //两个sql节点都做授权
  客户端访问:#mysql-h192.168.10/20  -uwebuser -pwebuser88
  mysql>create  database  webdb;
  mysql>create  table webdb.a(id int);
  mysql>insert   into webdb.a values(1000);
  mysql> select  * from webdb.a ;
  访问sqlA节点操纵数据,在sqlB上会同步结果。
  10、测试数据节点的单点故障
  数据节点之间可以互相备份,自动选举Master,自动同步数据。测试时可关掉一个数据节点的ndbd服务,插入、查询数据验证数据的同步性。
  Sql节点和数据节点的进程正常运行后,不需要重启的话,管理节点可以关掉


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602525-1-1.html 上篇帖子: LNMP基于fastcgi实现nginx,php,mysql的分离 下篇帖子: MySQL主从延迟解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表