数据库

 首页 > 数据库 > mariadb > MySQL服务器集群安装和配置

MySQL服务器集群安装和配置

分享到:
【字体:
导读:
         摘要:一:准备阶段1:节点对应ip管理节点(1个)192.168.88.130SQL节点(2个)192.168.88.130:3308192.168.88.132:3308数据节点(2个)192.168.88.130:192.168.88.132***这三种节点可以配置在不同机器上,也可以配置在一台机器上。有硬件限制使用两台...

MySQL服务器集群安装和配置
一:准备阶段
1:
节点                                     对应ip
管理节点(1个)                         192.168.88.130
SQL节点(2个)                          192.168.88.130:3308  192.168.88.132:3308
数据节点(2个)                         192.168.88.130:      192.168.88.132
***这三种节点可以配置在不同机器上,也可以配置在一台机器上。有硬件限制使用两台服务。
2:mysql版本 mysql-5.1.47.tar.gz

二:安装
1: tar -zxf mysql-5.1.47.tar.gz
2:  cd mysql-5.1.47
3: ./configure --prefix=/usr/local/mysql --localstatedir=/app/mysqlcluster --sysconfdir=/usr/local/mysql/my.cnf  --enable-static --enable-profiling  --enable-local-infile --with-charset=utf8  --with-tcp-port=3308  --with-mysqld-user=mysql --with-plugins=partition,innobase,ndbcluster  --without-plugin-PLUGIN
***ndbcluster 这个引擎必须编译进去
4:make & make install
5: cp ./support-files/my-large.cnf /usr/local/mysql/my.cnf
6: vi /usr/local/mysql/my.cnf
[mysqld]
ndbcluster     #运行NDB存储引擎
ndb-connectstring=192.168.88.130 #指定管理节点
[mysql_cluster]
ndb-connectstring=192.168.88.130
7: /usr/local/mysql/bin/mysql_install_db --user=mysql
***在192.168.88.132服务也做以上操作

三:配置管理节点
1:在192.168.88.130服务器/usr/local/mysql/下创建config.ini
vi config.ini
[NDBD DEFAULT]
NoOfReplicas=1 //每个数据节点的镜像数量
DataMemory=80M  //每个数据节点给数据分配的内存
IndexMemory=40M  //每个数据节点给索引分配的内存
[TCP DEFAULT]
portnumber=2202
[NDB_MGMD]
id=1
hostname=192.168.88.130   //管理节点数据目录
datadir=/app/mysqlcluster
[NDBD]
id=2
hostname=192.168.88.130
datadir=/app/mysqlcluster
[NDBD]
id=3
hostname=192.168.88.132
datadir=/app/mysqlcluster
[MYSQLD]
hostname=192.168.88.130
[MYSQLD]
hostname=192.168.88.132

四:启动管理节点,数据节点和SQL节点
1:/usr/local/mysql/libexec/ndb_mgmd -f /usr/local/mysql/config.ini #启动管理节点
 可以进入 /usr/local/mysql/bin/ndbd_mgm  ,然后使用show 命令 查看管理节点 输出如下:
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.88.130)
id=3 (not connected, accepting connect from 192.168.88.132)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.88.130)
id=5 (not connected, accepting connect from 192.168.88.132)
2 /usr/local/mysql/libexec/ndbd --initial --ndb-connectstring=192.168.88.130:1192  #启动数据节点
 ***第一次启动可以加上--initial 初始化,如果数据节点有数据,再次启动数据节点最好不要加上--initial(除非有备份) ,它会把数据节点上的数据清空。
3 /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/lcoal/mysql/my.cnf --user=mysql &  #启动服务节点
4:查看集群信息
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.88.130  (Version: 5.1.47, Nodegroup: 0, Master)
id=3    @192.168.88.132  (Version: 5.1.47, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4    @192.168.88.130  (Version: 5.1.47)
id=5    @192.168.88.132  (Version: 5.1.47)

五:基本测试
1:SQL节点发生单点故障
  1.1: mysqladmin -h127.0.0.1 -P3308 shutdown  #停止sql节点mysql服务
  1.2:参看一下cluster的状态
  ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.88.130  (Version: 5.1.47, Nodegroup: 0, Master)
id=3    @192.168.88.132  (Version: 5.1.47, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.88.130  (Version: 5.1.47)
[mysqld(API)]   3 node(s)
id=4 (not connected, accepting connect from 192.168.88.130)
id=5    @192.168.88.132  (Version: 5.1.47)
***此时SQL节点断开与cluster的连接。数据节点还是能正常工作。
2:数据节点单点节点故障
  2.1:kill 21794 21793  #在192.168.88.130 上停止NDB进程
  2.2:在任何SQL节点执行
  mysql> select * from t;
  ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER
***此时整个cluster出现问题了,解决这个问题的方法是:在管理节点的配置文件有NoOfReplicas=1
(这个数据节点的数据只要一份)所以修改这个选项设置NoOfReplicas=2,这样把该节点数据镜像一份到其他的节点上。
3:管理节点故障 (mysql5.5可以支持多个管理节点)
  3.1:ndb_mgm> shutdown  或# /usr/local/mysql/bin/ndb_mgm -e shutdown
 ***此时管理节点,数据节点被关闭了,SQL的mysql服务节点没有关闭。
有一个疑问:每当重启管理节点,mysql服务节点不能自动连接上管理节点,怎么让服务节点自动连接上管理节点?
4:mysql cluster 备份
  4.1:ndb_mgm>start backup
  在数据目录生成一个BACKUP目录,在该目录下,有每次备份生成的目录如BACKUP-1(表示第一次备份),在BACKUP-1有三个文件
  BACKUP-1.2.log,BACKUP-1.2.ctl,BACKUP-1-0.2.DATA(.2表示备份id=2的数据节点的数据).此时在192.168.88.132也生成这个文件件
  ,但是是备份id=3的数据节点的数据(。3表示)。
5:mysql cluster 数据恢复
  5.1: /usr/local/mysql/bin/ndb_restore --connect-string=192.168.88.130 --nodeid=2 --backupid=1 --restore_data  --restore_meta --backup_path=/app/mysqlcluster/BACKUP/BACKUP-1     
 [root@localhost /]# /usr/local/mysql/bin/ndb_restore -c host=192.168.88.130:1186 --nodeid=3 --backupid=1   --restore_meta -r /app/mysqlcluster/BACKUP/BACKUP-1
Nodeid = 3
Backup Id = 1
backup path = /app/mysqlcluster/BACKUP/BACKUP-1
Ndb version in backup files: Version 5.1.47
Configuration error: Error : Could not alloc node id at 192.168.88.130 port 1186: No free node id found for mysqld(API).
Failed to initialize consumers
NDBT_ProgramExit: 1 - Failed
***此时恢复出错,提示对mysqld(API)没有空闲节点。解决这个问题可以在管理节点的配置文件添加一个空的
[mysqld]
#空的
 5.2:/usr/local/mysql/bin/ndb_restore --connect-string=192.168.88.130 --nodeid=2 --backupid=1 --restore_data  --restore_meta --backup_path=/app/mysqlcluster/BACKUP/BACKUP-1   
 Nodeid = 2
Backup Id = 1
backup path = /app/mysqlcluster/BACKUP/BACKUP-1
Ndb version in backup files: Version 5.1.47
Connected to ndb!!
Create table `clutest/def/t` failed: 721: Table or index with given name already exists
Restore: Failed to restore table: `clutest/def/t` ... Exiting
NDBT_ProgramExit: 1 - Failed
***此时恢复出错是因为表结构存在,对于数据元存在,只恢复表数据就够了,去除--restore_meta这个选项(恢复数据元)
6:日志管理
 6.1:mysql cluster 提供两种日志:集群日志(clusterlog),节点日志(node log)
 6.2 在集群客户端查看日志状态(clusterlog info),打开(clusterlog on),关闭日志(clusterlog off)
 6.3:cluster中的日志有很多类型(Category(startup, shutdown, statistics,checkpoint noderestart,connnection ,error ,info)
  Priority (1表示“重要”,15 表示“最不重要”) ,Servrity level (alter,critical,error,warning,info,debug) ),
 )
 可以按照类别进行过滤。具体用法:1:node_id clusterlog category=level (用于小于或等于level的优先级将category 事件记录到cluster日志。
 nodeid 可以为all(全部节点)),也可以是某个节点
 2:clusterlog toggle severity_level #过滤severity_level的日志
7:性能测试(期待着)
MySQL服务器集群安装和配置
分享到:
Linux系统中使用rpm包安装MySQL数据库的...
Linux系统中使用rpm包安装MySQL数据库的方法 MySql是开发者最喜欢的数据库系统之一,安装MySql数据库和如何配置就成为了大家关心的话题。尤其是非Windows的安装,更是让不少人头疼不已。 现在有很多网站使用Linux + MySql 。MySql 在Windows下安装和配置都很简单,但是在Linux 安装MySql数据库是有点麻烦,对用...
mssql 2005数据库服务器安全加固
mssql 2005数据库服务器安全加固MSSQL 2005数据库的安全问题受到人们的高度重视。拿到MS SQL 2005还没有一天,总的来说,MS SQL2005的安全性比SQL2000要强上不少,不过默认设置还是有和原来一样的漏洞,下面我们来修改一下默认设置,以确保MSSQL 2005数据库的安全。 拿到MS SQL 2005还没有一天,总的来说,MS SQL2005的安全...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……