门户网站开发 南宁,海宁网站开发,3d动画制作教程视频,创业商机真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同#xff0c;它采用 无共享架构Shared nothing#xff08;shared nothing architecture#xff09;。整个集群由管理节点(ndb_mgmd)#xff0c;处理节点(mysqld)和存储节点(ndbd)组… 真机环境下MySQL-Cluster搭建文档 MySQL Cluster简介 MySQL cluster 和 Oracle RAC 完全不同它采用 无共享架构Shared nothingshared nothing architecture。整个集群由管理节点(ndb_mgmd)处理节点(mysqld)和存储节点(ndbd)组 成不存在一个共享的存储设备。MySQL cluster 主要利用了 NDB 存储引擎来实现NDB 存储引擎是一个内存式存储引擎要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上每个存储节点只保存完整数据的一个分片(fragment)。同时用户可以设置同一份数据保存在多个不同的存储节点上以保证单点故障不会造 成数据丢失。MySQL cluster 主要由 3 各部分组成 SQL 服务器节点NDB 数据存储节点监控和管理节点这样的分层也是与 MySQL 本身把 SQL 处理和存储分开的架构相关系的。MySQL cluster 的优点在于其是一个分布式的数据库集群处理节点和存储节点都可以线性增加整个集群没有单点故障可用性和扩展性都可以做到很高更适合 OLTP 应用。但是它的问题在于 NDB“NDB” 是一种“内存中”的存储引擎它具有可用性高和数据一致性好的特点。 存储引擎必须要求数据全部加载到内存之中限制比较大但是目前 NDB 新版本对此做了改进允许只在内存中加 载索引数据数据可以保存在磁盘上。 目前的 MySQL cluster 的性能还不理想因为数据是按照主键 hash 分布到不同的存储节点上如果应用不是通过主键去获取数据的话必须在所有的存储节点上扫描 返回结果到处理节点上去处理。而且写操作需要同时写多份数据到不同的存储节点上 对 节点间的网络要求很高。虽然 MySQL cluster 目前性能还不理想但是 share nothing 的架构一定是未来的趋势Oracle 接手 MySQL之后也在大力发展 MySQL cluster我对 MySQL cluster 的前景抱有很大的期待。 回到顶部 mysql-cluster构造 安装mysql-cluster首先要了解cluster的构造,Cluster大体上是由管理节点mgmd、数据节点ndbd、sql节点mysqld组成的。 回到顶部 虚拟机安装centos6.6 系统要求 内存4G最少4G CPU需要支持VT 如果你是笔记本用户那么cpu虚拟化可能是关闭的请在BIOS下设置virtualization 为enable 新建虚拟机选择典型安装点击下一步 点击下一步 这里用户名最好是mysql因为后面要用到。设置成其他用户也可以。 下一步 位置就是保存这个虚拟centos系统的位置 下一步 选择如图所示下一步 选择自定义硬件建议最好每个虚拟机分配1G的内存。每个cent最少分配512M内存。 点击完成就可以了。 虚拟机安装完成后用root权限进入。密码和mysql账户的密码相同。 回到顶部 mysql-cluster下载 www.mysql.com/downloads/cluster 选择linux-generic下的版本 根据你的cent的系统选择32or64 回到顶部 centos6.6搭建环境配置 首先进入linux终端右键桌面如图所示 Open in terminal终端 安装mysql-cluster前首先要卸载原有系统自带的mysql 联网卸载终端下执行命令 #yum remove mysql 手动清理终端下执行命令 #rpm –qa|grep mysql* 这条是查询系统中存在的mysql #rpm –e –nodeps mysql-libs-5.1.71-1.el6.x86_64 (不同版本的centos这个版本也不同) 回到顶部 mysql-cluster安装包导入cent中 首先查询需要导入的cent的ip地址终端下输入 #ifconfig 如图所示其中inet addr192.168.191.129就是这个cent的ip地址。 下载软件winscp 打开软件 新建站点主机名就是cent 的ip 用户名使用root 点击登录输入密码连接成功 左边是windows右边是cent Cent下进入目录/usr/local/src 把你的mysql-cluster安装文件放在这个目录下 打开cent终端 添加mysql用户和组如果前面安装虚拟机的时候使用的用户是mysql则跳过此步骤 添加mysql用户 1. # groupadd mysql 2. # useradd mysql -g mysql 安装mysql-cluster 7.4.4-linux 1. # cd /usr/local/src/已下载好集群版 2. # tar -xvf mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64.tar.gz 3. # mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64 ../mysql 4. # cd .. 5. # chown -R mysql:mysql mysql/ 6. # cd mysql 7. # scripts/mysql_install_db --usermysql 当出现这个页面则mysql-cluster安装成功 以上步骤是安装mysql-cluster必须步骤所有机器都要进行以上的步骤 回到顶部 集群配置 首先进行管理节点的配置(终端输入) # vi /var/lib/mysql-cluster/config.ini 目录和文件没有请新建添加以下内容 1. [NDBD DEFAULT] 2. NoOfReplicas2 3. [TCP DEFAULT] 4. portnumber3306 5. 6. [NDB_MGMD] 7. #设置管理节点服务器 8. nodeid1 9. HostName192.168.191.132 管理节点服务器ip地址 10. DataDir/var/mysql/data 11. 12. [NDBD] 13. nodeid2 14. HostName192.168.191.130 ndbd点ip地址 15. DataDir/var/mysql/data 16. 17. [MYSQLD] 18. nodeid3 19. HostName192.168.191.131 (mysqld节点ip地址) 20. [MYSQLD] 21. nodeid4 22. HostName192.168.191.133 (mysqld节点ip地址) 23. 24. #必须有空的mysqld节点不然数据节点断开后启动有报错 25. [MYSQLD] 26. nodeid5 27. [mysqld] 28. nodeid6 以上内容输入完毕后按ESC输入wq即可保存退出 拷贝ndb_mgm、ndb_mgmd、config.ini到bin目录。 # cd /usr/local/mysql/bin # cp ./ndb_mgm /usr/local/bin/ # cp ./ndb_mgmd /usr/local/bin/ # cp /var/lib/mysql-cluster/config.ini /usr/local/bin/ 数据节点配置终端输入 # vi /etc/my.cnf 添加以下内容 [mysqld] datadir/var/mysql/data socket/var/mysql/mysql.sock usermysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links0 #运行NDB存储引擎 ndbcluster #指定管理节点 ndb-connectstring192.168.191.132 (管理节点ip) [MYSQL_CLUSTER] ndb-connectstring192.168.191.132 (管理节点ip) [NDB_MGM] connect-string192.168.191.132 (管理节点ip) [mysqld_safe] log-error/var/mysql/log/mysqld.log pid-file/var/run/mysqld/mysqld.pid Sql节点配置(终端输入) # cd /usr/local/mysql/ 设置mysql服务为开机自启动 # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod x /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # vi /etc/my.cnf 添加以下内容 [mysqld] datadir/var/mysql/data socket/var/mysql/mysql.sock usermysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links0 log-bin /var/mysql/log/mysql-bin.log max_connections1000 #以下为mysql 主主模式的配置文件 # 忽略mysql数据库复制 binlog-ignore-dbmysql # 每次增长2 auto-increment-increment2 # 设置自动增长的字段的偏移量即初始值为2 auto-increment-offset1 ndbcluster ndb-connectstring192.168.191.132 管理节点ip [MYSQL_CLUSTER] ndb-connectstring192.168.191.132 管理节点ip [NDB_MGM] connect-string192.168.191.132 管理节点ip [mysqld_safe] log-error/var/mysql/log/mysqld.log pid-file/var/run/mysqld/mysqld.pid 这里要注意在var目录下新建mysql目录在新建的mysql目录下建立log和data目录 另外要给这两个目录授权代码如下 # cd /var # chown –R mysql:mysql mysql/ 下面两个命令是对mysql命令的一个link否则无法使用mysql命令 # Ln –s /usr/local/mysql/bin/mysql /usr/bin # Ln –s /var/mysql/mysql.sock /tmp/mysql.sock 回到顶部 运行mysql-cluster mysql集群的启动顺序为管理节点-数据节点-SQL节点 mysql集群的关闭顺序为管理节点-数据节点-SQL节点 打开服务的时候注意防火墙问题 注意把管理节点的防火墙关闭 命令如下 # /etc/init.d/iptables stop 首先打开管理节点服务 # ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial注意第一次或者对config文件进行修改后打开服务一定要加上initial否则新增加的内容不会被使用 然后打开ndbd节点服务 # /usr/local/mysql/bin/ndbd --initial此处同上 出现一下信息表示ndbd节点启动成功. 2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to 10.32.33.120:1186 2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 36 最后打开两个sql节点131和133 #service mysqld start 出现mysql success表示服务启动成功 打开管理节点终端输入 # ndb_mgm #ndb_mgm show 显示以下信息则mysql-cluster安装部署成功 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id2 192.168.191.130 (mysql-5.5.20 ndb-7.4.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id1 192.168.191.132 (mysql-5.5.20 ndb-7.4.4) [mysqld(API)] 4 node(s) id3 192.168.191.131 (mysql-5.5.20 ndb-7.4.4) id4 192.168.191.133 (mysql-5.5.20 ndb-7.4.4) id5 (not connected, accepting connect from any host) id6 (not connected, accepting connect from any host) 可以看到各个节点已经连接上了。 以下是关于mgm相关的命令 # ndb_mgm # ndb_mgm show 查看各节点情况。 # ndb_mgm all report memory 查看各数据节点使用情况 # ndb_mgmcreate nodegroup 3创建数据节点分组 # mysql alter online table data_house reorganize partition; 调整分区数据 # ndb_mgmshutdown关闭节点 # ndb_mgmexit退出 回到顶部 常见问题 Mysqld端服务无法启动 [rootlocalhost Desktop]#service mysqld start Starting mysql.the service quit without updating PID file (/[FAILED]/var/mysql/log/localhost.localdomain.pid). 先去查看日志 #cd /var/mysql/data #less localhost.localdomain.err 如果错误是 Fatal errorcan’t open and lock privilege tables:Table’mysql.user’ doesn’t exist 解决方法 终端输入 到mysql目录下/usr/local/mysql 输入 Scripts/mysql_install_db –usermysql(初始化数据库即可) 其他问题请注意查看问题所在的文件夹权限问题 回到顶部 测试 1、从SQL节点131登录创建数据库和表进行简单测试。 mysql create database tltest ; mysql use tltest; Database changed mysql create table test1(id int,name varchar(10)) enginendb ; mysql insert into test1 values(1,tl); mysql select * from test1 ; --------------- | id | name | --------------- | 1 | tl | --------------- 登陆133节点查看效果库表和数据已经同步。 从133节点插入一条数据同样登陆131也能看到数据已经同步。