利用mysql-cluster软件实现mysql集群

简介:

                                                         mysql集群
一、准备系统坏境
        使用5台机器redhat linux 5 配置一个mysql集群
        资源分配
    IP                                Description                                                             主机名
192.168.0.199            Management Node  管理节点                             Management
192.168.0.191              SQL Node               执行sql语句的节点             sqlnodeA
192.168.0.133               SQL Node              执行sql语句的节点            sqlnodeB
192.168.0.196               Data Node             存储数据的节点                 datanodeA
192.168.0.17                Data Node               存储数据的节点               datanodeB
二、软件准备
     现在新版本有7.的了。从mysql网站可以下载到。
    
  mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz 
 
三、准备配置。
    1、配置管理节点。
 
[root@localhost local]# tar xzvf mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz  
[root@localhost local]# mv mysql-cluster-gpl-6.3.20-linux-i686-glibc23 mysql
其实管理节点只需要ndbd_mgmd ,ndbd_mgm俩个程序,可以把所有的包都使用,也可以从其他4个节点拷贝这俩个程序过来就可以了。
建立用户: 此步骤在其他4个节点执行相同的操作。
[root@Management ~]# useradd mysql
修改软件的用户和组
[root@Management local]# chown mysql:mysql -R mysql
编辑配置文件,由于配置文件不存在,所以需要手动创建。
[root@Management cluster-conf]# pwd
/usr/local/mysql/cluster-conf
[root@Management cluster-conf]# cat config.ini 
#此选项是对数据节点的配置
[ndbd default]
NoOfReplicas=2    # 数据复制的分数
DataMemory=80M    # 分配数据内存
IndexMemory=18M   # 分配索引使用内存
# 管理节点选项:
[ndb_mgmd]
id=1
hostname=192.168.0.199           # 这个是管理节点的IP地址
datadir=/var/lib/mysql-cluster   # 管理所有点点日志的文件目录
#数据节点A配置
[ndbd]
id=2
hostname=192.168.0.196             #datanodeA的IP地址
datadir=/usr/local/mysql/ndbdata   #目录如果不存在需要手动创建,在datanodeA从创建
 
#数据节点B配置
[ndbd]
id=3
hostname=192.168.0.17             #datanodeB的IP地址
datadir=/usr/local/mysql/ndbdata   #目录如果不存在需要手动创建,在datanodeB从创建
#SQL节点A配置
[mysqld]
id=4
hostname=192.168.0.191              #sql节点A的IP地址

#SQL节点B配置
[mysqld]
id=5
hostname=192.168.0.133             #sql节点B的IP地址
 
#其中id=项不是必须配置的,如果不配置mysql也会自动分配一个。·
[root@Management cluster-conf]#
 
管理节点配置完成,下面配置sql,data节点。
首先将软件环境准备好,直接拷贝mysql目录到其他4个节点。
1、配置sql节点,A和B配置一样。配置完A后将配置文件拷贝就可以了。
在192.168.0.191和192.168.0.133上配置
[root@sqlnodeA ~]# useradd mysql
[root@sqlnodeA ~]# chown mysql:mysql -R /usr/local/mysql/ 
[root@sqlnodeA ~]# vi /etc/my.cnf 
#SQL½节点A的配置文件
[mysqld]
ndbcluster   #配置数据的存储引擎
ndb-connectstring=192.168.0.199        #管理服务器
[mysql_cluster]
ndb_connectstring=192.168.0.199         #管理服务器
[root@sqlnodeA ~]# chown mysql:mysql /etc/my.cnf
[root@sqlnodeA ~]# scp /etc/my.cnf 192.168.0.133:/etc/
#sqlnodeB的配置简化。
[root@sqlnodeB ~]# useradd mysql
[root@sqlnodeB ~]# chown mysql:mysql /etc/my.cnf 
[root@sqlnodeB ~]# chown mysql:mysql /usr/local/mysql/ -R
配置完成后,初始话mysql。
[root@sqlnodeA mysql]# pwd
/usr/local/mysql
[root@sqlnodeA mysql]# ./scripts/mysql_install_db --user=mysql
[root@sqlnodeA mysql]# ./scripts/mysql_install_db --user=mysql
WARNING: The host 'sqlnodeA' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK
SQL节点B也执行相同的操作。
[root@sqlnodeB mysql]# ./scripts/mysql_install_db --user=mysql
SQL节点配置完成,下面配置数据节点
在192.168.0.196和192.168.0.17上配置。A和B配置一样。配置完A后将配置文件拷贝就可以了。
[root@datanodeA ~]# useradd mysql
[root@datanodeA ~]# vi /etc/my.cnf
#这是数据节点A的配置文件
[mysqld]
datadir=/usr/local/mysql/ndbdata   #数据存放目录,一定要和管理节点写的一样
ndbcluster                         #运行的数据库引擎
ndb-connectstring=192.168.0.199     #管理节点
[mysql_cluster]
ndb-connectstring=192.168.0.199
"/etc/my.cnf" [New] 8L, 299C written
[root@datanodeA ~]# mkdir /usr/local/mysql/ndbdata
[root@datanodeA ~]# chown mysql:mysql /usr/local/mysql/ -R
[root@datanodeA ~]# chown mysql:mysql /etc/my.cnf
将配置文件给数据节点B
[root@datanodeA ~]# scp /etc/my.cnf 192.168.0.17:/etc/
root@192.168.0.17's password: 
my.cnf                                                         100%  299     0.3KB/s   00:00   
数据节点B配置简化 
[root@datanodeB ~]# useradd mysql
[root@datanodeB ~]# mkdir /usr/local/mysql/ndbdata
[root@datanodeB ~]# chown mysql:mysql -R /usr/local/mysql/ndbdata/
[root@datanodeB ~]# chown mysql:mysql /etc/my.cnf 
全部配置完成,下面开始启动测试
首先启动管理节点。
#启动报错,没目录创建一个
[root@Management mysql]# ./bin/ndb_mgmd -f cluster-conf/config.ini 
Cannot become daemon: /var/lib/mysql-cluster/ndb_1.pid: open for write failed: No such file or directory
[root@Management mysql]# mkdir /var/lib/mysql-cluster
[root@Management mysql]# ./bin/ndb_mgmd -f cluster-conf/config.ini 
[root@Management mysql]# ./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 (not connected, accepting connect from 192.168.0.196)
id=3 (not connected, accepting connect from 192.168.0.17)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.199  (mysql-5.1.30 ndb-6.3.20)
[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from 192.168.0.191)
id=5 (not connected, accepting connect from 192.168.0.133)
ndb_mgm>
用ndb_mgm命令进入交互模式,输入show命令可以查看到节点的状态,因为现在其他节点都没有启动,所有状态都是 not connected的。
下面启动各个节点的mysqld服务。
1、启动sql节点。AB启动方法相同。
[root@sqlnodeA mysql]# pwd
/usr/local/mysql
[root@sqlnodeA mysql]# ./bin/mysqld_safe -user=mysql &
 
[root@sqlnodeB mysql]# pwd
/usr/local/mysql
[root@sqlnodeB mysql]# ./bin/mysqld_safe -user=mysql &
启动完成后可以用netstat命令,查看3306端口已经启动。
2、启动数据节点。无需启动mysqld服务。
[root@datanodeA ~]# cd /usr/local/mysql/
[root@datanodeA mysql]# ./bin/ndbd
 
[root@datanodeB ~]# cd /usr/local/mysql/
[root@datanodeB mysql]# ./bin/ndbd
3、启动完成,再从管理节点查看下状态
ndb_mgm> 
[root@Management mysql]# ./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.16
8.0.196  (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0, Master)
id=3    @192.168.0.17  (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.199  (mysql-5.1.30 ndb-6.3.20)
[mysqld(API)]   2 node(s)
id=4    @192.168.0.191  (mysql-5.1.30 ndb-6.3.20)
id=5    @192.168.0.133  (mysql-5.1.30 ndb-6.3.20)
ndb_mgm>
可以看到所有节点都链接正常了
4、测试
    1、从SQL节点A登录,创建数据库和表,进行简单测试。
[root@sqlnodeA mysql]# ./bin/mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test               | 
+--------------------+
3 rows in set (0.01 sec)
mysql> create database cluster ;
Query OK, 1 row affected (0.18 sec)
mysql> use cluster ;
Database changed
mysql> create table test1(id int,name varchar(10)) engine=ndb ;
Query OK, 0 rows affected (0.03 sec)
mysql> insert into test1 values(1,'zhaoyun');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1 ;
+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoyun | 
+------+---------+
1 row in set (0.00 sec)
mysql>
现在是在SQL节点A上创建的数据库,下面从SQL节点B登录,查看效果。
[root@sqlnodeB mysql]# ./bin/mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.30-ndb-6.3.20-cluster-gpl MySQL Cluster Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| cluster            | 
| mysql              | 
| test               | 
+--------------------+
4 rows in set (0.00 sec)
mysql> use cluster
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables ;
+-------------------+
| Tables_in_cluster |
+-------------------+
| test1             | 
+-------------------+
1 row in set (0.00 sec)
mysql> select * from test1 ;
+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoyun | 
+------+---------+
1 row in set (0.00 sec)
mysql> show create table test1 ;
+-------+----------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                     |
+-------+----------------------------------------------------------------------------------------------------------------------------------+
| test1 | CREATE TABLE `test1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 | 
+-------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into test1 values(2,'zhao');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1 ;
+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoyun | 
|    2 | zhao    | 
+------+---------+
2 rows in set (0.00 sec)
现在看来,在SQL节点B登录,可以看到sql节点A创建的内容。那么,再从B创建内容看A是否能看到。
mysql> select * from test1 ;
+------+---------+
| id   | name    |
+------+---------+
|    1 | zhaoyun | 
|    2 | zhao    | 
+------+---------+
2 rows in set (0.00 sec)  在A节点也可以看到从B节点插入的数据了。
说明现在sql节点已经工作正常,因为数据存放在数据节点,任何一个坏掉,都不影响使用。

本文转自zhaoyun00 51CTO博客,原文链接: http://blog.51cto.com/zhaoyun/738435

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
930 6
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
249 3
|
关系型数据库 MySQL Java
centos7安装mysql教程及Navicat平替软件
【8月更文挑战第17天】本教程详述CentOS 7上安装MySQL的过程。首先确保移除任何预装的MySQL组件,然后通过wget获取并安装MySQL的YUM源。可以选择安装特定版本如5.7或8.0。安装MySQL服务器后,启动服务并查找初始密码。登录MySQL后应立即更改密码,并可根据需要设置远程访问权限。此外,还推荐使用免费开源的DBeaver作为数据库管理工具,提供了安装步骤以方便管理和操作MySQL数据库。
590 3
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
415 0
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
1095 6
|
存储 负载均衡 关系型数据库
MySQL集群
【8月更文挑战第16天】MySQL集群
370 5
|
SQL 负载均衡 关系型数据库
*配置MySQL集群
【8月更文挑战第16天】*配置MySQL集群
602 2

推荐镜像

更多