热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL的集群配置的基本命令使用及一次操作过程实录_MySQL

这篇文章主要介绍了MySQL的集群配置过程中的基本命令使用,实录中给出了两个节点连接的例子,更多的话同理:)需要的朋友可以参考下
1. 先了解一下你是否应该用MySQL集群。

减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持在各自分布的MySQL数据库本身中。

2015113094520716.png (583×372)

2. 集群MySQL中名称概念.(如上图)

1)Sql结点(SQL node--上图对应为MySQLd):分布式数据库。包括自身数据和查询中心结点数据.

2)数据结点(Data node -- ndbd):集群共享数据(内存中).

3)管理服务器(Management Server – ndb_mgmd):集群管理SQL node,Data node.

3.配置

MySQL-max版本,当然现在MySQL集群系统windonws平台上面不被支持.

安装MySQL就不多说了,网上一大堆,简明扼要。

  • A:192.168.1.251 – Data node和Management Server.
  • B:192.168.1.254 – SQL node.

当然,你也可以让一个机器同时为3者。

A,B my.inf加上:

[MySQLD]             
ndbcluster           # run NDB engine 
ndb-cOnnectstring=192.168.1.251 # location of MGM node 
  
# Options for ndbd process: 
[MySQL_CLUSTER]         
ndb-cOnnectstring=192.168.1.251 # location of MGM node 
  
A: /var/lib/MySQL-cluster/config.ini 
[NDBD DEFAULT]   
NoOfReplicas=1  # Number of replicas 
DataMemory=80M  # How much memory to allocate for data storage 
IndexMemory=18M # How much memory to allocate for index storage 
         # For DataMemory and IndexMemory, we have used the 
         # default values. Since the "world" database takes up 
         # only about 500KB, this should be more than enough for 
         # this example Cluster setup. 
# TCP/IP options: 
[TCP DEFAULT]   
portnumber=2202 # This the default; however, you can use any 
         # port that is free for all the hosts in cluster 
         # Note: It is recommended beginning with MySQL 5.0 that 
         # you do not specify the portnumber at all and simply allow 
         # the default value to be used instead 
# Management process options: 
[NDB_MGMD]            
hostname=192.168.1.251     # Hostname or IP address of MGM node 
datadir=/var/lib/MySQL-cluster # Directory for MGM node logfiles 
# Options for data node "A": 
[NDBD]              
# (one [NDBD] section per data node) 
hostname=192.168.1.251     # Hostname or IP address 
datadir=/usr/local/MySQL/data # Directory for this data node's datafiles 
# SQL node options: 
[MySQLD] 
hostname=192.168.1.254 
#[MySQLD] #这个相当于192.168.1.251 


4. 启动测试

在管理服务器上面(这里是192.168.1.251):

shell>ndb_mgmd -f /var/lib/MySQL-cluster/config.ini 

在数据结点服务器上面(依然是192.168.1.251and more):

shell>ndbd--initial 

(第一次时加--initial参数)
SQL结点服务器上面(192.168.1.254):

shell>MySQLd & 

在251上面察看

./ndb_mgm 


-- NDB Cluster -- Management Client -- 
ndb_mgm> show 
Connected to Management Server at: 192.168.1.251:1186 
Cluster Configuration 
--------------------- 
[ndbd(NDB)]  1 node(s) 
id=2  @192.168.1.251 (Version:5.0.22, Nodegroup: 0, Master) 
  
[ndb_mgmd(MGM)] 1 node(s) 
id=1  @192.168.1.251 (Version:5.0.22) 
  
[MySQLd(API)] 1 node(s) 
id=3  @192.168.1.254 (Version:5.0.22) 
ok

关闭集群:

shell>ndb_mgm -e shutdown 

5.基本的集群说明

1)在MySQL集群中.当table引擎为NDBCLUSTER时才做集群,其他非NDBCLUSTER表和一般MySQL数据库表一样,不会共享数据. NDBCLUSTER表数据存储在Data node服务器内存中,Data Node可以为1台或多台服务器,它们之间存放共享数据。Data Node服务器可以分组数据copy。

例如:2,3,4,5为四台Data Node服务器ID. 2,3为组0。 4,5为组1。 2,3维持数据相同,4,5维持数据相同。 组0和组1维持数据不同。

2)sql node服务器中,非NDBCLUSTER数据存在本身数据库中,table引擎为NDBCLUSTER时,数据存储在Data Node中。当查询NDBCLUSTER表时,它会从Data node集群中提起数据.

3)Manager server

管理SQl node和Data node状态。

附:MySQL集群配置详细过程录制
1、准备三台linux服务器(三台机器进行如下配置)
--hostname配置
192.168.9.241 sqltest01 (mysqld及存储节点)
192.168.9.242 sqltest02 (mysqld及存储节点)
192.168.9.243 sqltest03
其中,sqltest01、sqltest02分别是mysql节点及存储节点,sqltest03为管理节点
--同时,把防火墙进行关闭或者把相关的端口打开,如3306,管理节点的1186等

[root@sqltest01 u01]# service iptables status

iptables: Firewall is not running.

如果开启的,请使用service iptables stop
--创建相应的用户及目录

[root@sqltest01 u01]# groupadd mysql
[root@sqltest01 u01]# useradd -r -g mysql mysql
[root@sqltest01 u01]# mkdir -p /usr/local/mysql
[root@sqltest01 u01]# chown -R mysql.mysql

2、mysql cluster
下载网址:dev.mysql.com,然后选择cluster,然后在网页中出现的选择平台中,选择linux generic!在这里选择所需要tar包,我这里用的是mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz
下载完成后,使用ftp传送到服务器上面,然后分别在三台机器上解压

[root@sqltest01 u01]# tar -zxvf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz

mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/have_plugin_auth.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/kill_query.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/unsafe_binlog.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/have_multi_ndb.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/ipv6_clients.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/setup_fake_relay_log.inc
mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64/mysql-test/include/wait_for_slave_sql_error_and_skip.inc
......................................................................................................

解压后,里面包括了数据库文件以及集群软件
3、配置管理节点(sqltest03)
--将刚才解压的软件拷贝到指定位置/usr/local/mysql

[root@sqltest03 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# pwd
/u01/mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64
[root@sqltest03 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# mv * /usr/local/mysql/

--创建集群目录

[root@sqltest03 u01]# cd /usr/local/mysql
[root@sqltest03 mysql]# mkdir mysql-cluster
[root@sqltest03 mysql]# pwd
/usr/local/mysql
[root@sqltest03 mysql]# cp bin/ndb_mgm* /usr/local/bin/
[root@sqltest03 mysql]# cd /var/lib
[root@sqltest03 mysql]# mkdir mysql-cluster
[root@sqltest03 mysql]# cd mysql-cluster
[root@sqltest03 mysql]# vi config.ini

配置内容如下:

[root@sqltest03 mysql-cluster]# cat config.ini 
[ndbd default]
NoOfReplicas=1
DataMemory=2048M
IndexMemory=512M
[tcp default]
[ndb_mgmd]
hostname=192.168.9.243
datadir=/var/lib/mysql-cluster
NodeId=1
[ndbd]
hostname=192.168.9.241
datadir=/u01/mysql/data
NodeId=2
[ndbd]
hostname=192.168.9.242
datadir=/u01/mysql/data
NodeId=3
[mysqld]
hostname=192.168.9.241
NodeId=4
[mysqld]
hostname=192.168.9.242
NodeId=5

配置说明:
[ndbd default]
这部分是公共部分,对于每一个数据节点都有效,只需要配置一份
NoOfReplicas=1
数据镜像几份(各数据节点之间相互备份)
[tcp default]
针对每个数据节点及管理节点之间使用哪个端口进行通讯,在旧版本的NDB集群软件配置时,这个地方通常配置portnumber=2202但新版的NDB软件这里不需要配置,并且MySQL官方也强烈建议不要配置
[ndb_mgmd]
管理节点的配置部分(通常只有一个)。注意NodeId=1指明管理节点的节点ID为1,如果不指定,在启动集群时,会报错
hostname=192.168.9.243
指明管理节点的IP地址
datadir=/var/lib/mysql-cluster
指明集群管理日志存放的位置
[ndbd]
数据节点配置部分,有几个数据节点就配置几个[ndbd]
hostname=192.168.1.111
指明数据节点的IP地址
datadir=/u01/app/mysql/data
指明数据节点上的数据库文件存放的位置
NodeId=2
指明该数据节点在整个集群中的nodeid号(很重要)
[mysqld]
SQL节点配置部分,有几个SQL节点,就配置几个[mysqld]
到这里,就可以启动集群了

[root@sqltest03 bin]# pwd
/usr/local/bin
[root@sqltest03 bin]# ./ndb_mgmd -f /var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.6.21 ndb-7.3.7

进入执行查看

[root@sqltest03 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.9.241)
id=3 (not connected, accepting connect from 192.168.9.242)
[ndb_mgmd(MGM)] 1 node(s)
id=1  @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
[mysqld(API)]  2 node(s)
id=4 (not connected, accepting connect from 192.168.9.241)
id=5 (not connected, accepting connect from 192.168.9.242)

可以看到有两个节点,节点没有连接上
4、配置mysqld节点及存储节点(sqltest01,sqltest02)
--建立相应目录

[root@sqltest01 mysql]# mkdir -p /usr/local/mysql  --用于存放刚才解压的文件,如mysql的bin目录等
[root@sqltest01 mysql]# mkdir -p /u01/mysql/data --用于存储数据文件(innodb)
[root@sqltest01 mysql]# chown -R mysql.mysql /u01

--将先前解压的文件拷贝

[root@sqltest01 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# pwd
/u01/mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64
[root@sqltest01 mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64]# mv * /usr/local/mysql/
[root@sqltest01 mysql]# chown -R mysql.mysql /usr/local/mysql/

--拷贝mysql.server

[root@sqltest01 support-files]# pwd
/usr/local/mysql/support-files
[root@sqltest01 support-files]# ls -lrt
total 32
-rw-r--r--. 1 mysql mysql  773 Oct 9 21:46 magic
-rwxr-xr-x. 1 mysql mysql 10880 Oct 9 22:42 mysql.server
-rwxr-xr-x. 1 mysql mysql  894 Oct 9 22:42 mysql-log-rotate
-rwxr-xr-x. 1 mysql mysql 1061 Oct 9 22:42 mysqld_multi.server
-rw-r--r--. 1 mysql mysql 1126 Oct 9 22:42 my-default.cnf
-rwxr-xr-x. 1 mysql mysql 1153 Oct 9 22:42 binary-configure
[root@sqltest01 support-files]# cp mysql.server /etc/rc.d/init.d/mysqld

--编辑环境变量

[root@sqltest01 tmp]# vi /etc/profile

添加如下:

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

export PATH

[root@sqltest01 tmp]# source /etc/profile 

--使修改生效
--配置my.cnf

[root@sqltest01 support-files]# cp my-default.cnf /etc/my.cnf

并对my.cnf进行配置,具体配置如下

[mysqld]
ndbcluster
basedir=/usr/local/mysql
datadir=/u01/mysql/data
port=3306
[mysql_cluster]
ndb-cOnnectstring=192.168.9.243

--初始化节点数据库

[root@sqltest01 mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/u01/mysql/data

执行完这条命令以后,数据库的数据文件(包括mysql,test , performance_schema等数据库),就安装到相应的位置了,可以使用了
在两个节点都执行上面的步骤即可
5、在两个点启动

[root@sqltest01 mysql]# ndbd --initial

2014-12-24 17:55:57 [ndbd] INFO   -- Angel connected to '192.168.9.243:1186'
2014-12-24 17:55:57 [ndbd] INFO   -- Angel allocated nodeid: 2

第一次启动时,需要加--initial来初始化数据节点,第二次启动时,就不需要这个参数了
在管理节点查看,可以看到第一个节点已经连接

ndb_mgm> show

Cluster Configuration
---------------------
[ndbd(NDB)]   2 node(s)
id=2  @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, starting, Nodegroup: 0)  --表明已经连接上了
id=3 (not connected, accepting connect from 192.168.9.242)
[ndb_mgmd(MGM)] 1 node(s)
id=1  @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
[mysqld(API)]  2 node(s)
id=4 (not connected, accepting connect from 192.168.9.241)
id=5 (not connected, accepting connect from 192.168.9.242)

启动mysqld

[root@sqltest01 mysql]# cd /usr/local/mysql/bin
[root@sqltest01 bin]# ./mysqld_safe --user=mysql

141224 17:59:50 mysqld_safe Logging to '/u01/mysql/data/sqltest01.err'.
141224 17:59:51 mysqld_safe Starting mysqld daemon with databases from /u01/mysql/data

启动数据库时,第一次初始化使用的root,而这次使用mysql,需要对/u01/mysql/data权限进行配置,否则报不可读写
再次在管理节点查看

ndb_mgm> show

Cluster Configuration
---------------------
[ndbd(NDB)]   2 node(s)
id=2  @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
id=3 (not connected, accepting connect from 192.168.9.242)
[ndb_mgmd(MGM)] 1 node(s)
id=1  @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
[mysqld(API)]  2 node(s)
id=4  @192.168.9.241 (mysql-5.6.21 ndb-7.3.7)   

--表明已经连接上了
最后把第二节点也启动,再次从管理节点检查

ndb_mgm> show

Cluster Configuration
---------------------
[ndbd(NDB)]   2 node(s)
id=2  @192.168.9.241 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
id=3  @192.168.9.242 (mysql-5.6.21 ndb-7.3.7, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1  @192.168.9.243 (mysql-5.6.21 ndb-7.3.7)
[mysqld(API)]  2 node(s)
id=4  @192.168.9.241 (mysql-5.6.21 ndb-7.3.7)
id=5  @192.168.9.242 (mysql-5.6.21 ndb-7.3.7)

6、在两个节点测试

[root@sqltest01 ~]# mysql -uroot -p

Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.21-ndb-7.3.7-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database mydb1;
Query OK, 1 row affected (0.07 sec)
mysql> use mydb1;
Database changed
mysql> create table mytb1(id int,birthdate datetime,pername char(10)) engine=ndbcluster;
Query OK, 0 rows affected (0.19 sec)

mysql> insert into mytb1(id,birthdate,pername) values(1,'2013-01-23 09:45:10','pengzitong');

Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into mytb1(id,birthdate,pername) values(2,'2007-07-09 09:45:10','pengzixin');
Query OK, 1 row affected (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

在第二节点检查

[root@sqltest02 ~]# mysql -uroot -p

Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.21-ndb-7.3.7-cluster-gpl MySQL Cluster Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mydb1
mysql> select * from mytb1;
+------+---------------------+------------+
| id  | birthdate      | pername  |
+------+---------------------+------------+
|  1 | 2013-01-23 09:45:10 | pengzitong |
|  2 | 2007-07-09 09:45:10 | pengzixin |
+------+---------------------+------------+

7、集群停止
要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:

[root@sqltest03 bin]# /usr/local/mysql/ndb_mgm -e shutdown

运行以下命令关闭SQL节点的mysqld服务:

[root@sqltest01 bin]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
author-avatar
czx_91_673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有