mysql高可用方案之集群(cluster)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

1.实验环境

我用三台服务器搭建mysql cluster环境,sql节点和数据节点在同一服务器上,管理节点单独一台.

cluster node1:192.168.1.102        data node1:192.168.1.102

cluster node2:192.168.1.104        data node2:192.168.1.104

manager node:192.168.1.19

OS:centos 6.4 64位

 

2.在sql节点和数据节点安装mysql cluster(注:cluster节点1和节点2是一样的)

cluster node1:

[root@node1 home]# wget http://mirrors.sohu.com/mysql/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

[root@node1 home]# tar xvf mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

[root@node1 home]# mv mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64 /usr/local/mysql-cluster-gpl-7.3.6/

[root@node1 home]# cd /usr/local/

[root@node1 local]# groupadd mysql
[root@node1 local]# useradd  -r -M -s /sbin/nologin mysql

[root@node1 local]# chown -R root:mysql mysql-cluster-gpl-7.3.6/
[root@node1 local]# chown -R mysql:mysql mysql-cluster-gpl-7.3.6/data/

[root@node1 scripts]# ./mysql_install_db  --user=mysql --datadir=/usr/local/mysql-cluster-gpl-7.3.6/data --basedir=/usr/local/mysql-cluster-gpl-7.3.6

[root@node1 scripts]# cd ../bin/

[root@node1 bin]# cp -a ../support-files/mysql.server  /etc/init.d/mysqld

[root@node1 bin]# chkconfig  --add mysqld

[root@node1 bin]# chkconfig  mysqld on

[root@node1 bin]# cp -a ../my.cnf  /etc/my.cnf

[root@node1 bin]# vim /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql-cluster-gpl-7.3.6                      --数据库的安装路径
datadir = /usr/local/mysql-cluster-gpl-7.3.6/data               --数据库的数据目录
port = 3306
ndbcluster             --集群服务
ndb-connectstring=192.168.1.19           --管理节点的IP地址

 

[mysql_cluster]
ndb-connectstring=192.168.1.19           --管理节点的IP地址

[root@node1 bin]# ./mysqld_safe --user=mysql

[root@node1 bin]# /etc/init.d/mysqld restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL...................................... SUCCESS! 
[root@node1 bin]# netstat -anp |grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      1982/mysqld         
unix  2      [ ACC ]     STREAM     LISTENING     48481  1982/mysqld         /tmp/mysql.sock[root@node1 bin]# /etc/init.d/iptables stop

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@node1 bin]#

 

cluster node2:

注:节点2上的mysql cluster安装和节点1是一样的,配置文件也是一样

 

3.管理节点

[root@db2 home]# wget http://mirrors.sohu.com/mysql/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

[root@db2 home]# tar xvf mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz

[root@db2 home]#  mv mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64 /usr/local/mysql-cluster-gpl-7.3.6/

[root@db2 home]# cd /usr/local/

[root@db2 local]# groupadd mysql
[root@db2 local]# useradd  -r -M -s /sbin/nologin mysql

[root@db2 local]# chown -R root:mysql mysql-cluster-gpl-7.3.6/
[root@db2 local]# chown -R mysql:mysql mysql-cluster-gpl-7.3.6/data/

[root@db2 scripts]# ./mysql_install_db  --user=mysql --datadir=/usr/local/mysql-cluster-gpl-7.3.6/data --basedir=/usr/local/mysql-cluster-gpl-7.3.6

[root@db2 scripts]# cd ../bin/

[root@db2 bin]# cp -a ../my.cnf  /etc/my.cnf

[root@db2 bin]# vim /etc/my.cnf

 [mysqld]

basedir = /usr/local/mysql-cluster-gpl-7.3.6
datadir = /usr/local/mysql-cluster-gpl-7.3.6/data
port = 3306

[root@db2 home]# /etc/init.d/iptables stop
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]

[root@db2 home]# mkdir  /var/lib/mysql-cluster/

[root@db2 home]# vim  /var/lib/mysql-cluster/config.ini     --配置文件中注意大小写

[ndbd default]
NoOfReplicas=1

[tcp default]
portnumber=2202

[ndb_mgmd]
Id=1
Hostname=192.168.1.19
datadir=/usr/local/mysql-cluster-gpl-7.3.6/data

[ndbd]
Id=2
Hostname=192.168.1.102
datadir=/usr/local/mysql-cluster-gpl-7.3.6/data/


[ndbd]
Id=3
Hostname=192.168.1.104
datadir=/usr/local/mysql-cluster-gpl-7.3.6/data/

[MYSQLD]
Id=4
Hostname=192.168.1.102

[MYSQLD]
Id=5
Hostname=192.168.1.104

[root@db2 bin]# ./ndb_mgmd --configdir=/var/lib/mysql-cluster/ -f /var/lib/mysql-cluster/config.ini  --initial  --启动管理节点服务
MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.6

[root@db2 bin]# netstat -anp | grep ndb
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      3569/ndb_mgmd       
tcp        0      0 192.168.1.105:1186         192.168.1.102:45799        ESTABLISHED 3569/ndb_mgmd       
tcp        0      0 192.168.1.105:1186         192.168.1.104:46933        ESTABLISHED 3569/ndb_mgmd       
tcp        0      0 127.0.0.1:1186              127.0.0.1:55347             ESTABLISHED 3569/ndb_mgmd       
tcp        0      0 192.168.1.105:1186         192.168.1.102:45800        ESTABLISHED 3569/ndb_mgmd       
tcp        0      0 192.168.1.105:1186         192.168.1.102:45801        ESTABLISHED 3569/ndb_mgmd       
tcp        0      0 127.0.0.1:55347             127.0.0.1:1186              ESTABLISHED 3569/ndb_mgmd       
unix  3      [ ]         STREAM     CONNECTED     20977  3569/ndb_mgmd       
unix  3      [ ]         STREAM     CONNECTED     20976  3569/ndb_mgmd       
[root@db2 bin]#

 

4.启动cluster节点和数据库服务

cluster node1:

[root@node1 bin]# ./ndbd --initial

2014-10-10 09:59:20 [ndbd] INFO     -- Angel connected to '192.168.1.19:1186'
2014-10-10 09:59:20 [ndbd] INFO     -- Angel allocated nodeid: 2

[root@node1 bin]# ../support-files/mysql.server start
Starting MySQL SUCCESS! 
[root@node1 bin]#

 

cluster node2:

[root@node2 bin]# ./ndbd --initial

2014-10-10 10:01:24 [ndbd] INFO     -- Angel connected to '192.168.1.19:1186'
2014-10-10 10:01:24 [ndbd] INFO     -- Angel allocated nodeid: 3

[root@node2 bin]# ../support-files/mysql.server start
Starting MySQL SUCCESS! 
[root@node2 bin]#

 

管理节点查看信息:

[root@db2 bin]# ./ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.102  (mysql-5.6.17 ndb-7.3.6, Nodegroup: 0, *)
id=3 @192.168.1.104  (mysql-5.6.17 ndb-7.3.6, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.19  (mysql-5.6.17 ndb-7.3.6)

[mysqld(API)] 2 node(s)
id=4 @192.168.1.102  (mysql-5.6.17 ndb-7.3.6)
id=5 @192.168.1.102  (mysql-5.6.17 ndb-7.3.6)

ndb_mgm>










本文转自 z597011036 51CTO博客,原文链接:http://blog.51cto.com/tongcheng/1561980,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
2月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
345 5
|
3月前
|
存储 关系型数据库 MySQL
修复.net Framework4.x连接MYSQL时遇到utf8mb3字符集不支持错误方案。
通过上述步骤大多数情况下能够解决由于UTF-encoding相关错误所带来影响,在实施过程当中要注意备份重要信息以防止意外发生造成无法挽回损失,并且逐一排查确认具体原因以采取针对性措施解除障碍。
251 12
|
4月前
|
SQL 关系型数据库 MySQL
解决MySQL "ONLY_FULL_GROUP_BY" 错误的方案
在实际操作中,应优先考虑修正查询,使之符合 `ONLY_FULL_GROUP_BY`模式的要求,从而既保持了查询的准确性,也避免了潜在的不一致和难以预测的结果。只有在完全理解查询的业务逻辑及其后果,并且需要临时解决问题的情况下,才选择修改SQL模式或使用 `ANY_VALUE()`等方法作为短期解决方案。
633 8
|
3月前
|
监控 NoSQL 关系型数据库
保障Redis与MySQL数据一致性的强化方案
在设计时,需要充分考虑到业务场景和系统复杂度,避免为了追求一致性而过度牺牲系统性能。保持简洁但有效的策略往往比采取过于复杂的方案更加实际。同时,各种方案都需要在实际业务场景中经过慎重评估和充分测试才可以投入生产环境。
234 0
|
4月前
|
关系型数据库 MySQL Java
MySQL 分库分表 + 平滑扩容方案 (秒懂+史上最全)
MySQL 分库分表 + 平滑扩容方案 (秒懂+史上最全)
|
7月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
8月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)

推荐镜像

更多