热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL服务器集群安装和配置

一:准备阶段1:节点对应ip管理节点(1个)192.168.88.130SQL节点(2个)192.168.88.130:3308192.168.88.132:3308数据节点(2个)192.168.88.130:192.168.88.132***这三种节点可以配置在不同机器上,也可以配置在一台机器上。有硬件限制使用两台
一:准备阶段
1:
节点                                     对应ip
管理节点(1个)                         192.168.88.130
SQL节点(2个)                          192.168.88.130:3308  192.168.88.132:3308
数据节点(2个)                         192.168.88.130:      192.168.88.132
***这三种节点可以配置在不同机器上,也可以配置在一台机器上。有硬件限制使用两台服务。
2:mysql版本 mysql-5.1.47.tar.gz

二:安装
1: tar -zxf mysql-5.1.47.tar.gz
2:  cd mysql-5.1.47
3: ./configure --prefix=/usr/local/mysql --localstatedir=/app/mysqlcluster --syscOnfdir=/usr/local/mysql/my.cnf  --enable-static --enable-profiling  --enable-local-infile --with-charset=utf8  --with-tcp-port=3308  --with-mysqld-user=mysql --with-plugins=partition,innobase,ndbcluster  --without-plugin-PLUGIN
***ndbcluster 这个引擎必须编译进去
4:make & make install
5: cp ./support-files/my-large.cnf /usr/local/mysql/my.cnf
6: vi /usr/local/mysql/my.cnf
[mysqld]
ndbcluster     #运行NDB存储引擎
ndb-cOnnectstring=192.168.88.130 #指定管理节点
[mysql_cluster]
ndb-cOnnectstring=192.168.88.130
7: /usr/local/mysql/bin/mysql_install_db --user=mysql
***在192.168.88.132服务也做以上操作

三:配置管理节点
1:在192.168.88.130服务器/usr/local/mysql/下创建config.ini
vi config.ini
[NDBD DEFAULT]
NoOfReplicas=1 //每个数据节点的镜像数量
DataMemory=80M  //每个数据节点给数据分配的内存
IndexMemory=40M  //每个数据节点给索引分配的内存
[TCP DEFAULT]
portnumber=2202
[NDB_MGMD]
id=1
hostname=192.168.88.130   //管理节点数据目录
datadir=/app/mysqlcluster
[NDBD]
id=2
hostname=192.168.88.130
datadir=/app/mysqlcluster
[NDBD]
id=3
hostname=192.168.88.132
datadir=/app/mysqlcluster
[MYSQLD]
hostname=192.168.88.130
[MYSQLD]
hostname=192.168.88.132

四:启动管理节点,数据节点和SQL节点
1:/usr/local/mysql/libexec/ndb_mgmd -f /usr/local/mysql/config.ini #启动管理节点
 可以进入 /usr/local/mysql/bin/ndbd_mgm  ,然后使用show 命令 查看管理节点 输出如下:
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.88.130)
id=3 (not connected, accepting connect from 192.168.88.132)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.88.130)
id=5 (not connected, accepting connect from 192.168.88.132)
2 /usr/local/mysql/libexec/ndbd --initial --ndb-cOnnectstring=192.168.88.130:1192  #启动数据节点
 ***第一次启动可以加上--initial 初始化,如果数据节点有数据,再次启动数据节点最好不要加上--initial(除非有备份) ,它会把数据节点上的数据清空。
3 /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/lcoal/mysql/my.cnf --user=mysql &  #启动服务节点
4:查看集群信息
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.88.130  (Version: 5.1.47, Nodegroup: 0, Master)
id=3    @192.168.88.132  (Version: 5.1.47, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4    @192.168.88.130  (Version: 5.1.47)
id=5    @192.168.88.132  (Version: 5.1.47)

五:基本测试
1:SQL节点发生单点故障
  1.1: mysqladmin -h127.0.0.1 -P3308 shutdown  #停止sql节点mysql服务
  1.2:参看一下cluster的状态
  ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.88.130  (Version: 5.1.47, Nodegroup: 0, Master)
id=3    @192.168.88.132  (Version: 5.1.47, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.88.130)
id=5    @192.168.88.132  (Version: 5.1.47)
***此时SQL节点断开与cluster的连接。数据节点还是能正常工作。
2:数据节点单点节点故障
  2.1:kill 21794 21793  #在192.168.88.130 上停止NDB进程
  2.2:在任何SQL节点执行
  mysql> select * from t;
  ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER
***此时整个cluster出现问题了,解决这个问题的方法是:在管理节点的配置文件有NoOfReplicas=1
(这个数据节点的数据只要一份)所以修改这个选项设置NoOfReplicas=2,这样把该节点数据镜像一份到其他的节点上。
3:管理节点故障 (mysql5.5可以支持多个管理节点)
  3.1:ndb_mgm> shutdown  或# /usr/local/mysql/bin/ndb_mgm -e shutdown
 ***此时管理节点,数据节点被关闭了,SQL的mysql服务节点没有关闭。
有一个疑问:每当重启管理节点,mysql服务节点不能自动连接上管理节点,怎么让服务节点自动连接上管理节点?
4:mysql cluster 备份
  4.1:ndb_mgm>start backup
  在数据目录生成一个BACKUP目录,在该目录下,有每次备份生成的目录如BACKUP-1(表示第一次备份),在BACKUP-1有三个文件
  BACKUP-1.2.log,BACKUP-1.2.ctl,BACKUP-1-0.2.DATA(.2表示备份id=2的数据节点的数据).此时在192.168.88.132也生成这个文件件
  ,但是是备份id=3的数据节点的数据(。3表示)。
5:mysql cluster 数据恢复
  5.1: /usr/local/mysql/bin/ndb_restore --connect-string=192.168.88.130 --nodeid=2 --backupid=1 --restore_data  --restore_meta --backup_path=/app/mysqlcluster/BACKUP/BACKUP-1     
 [root@localhost /]# /usr/local/mysql/bin/ndb_restore -c host=192.168.88.130:1186 --nodeid=3 --backupid=1   --restore_meta -r /app/mysqlcluster/BACKUP/BACKUP-1
Nodeid = 3
Backup Id = 1
backup path = /app/mysqlcluster/BACKUP/BACKUP-1
Ndb version in backup files: Version 5.1.47
Configuration error: Error : Could not alloc node id at 192.168.88.130 port 1186: No free node id found for mysqld(API).
Failed to initialize consumers
NDBT_ProgramExit: 1 - Failed
***此时恢复出错,提示对mysqld(API)没有空闲节点。解决这个问题可以在管理节点的配置文件添加一个空的
[mysqld]
#空的
 5.2:/usr/local/mysql/bin/ndb_restore --connect-string=192.168.88.130 --nodeid=2 --backupid=1 --restore_data  --restore_meta --backup_path=/app/mysqlcluster/BACKUP/BACKUP-1   
 Nodeid = 2
Backup Id = 1
backup path = /app/mysqlcluster/BACKUP/BACKUP-1
Ndb version in backup files: Version 5.1.47
Connected to ndb!!
Create table `clutest/def/t` failed: 721: Table or index with given name already exists
Restore: Failed to restore table: `clutest/def/t` ... Exiting
NDBT_ProgramExit: 1 - Failed
***此时恢复出错是因为表结构存在,对于数据元存在,只恢复表数据就够了,去除--restore_meta这个选项(恢复数据元)
6:日志管理
 6.1:mysql cluster 提供两种日志:集群日志(clusterlog),节点日志(node log)
 6.2 在集群客户端查看日志状态(clusterlog info),打开(clusterlog on),关闭日志(clusterlog off)
 6.3:cluster中的日志有很多类型(Category(startup, shutdown, statistics,checkpoint noderestart,connnection ,error ,info)
  Priority (1表示“重要”,15 表示“最不重要”) ,Servrity level (alter,critical,error,warning,info,debug) ),
 )
 可以按照类别进行过滤。具体用法:1:node_id clusterlog category=level (用于小于或等于level的优先级将category 事件记录到cluster日志。
 nodeid 可以为all(全部节点)),也可以是某个节点
 2:clusterlog toggle severity_level #过滤severity_level的日志
7:性能测试(期待着)

推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
author-avatar
妃你莫属L_957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有