最近有一位朋友咨询了我一个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初体验相关推荐

  1. MySQL入门学习的第一节(SQL语句)

    MySQL入门学习的第一节(SQL语句) SQL语句

  2. php入门教程ppt,PHP与MySQL入门学习指南.ppt

    <PHP与MySQL入门学习指南.ppt>由会员分享,可在线阅读,更多相关<PHP与MySQL入门学习指南.ppt(18页珍藏版)>请在人人文库网上搜索. 1.PHP5與MyS ...

  3. PyTorch学习笔记:PyTorch初体验

    PyTorch学习笔记:PyTorch初体验 一.在Anaconda里安装PyTorch 1.进入虚拟环境mlcc 2.安装PyTorch 二.在PyTorch创建张量 1.启动mlcc环境下的Spy ...

  4. Python学习笔记:pandas初体验

    Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...

  5. JeecgBoot学习_Online表单初体验

    JeecgBoot学习Online表单初体验 在这几个地方改起来 在页面属性里选择类型 再建一个商品表 为了使得选择有树形结构 我们修改这两处 备注: 1.字典table 填写树控件对应的表名 { 例 ...

  6. MySQL入门学习教程

    文章目录 1.初始MySQL 1.1.为什么学数据库 1.2.什么是数据库 1.3.数据库分类 1.4.MySQL简介 1.5.安装MySQL 1.6.连接数据库 2.操作数据库 2.1.操作数据库 ...

  7. MySQL入门学习之——实战XtraBackup

    1.使用xtrabckup对mysql进行全备 mysql1@hdh-votst2:/mvnobss/users/mysql1>xtrabackup  --defaults-file=mysql ...

  8. Mysql 入门学习总结

    目录: 一.初识Mysql 1. 数据库分类 2. MySQL简介 3. MySQL安装 4. Sqlyog 或者 Navicat for MySQL软件安装 二.操作数据库 1. 操作数据库 2. ...

  9. Web3D 从入门到跑路 · 3D 初体验

    3D初体验 本文整理自老冯于 凹凸 2022 年技术分享,带领大家从案例.应用.技术生态出发,让大家了解一下 3D 在 Web 端的现状. Hey 3D what's up,最近在Web圈混得怎样 在 ...

最新文章

  1. 我的家庭私有云计划-16
  2. python文件的用法_Python文件读写常见用法总结
  3. 人脸识别的灵魂拷问:变胖了怎么办?
  4. 计算机网络中数据的传递过程
  5. vue打包关闭console.log
  6. windows下使用curl以及常用curl命令
  7. dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并
  8. Unity AssetBundle内存管理相关问题
  9. 小白学深度之RNN循环神经网络
  10. 分享一套比较全的Java技术栈,值得参考!
  11. 【已解决】Win 10 切换程序时,默认输入法始终为英文,抓狂,解决办法
  12. C 中用语言描述出下述方法的功能,2015年10月自考《大学语文》模拟试题及答案4...
  13. 毕业就去当网红?先听听8位95后网红的口述
  14. 学习记录之星瞳检测交通标志1
  15. DDR功能点 ODT ZQ校准
  16. MutationObserver监测qrcodejs2二维码生成失败
  17. 三星宣布Bixby拓展到电视洗衣机冰箱上 要把家电统统连接 | CES
  18. 365智能云打印怎么样?365小票无线订单打印机好用吗?
  19. 数据结构 | 二叉树 先根、中根、后根遍历的非递归算法
  20. 人工智能技术发展概述

热门文章

  1. 云南怒江---地狱与天堂的边缘
  2. dowhile实现求水仙花数
  3. 华为Android 10手机微信小程序无法调起的问题解决办法
  4. 数据中心网络布线为大数据时代铺路
  5. 360 度考核的定义和示例
  6. 数据库总结作业数据库设计七
  7. 开源海思开发板(HIVIEW开发板)
  8. 别人都在这个春暖花开的端午节吃粽子,而我在踏青学springboot数据持久化
  9. Three.js-光线投射(raycaster)
  10. 微信小程序设置底部tab选项卡