MySQL入门学习之——MySQL Cluster初体验
最近有一位朋友咨询了我一个MySQL Cluster的问题,实话实说,这个东东我还没玩过,不过既然遇到了它,那么就开始体验一把吧。朋友的问题如下:
“MySQL集群是不是只能新增数据同步,而不能减少数据呢?例如 三个节点 A ,B ,C ,A是管理节点,B 与C 是SQL节点 数据节点,B 新增数据库和表 ,C 也就新增了,但 B 删除数据和表后, C 没有跟着删除,什么原因? 这不就和master 同步一样了,怎么做才是分布式存储的?”
接下来抱着这个疑问来部署并体验一把MySQL Cluster,整个部署步骤如下:
*****************************************************************************
0.环境介绍
主机名 IP地址 角色
hadoop1 10.1.245.72 管理节点
hadoop2 10.1.245.73 Data节点1
hadoop3 10.1.245.74 Data节点2
hadoop2 10.1.245.73 SQL节点1
hadoop3 10.1.245.74 SQL节点2
1.下载MySQL Cluster
wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz
2.配置SQL nodes(hadoop2~hadoop3)
2.1 创建用户
groupadd -g 312 mysql
mkdir -p /aifs01/users
useradd -u 312 -g mysql -d /aifs01/users/mysql mysql
passwd mysql --stdin <<<oracle< oracle</oracle<>
2.2 解压软件包
tar -C /opt/freeware -xzvf /opt/freeware/mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz
ln -s /opt/freeware/mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64 /opt/freeware/mysql
2.3 初始化数据库
cd /opt/freeware/mysql
scripts/mysql_install_db --user=mysql
2.4 设置data目录权限
chown -R root .
chown -R mysql data
chgrp -R mysql .
2.5 配置SQL nodes
vi /etc/my.cnf
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
[mysql_cluster]
# Options for MySQL Cluster processes:
ndb-connectstring=10.1.245.72 # location of management server
2.6 配置mysql服务开机自启动
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
3.配置Data nodes(hadoop2~hadoop3)
3.1 拷贝程序到默认的PATH路径
cp bin/ndbd /usr/local/bin/ndbd
cp bin/ndbmtd /usr/local/bin/ndbmtd
cd /usr/local/bin
chmod +x ndb*
3.2 创建数据节点的数据目录
mkdir -p /aifs01/users/mysql/ndb-data
chown -R mysql:mysql /aifs01/users/mysql/ndb-data
4.配置管理节点(hadoop1)
4.1 解压软件包
cd /opt/freeware
tar -zxvf mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz
cd mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64
cp bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
4.2 配置管理节点
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # 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 default]
# TCP/IP options:
portnumber=2202 # This the default; however, you can use any
# port that is free for all the hosts in the cluster
# Note: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
[ndb_mgmd]
# Management process options:
hostname=10.1.245.72 # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd]
# Options for data node "A":
# (one [ndbd] section per data node)
hostname=10.1.245.73 # Hostname or IP address
datadir=/aifs01/users/mysql/ndb-data # Directory for this data node's data files
[ndbd]
# Options for data node "B":
hostname=10.1.245.74 # Hostname or IP address
datadir=/aifs01/users/mysql/ndb-data # Directory for this data node's data files
[mysqld]
# SQL node options:
hostname=10.1.245.73 # Hostname or IP address
hostname=10.1.245.74
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
5.初始化启动MySQL Cluster
5.1 启动管理节点
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
5.2 启动Data nodes
ndbd
5.3 启动SQL nodes
bin/mysqld_safe &
6.测试MySQL Cluster
6.1 查看集群状态
[root@hadoop1 mysql-cluster]# 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 @10.1.245.73 (mysql-5.6.28 ndb-7.3.12, Nodegroup: 0, *)
id=3 @10.1.245.74 (mysql-5.6.28 ndb-7.3.12, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.245.72 (mysql-5.6.28 ndb-7.3.12)
[mysqld(API)] 2 node(s)
id=4 @10.1.245.73 (mysql-5.6.28 ndb-7.3.12)
id=5 @10.1.245.74 (mysql-5.6.28 ndb-7.3.12)
注:从show命令输出看到data nodes和sql nodes的信息,说明整个集群配置成功
6.2 在SQL node1上模拟新增数据
[root@hadoop2 bin]# ./mysql -uroot -p -S /var/lib/mysql/mysql.sock -s
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ndbinfo |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database clusterdb;
Query OK, 1 row affected (0.05 sec)
mysql> use clusterdb
Database changed
mysql> create table t(id int);
Query OK, 0 rows affected (0.20 sec)
mysql> insert into t values(1),(2),(3);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
mysql> create table t_cluster(id int);
Query OK, 0 rows affected (0.37 sec)
mysql> drop table t_cluster;
Query OK, 0 rows affected (0.96 sec)
mysql> create table t_cluster(id int) engine=ndb;
Query OK, 0 rows affected (0.85 sec)
mysql> insert into t_cluster values(4),(5),(6);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t_cluster;
+------+
| id |
+------+
| 6 |
| 5 |
| 4 |
+------+
3 rows in set (0.00 sec)
6.3 在SQL node2查看数据
[root@hadoop3 bin]# ./mysql -uroot -p -S /var/lib/mysql/mysql.sock
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| clusterdb |
| mysql |
| ndbinfo |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> use clusterdb
Database changed
mysql> show tables;
+---------------------+
| Tables_in_clusterdb |
+---------------------+
| t_cluster |
+---------------------+
1 row in set (0.00 sec)
mysql> select * from t_cluster;
+------+
| id |
+------+
| 4 |
| 6 |
| 5 |
+------+
3 rows in set (0.00 sec)
注:从SQL node2上也可以查询到一致的数据(当然前提是针对ndb引擎的表,非ndb引擎只能在当前sql node查看到数据)
6.4 在SQL node2上模拟删除数据
--SQL node2上执行删除操作
mysql> delete from t_cluster;
Query OK, 3 rows affected (0.10 sec)
mysql> drop table t_cluster;
Query OK, 0 rows affected (0.24 sec)
--SQL node1上的操作
mysql> select * from t_cluster;
Empty set (0.00 sec)
mysql> select * from t_cluster;
ERROR 1146 (42S02): Table 'clusterdb.t_cluster' doesn't exist
注:从SQL node1上同样可以查询到一致的数据视图
总结:整个Mysql Cluster是由三部分组成的,管理节点,SQL节点以及数据节点。管理节点负责管理整个集群并且维护节点成员之间的关系。数据节点自然是存储整个集群的数据,SQL节点作为对整个集群操作的入口,对集群的增删查改都是通过SQL节点来完成的,所以当你无论你通过哪一个SQL节点操作集群,集群给你展示的数据视图是一致的,底层的数据分布由数据节点来控制,对上层应用来说是透明的。 最后附上Mysql Cluster的架构图,加强对其的理解。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-1983428/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20801486/viewspace-1983428/
MySQL入门学习之——MySQL Cluster初体验相关推荐
- MySQL入门学习的第一节(SQL语句)
MySQL入门学习的第一节(SQL语句) SQL语句
- php入门教程ppt,PHP与MySQL入门学习指南.ppt
<PHP与MySQL入门学习指南.ppt>由会员分享,可在线阅读,更多相关<PHP与MySQL入门学习指南.ppt(18页珍藏版)>请在人人文库网上搜索. 1.PHP5與MyS ...
- PyTorch学习笔记:PyTorch初体验
PyTorch学习笔记:PyTorch初体验 一.在Anaconda里安装PyTorch 1.进入虚拟环境mlcc 2.安装PyTorch 二.在PyTorch创建张量 1.启动mlcc环境下的Spy ...
- Python学习笔记:pandas初体验
Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...
- JeecgBoot学习_Online表单初体验
JeecgBoot学习Online表单初体验 在这几个地方改起来 在页面属性里选择类型 再建一个商品表 为了使得选择有树形结构 我们修改这两处 备注: 1.字典table 填写树控件对应的表名 { 例 ...
- MySQL入门学习教程
文章目录 1.初始MySQL 1.1.为什么学数据库 1.2.什么是数据库 1.3.数据库分类 1.4.MySQL简介 1.5.安装MySQL 1.6.连接数据库 2.操作数据库 2.1.操作数据库 ...
- MySQL入门学习之——实战XtraBackup
1.使用xtrabckup对mysql进行全备 mysql1@hdh-votst2:/mvnobss/users/mysql1>xtrabackup --defaults-file=mysql ...
- Mysql 入门学习总结
目录: 一.初识Mysql 1. 数据库分类 2. MySQL简介 3. MySQL安装 4. Sqlyog 或者 Navicat for MySQL软件安装 二.操作数据库 1. 操作数据库 2. ...
- Web3D 从入门到跑路 · 3D 初体验
3D初体验 本文整理自老冯于 凹凸 2022 年技术分享,带领大家从案例.应用.技术生态出发,让大家了解一下 3D 在 Web 端的现状. Hey 3D what's up,最近在Web圈混得怎样 在 ...
最新文章
- 我的家庭私有云计划-16
- python文件的用法_Python文件读写常见用法总结
- 人脸识别的灵魂拷问:变胖了怎么办?
- 计算机网络中数据的传递过程
- vue打包关闭console.log
- windows下使用curl以及常用curl命令
- dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并
- Unity AssetBundle内存管理相关问题
- 小白学深度之RNN循环神经网络
- 分享一套比较全的Java技术栈,值得参考!
- 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
- C 中用语言描述出下述方法的功能,2015年10月自考《大学语文》模拟试题及答案4...
- 毕业就去当网红?先听听8位95后网红的口述
- 学习记录之星瞳检测交通标志1
- DDR功能点 ODT ZQ校准
- MutationObserver监测qrcodejs2二维码生成失败
- 三星宣布Bixby拓展到电视洗衣机冰箱上 要把家电统统连接 | CES
- 365智能云打印怎么样?365小票无线订单打印机好用吗?
- 数据结构 | 二叉树 先根、中根、后根遍历的非递归算法
- 人工智能技术发展概述