Oracle Linux6.5安装配置MySQL Cluster 7.3.7
[size=18pt]MySQL Cluster 7.3.7 For Oracle Linux6.5
[size=18pt]
一、MySQL-Cluster 简介:[font=Tahoma, sans-serif] MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的集群。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求,适合于分布式计算环境的高实用、高冗余版本。 此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster 将标准的 MySQL 服务器与名为 NDB 的“内存中”集群式存储引擎集成了起来。其中术语“ MySQL cluster ”指的是 MySQL 和 NDB 存储引擎的组合。 二、MySQL-Cluster 特性:[font="] 1、 通过自动分片实现高水平的写入扩展能力 ,MySQL Cluster 自动将表分片(或分区)到不同节点上,使数据库可以在低成本的商用硬件上横向扩展,同时保持对应用程序完全应用透明。 2、 99.999% 的可用性,凭借其分布式、无共享架构, MySQL Cluster 可提供 99.999% 的可用性,确保了较强的故障恢复能力和在不停机的情况下执行预定维护的能力。 3、SQL 和 NoSQL API ,MySQL Cluster 让用户可以在解决方案中整合关系数据库技术和 NoSQL 技术中的最佳部分,从而降低成本、风险和复杂性。 4、实时性能, MySQLCluster 提供实时的响应时间和吞吐量,能满足最苛刻的 Web 、电信及企业应用程序的需求。 5、具有跨地域复制功能的多站点集群,跨地域复制使多个集群可以分布在不同的地点,从而提高了灾难恢复能力和全球 Web 服务的扩展能力。 6、联机扩展和模式升级 ,为支持持续运营, MySQL Cluster 允许向正在运行的数据库模式中联机添加节点和更新内容,因而能支持快速变化和高度动态的负载。
三、MySQL-Cluster 架构图: [img=321,400]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image001.jpg[/img] 由上图可分为三类节点,在最低的MySQL cluster 配置中,至少有三个节点,这三类节点分别是: 管理 节点(MGM):这类节点的作用是管理 MySQL 集群内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。数据节点(NDB): 这类节点用于保存集群的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有 4 个数据节点。 SQL节点(SQLDB): 这是用来访问集群数据的节点。对于 MySQL 集群,客户端节点是使用 NDB 集群存储引擎的传统 MySQL 服务器。 font-k�n:�x8�yspan lang=EN-US>SQL 和 NoSQL API ,MySQL Cluster 让用户可以在解决方案中整合关系数据库技术和 NoSQL 技术中的最佳部分,从而降低成本、风险和复杂性。
4、实时性能, MySQLCluster 提供实时的响应时间和吞吐量,能满足最苛刻的 Web 、电信及企业应用程序的需求。 5、具有跨地域复制功能的多站点集群,跨地域复制使多个集群可以分布在不同的地点,从而提高了灾难恢复能力和全球 Web 服务的扩展能力。
6、联机扩展和模式升级 ,为支持持续运营, MySQL Cluster 允许向正在运行的数据库模式中联机添加节点和更新内容,因而能支持快速变化和高度动态的负载。 四、硬件环境: 需要至少5台机器 : #管理节点(1台)192.168.3.101 MGMDB#存储节点(2台)192.168.3.102 NDB1192.168.3.103 NDB2#SQL节点(2台)192.168.3.104 SQLDB1192.168.3.105 SQLDB2五、软件环境: 操作系统: Oracle Linux6( 64 位) Mysql 版本: MySQL-Cluster-gpl-7.3.7-1.el6.x86_64(RPM) 六、安装准备: 1. 解压MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm-bundle.tar : 将解压后的MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm 分发至每台机器; 将解压后的MySQL-Cluster-client-gpl-7.3.5-1.el6.x86_64.rpm 分发至 SQL节点; 2. 清理旧的 Mysql 安装: rpm -qa |grep mysql 对于找到的mysql 包,请按照如下的命令格式予以删除: rpm-e --nodeps mysql-libs-5.1.71-1.el6.x86_64 rpm-e --nodeps mysql-server-5.1.71-1.el6.x86_64 rpm-e --nodeps mysql-devel-5.1.71-1.el6.x86_64 rpm-e --nodeps mysql-5.1.71-1.el6.x86_64 rpm-e --nodeps qt-mysql-4.6.2-26.el6_4.x86_64[font=Tahoma, sans-serif] 3. 安装依赖库: 在光盘上找到 libaio 的RPM包位置,执行: rpm–Uvh libaio* 4. 取消Linux服务器防火墙及安全配置: l 关闭防火墙:查询防火墙状态 iptables –L停止防火墙运行状态 serviceiptables stop禁用防火墙 chkconfigiptables offl 关闭安全访问控制:查询SELinux状态 getenforce修改SELinux状态 vi/etc/selinux/config SELINUX=disabled SELINUXTYPE=targeted重新启动机器 5. 配置主机: vi /etc/hosts 127.0.0.1 localhost192.168.3.101 mgmdb192.168.3.102 ndb1192.168.3.103 ndb2192.168.3.104 sqldb1192.168.3.105 sqldb2七、安装 MySQL Cluster 1.上传MySQL-Cluster-server-gpl-7.3.5-1.el6.x86_64.rpm到每台机器: scpMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm ndb1:~/scpMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm ndb2:~/scpMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm sqldb1:~/scpMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm sqldb2:~/2. 在每台机器上安装rpm -UvhMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm 安装后会提示默认密码存放在 /root/.mysql_secret 文件中 [font=Tahoma, sans-serif] [img=557,370]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.jpg[/img] 3. 在 SQLDB1 、SQLDB2 节点上传客户端:scpMySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm sqldb1:~/scpMySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm sqldb2:~/4. 在 SQLDB1 、SQLDB2 节点安装客户端: rpm -Uvh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm 八、配置MySQL Cluster 1.配置管理节点在MGMDB节点上执行: [font=Tahoma, sans-serif] mkdir/var/lib/mysql-cluster[font=Tahoma, sans-serif]
cd /var/lib/mysql-cluster
vi config.ini
[ndbd default]
# Options affecting ndbd processeson all data nodes:
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # Howmuch 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 bemore than enough for
# this example Clustersetup.
[ndb_mgmd]
# Management process options:
hostname=mgmdb # Hostname or IP address of MGMnode
datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles
[ndbd]
# Options for data node"A":
# (one [ndbd] section per data node)
hostname=ndb1 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
[ndbd]
# Options for data node"B":
hostname=ndb2 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
[mysqld]
# SQL node options:
hostname=sqldb1 # Hostname or IP address
# (additional mysqld connections canbe
# specified for this node forvarious
# purposes such as runningndb_restore)
[mysqld]
hostname=sqldb2 2.配置存储节点数据目录:在存储节点ndb1 、ndb2上执行: mkdir -p /usr/local/mysql/data 3.配置SQL 节点运行目录 在 SQL 节点sqldb1 、sqldb2上执行:[font=Tahoma, sans-serif]
mkdir-p /var/run/mysqld/
chmod-R 777 /var/run/mysqld/ [font=Tahoma, sans-serif] 4.设置配置文件 在所有存储节点(ndb1、ndb2)和 SQL 节点(sqldb1、sqldb2)上建立配置文件:vi /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
max_connections=100
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ndbcluster
ndb-connectstring=mgmdb
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-pold=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=mgmdb ## Manager Node
九、启动MySQL Cluster1. 启动管理节点mgmdb: [font=Tahoma, sans-serif] ndb_mgmd -f /var/lib/mysql-cluster/config.ini[font=Tahoma, sans-serif] 2. 启动存储节点ndb1 ndb2: [font=Tahoma, sans-serif] ndbd --initial[font=Tahoma, sans-serif] [font=Tahoma, sans-serif] 初次启动时需要加[font=Tahoma, sans-serif] --initial 参数,以后只需要执行[font=Tahoma, sans-serif]ndbd 即可;3. 启动 SQL 节点sqldb1sqldb2: [font=Tahoma, sans-serif] nohup mysqld_safe --explicit_defaults_for_timestamp&4.检查所有节点是否正常启动:在管理节点mgmdb中执行 ndb_mgm 进入集群管理 console, 使用 show 命令列出所有节点信息: [img=577,359]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image004.jpg[/img] 十、MySQL Cluster测试及使用1.修改 root 用户密码: 在每个 SQL 节点(sqldb1 sqldb2)中执行:[font=Tahoma, sans-serif] mysqladmin -uroot -pOLDPASSWORD password 'newpassword'[font=Tahoma, sans-serif] 其中 OLDPASSWORD 为 /root/.mysql_secret 中生成的:[font=Tahoma, sans-serif] [root@dp03 ~]#cat /root/.mysql_secret[font=Tahoma, sans-serif] [img=572,141]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image006.jpg[/img][font=Tahoma, sans-serif] [img=570,128]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image008.jpg[/img][font=Tahoma, sans-serif] 2. 测试集群数据库同步情况: 在 sqldb1 上登陆 mysql: mysql -u root –pszcport2014[img=577,264]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image010.jpg[/img] [img=573,332]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image012.jpg[/img] 在 sqldb2 上登陆 mysql: mysql -u root –pszcport2014[img=600,478]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image014.jpg[/img] 3. 测试集群数据表同步情况: 在 sqldb1 上登陆mysql: mysql> use szcport;mysql> CREATE TABLE test (i INT)ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败mysql> INSERT INTO test VALUES(1);mysql> SELECT * FROM test;[font=Tahoma, sans-serif][img=567,396]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image016.jpg[/img] 在 sqldb2 上登陆mysql: use szcport;SELECT * FROM test;[font=Tahoma, sans-serif][img=567,302]file:///C:/DOCUME~1/ADMINI~2.LEN/LOCALS~1/Temp/msohtmlclip1/01/clip_image018.jpg[/img][font=Tahoma, sans-serif] [font=Tahoma, sans-serif]
十一、常用命令
[font=Tahoma, sans-serif] 1) ndb_mgmd 管理命令:[font=Tahoma, sans-serif] ndb_mgm[font=Tahoma, sans-serif]
执行之后就是管理控制台了,里面可以继续输入命令。[font=Tahoma, sans-serif]
查看集群里面的全部节点的状态:[font=Tahoma, sans-serif]show[font=Tahoma, sans-serif]
2) 停止集群服务器的命令:[font=Tahoma, sans-serif] ndb_mgm -e shutdown[font=Tahoma, sans-serif]
如果集群配置有更新了:[font=Tahoma, sans-serif]rm /usr/mysql-cluster/ndb_1_config.bin.1[font=Tahoma, sans-serif]
3) 停止[font=Tahoma, sans-serif] SQL 节点的命令:[font=Tahoma, sans-serif] mysqladmin -urootshutdown[font=Tahoma, sans-serif]
4) SQL Node 上连接[font=Tahoma, sans-serif] MySQL :[font=Tahoma, sans-serif] mysql -u root –pPASSWORD[font=Tahoma, sans-serif]
执行之后就是[font=Tahoma, sans-serif] MySQL 控制台了,里面可以继续输入命令。