您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > MySQL集群+LVS+KEEPALIVED环境搭建
MySQL+lvs+keepalived集群环境搭建1MySQL集群简介1.1什么是MySQL集群MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。了解更多:集群MySQL中名称概念1)Sql结点(SQLnode—下图对应为mysqld):分布式数据库。包括自身数据和查询中心结点数据2)数据结点(Datanode–ndbd):集群共享数据(内存中)3)管理服务器(ManagementServer–ndb_mgmd):集群管理SQLnode,Datanode详情见下图:1.3环境配置1)至少2台Linux服务器,后面的例子是3台Linux服务器A:192.168.1.179ManagementServerB:192.168.1.136Datanode、SQLnodeC:192.168.1.10Datanode、SQLnode如果只有2台的话,那么其中一台机器就要多一个角色:ManagementServer2)MySQL集群版本安装程序,分32位和64位版本,最新版本请在里面下载2安装不管是ManagementServer,还是Datanode、SQLnode,都需要先安装MySQL集群版本,然后根据不用的配置来决定当前服务器有哪几个角色。安装之前准备好mysql用户和mysql用户组,相关命令:groupaddmysqluseraddmysql-gmysql确定相关机器的防火墙已关闭(或者设置防火墙这几台机器之间的网络连接是畅通无阻的),相关命令:chkconfigiptablesoffserviceiptablesstop2.1安装MySQL集群版本1)把mysql-cluster-advanced-7.3.2-linux-glibc2.5-i686.tar.gz(这是32位安装版,64位安装版:mysql-cluster-advanced-7.3.2-linux-glibc2.5-x86_64.tar.gz)上传到/usr/local2)解压:tarzxvfmysql-cluster-advanced-7.3.2-linux-glibc2.5-i686.tar.gz3)重命名:mvmysql-cluster-advanced-7.3.2-linux-glibc2.5-i686mysql4)授权:chown-Rmysql:mysqlmysql5)切换到mysql用户:su–mysql6)切换目录到mysql:/usr/local/mysql7)安装mysql:scripts/mysql_install_db--user=mysql2.2配置ManagementServer1)使用root账号创建目录:mkdir/var/lib/mysql-cluster2)新建文件config.ini然后上传到mysql-cluster里面:[ndbddefault]NoOfReplicas=2DataMemory=80MIndexMemory=18M[ndb_mgmd]Hostname=192.168.2.128datadir=/var/lib/mysql-cluster[ndbd]Hostname=192.168.2.129datadir=/usr/local/mysql/data/[ndbd]Hostname=192.168.2.24datadir=/usr/local/mysql/data/[MYSQLD]Hostname=192.168.2.24[MYSQLD]Hostname=192.168.2.129[MYSQLD]3)授权:chown-Rmysql:mysql/var/lib/mysql-cluster4)切换到mysql用户:su–mysql5)启动管理服务:/usr/local/mysql/bin/ndb_mgmd-f/var/lib/mysql-cluster/config.ini6)查看服务是否正常启动:netstat–lntpu打印:tcp000.0.0.0:11860.0.0.0:*LISTEN2437/ndb_mgmd看到1186端口开放了说明启动是正常的2.3配置DataNode1)新建文件my.cnf然后上传到/etc里面:[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES#basedir=/usr/local/mysql/datadir=/usr/local/mysql/data#user=mysql#port=3306#socket=/tmp/mysql.sockndbclusterndb-connectstring=192.168.2.128[mysql_cluster]ndb-connectstring=192.168.2.128(*网上有些资料是直接改/usr/local/mysql/my.cnf,我试了一下,无法启动,估计程序默认是读取/etc/my.cnf)2)切换到mysql用户:su–mysql3)启动数据节点服务:/usr/local/mysql/bin/ndbd–initial第一次启动需要加参数:–initial,以后就不用加了,直接运行:/usr/local/mysql/bin/ndbd4)查看服务是否正常启动:netstat–lntpu打印:tcp00192.168.2.24:568060.0.0.0:*LISTEN4949/ndbdtcp00192.168.2.24:448940.0.0.0:*LISTEN4949/ndbdtcp00192.168.2.24:505310.0.0.0:*LISTEN4949/ndbd看到ndbd了说明启动是正常的2.4配置SQLNode1)新建文件my.cnf然后上传到/etc里面,和上面的DataNode里面的配置一样,如果上面的步骤已经做了,略去此步骤。2)切换到mysql用户:su–mysql3)设置管理员密码:/usr/local/mysql/bin/mysqladmin-urootpassword'123'/usr/local/mysql/bin/mysqladmin-uroot-hLINUX129password'123'上面的命令行里面的123是新密码,LINUX129是机器名,这2条命令来自于安装mysql执行:scripts/mysql_install_db--user=mysql后的打印日志4)复制mysqld到系统服务里面去:cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld如果权限不够,可以先使用root用户授权:chown-Rmysql:mysql/etc/init.d/mysqld5)启动SQL节点服务:servicemysqldstart或者/etc/init.d/mysqldstart或者/usr/local/mysql/bin/mysqld_safe--user=mysql&6)查看服务是否正常启动:netstat–lntpu打印:tcp00:::3306:::*LISTEN2590/mysqld看到3306端口开放了说明启动是正常的3常用命令或问题1)ndb_mgmd管理命令:/usr/local/mysql/bin/ndb_mgm执行之后就是管理控制台了,里面可以继续输入命令。查看集群里面的全部节点的状态:show2)停止集群服务器的命令:/usr/local/mysql/bin/ndb_mgm-eshutdown或者在ndb_mgm下查看服务IDshow看到相应的ID号使用IDSTOP停止服务如果集群配置有更新了:rm/usr/local/mysql/mysql-cluster/ndb_1_config.bin.13)停止SQL节点的命令:/usr/local/mysql/bin/mysqladmin-urootshutdown4)SQLNode上连接MySQL:/usr/local/mysql/bin/mysql-uroot–p执行之后就是MySQL控制台了,里面可以继续输入命令。测试集群环境:mysqlshowdatabases;打印:+--------------------+|Database|+--------------------+|information_schema||mysql||ndb_2_fs||test|+--------------------+mysqlcreatedatabaseaa;mysqluseaamysqlCREATETABLEctest2(iINTprimarykey)ENGINE=NDB;//1.每个MySQL集群表都需要主键.如果没有定义主键,则NDB存储引擎会自动创建一个,并且不是指定USINGHASH的方式;2.这里必须指定数据库表的引擎为NDB(或者NDBCLUSTER),否则同步失败mysqlINSERTINTOctest2()VALUES(1);mysqlSELECT*FROMctest2;打印:+------+|i|+------+|1|+------+同样方式在另外一台SQLNode上连接MySQL,查看数据库、表、记录是否已同步过去。5)解决MySQL客户端工具连接SQLNode出现1130的异常,在MySQL控制台下执行:如果你想myuser使用mypassword从任何主机连接到mysql服务器的话。GRANTALLPRIVILEGESON*.*TO'myuser'@'%'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;FLUSHPRIVILEGES;如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码GRANTALLPRIVILEGESON*.*TO'myuser'@'192.168.1.3'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;FLUSHPRIVILEGES;如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码GRANTALLPRIVILEGESONdk.*TO'myuser'@'192.168.1.3'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;FLUSHPRIVILEGES;6)使用MySQL客户端工具创建表时选择引擎:NDBCLUSTER,如下图:LVS配置lvs是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡。它是基于linux内核实现的。2.6.X内核默认集成了lvs模块。lvs常用负载均衡的实现是基于ip协议的,所以一般称为ipvs。ipvs有三种实现方式,最常用、性能最好的是Directrouting(简称DR)。Ubuntu9.10已经用了2.6的内核,所以不需要再编译内核了,为了检测一下,可
本文标题:MySQL集群+LVS+KEEPALIVED环境搭建
链接地址:https://www.777doc.com/doc-4963378 .html