博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql-cluster集群搭建步骤
阅读量:4352 次
发布时间:2019-06-07

本文共 5352 字,大约阅读时间需要 17 分钟。

 

1.从官网下载mysql-cluster安装包:

2.解压安装包

#上传到服务器目录/usr/softwares并解压tar -xzvf mysql-cluster-gpl-7.5.15-linux-glibc2.12-x86_64.tar.gz#新建/usr/local/mysql目录mkdir /usr/local/mysql#将解压的文件重命名为mysql,并放到/usr/local/mysql目录下 mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql

 

3.配置安装管理节点

  1)新增管理节点命令

#将文件ndb_mgm和ndb_mgmd拷贝到/usr/local/bin/目录下cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ #ndb_mgm,ndb客户端命令#ndb_mgmd,ndb管理节点启动命令#ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便的检查Cluster的状态、启动备份、关闭Cluster等功能。

  2)修改管理节点的配置文件

#创建数据库集群配置文件的目录mkdir /var/lib/mysql-cluster #创建并编辑配置文件vim /var/lib/mysql-cluster/config.ini [ndbd default]NoOfReplicas=2 #数据节点的个数DataMemory=512MIndexMemory=64M [ndb_mgmd] #管理节点NodeId=1hostname=192.168.17.130datadir=/var/lib/mysql-cluster/ [ndbd] #数据节点NodeId=2hostname=192.168.17.131datadir=/usr/local/mysql/data/[ndbd]NodeId=3hostname=192.168.17.132datadir=/usr/local/mysql/data/ [mysqld] #sql节点NodeId=4hostname=192.168.17.133[mysqld]NodeId=5hostname=192.168.17.134

[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。

NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。

[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。

[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。

[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。

  3)启动管理节点

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。

 

3.配置安装数据节点

  1)配置my.cnf文件

[mysqld]datadir=/usr/local/mysql/databasedir=/usr/local/mysqlcharacter_set_server=utf8 [mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid [mysql_cluster]ndb-connectstring=192.168.17.130:1186

  2)新增用户和权限

#分别添加mysql组和mysql用户groupadd mysqluseradd mysql -g mysql #进入mysql目录cd /usr/local/mysql/ #把mysql的目录设置成所有者为rootchown -R root . #创建data目录,并把data目录设置所有者为mysqlmkdir datachown -R mysql data #把mysql的目录改成所属组为mysqlchgrp -R mysql .

  3)安装数据库

#执行安装脚本,初始化数据库./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ #注意其中用户为mysql的名称需要跟配置文件my.cnf中的user=mysql相同#另外,这里一定要把--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 加上,#否则会最后启动MySQL服务的时候会出现"table mysql.plugin doesn't exist","Can\'t open the mysql.plugin table. Please run mysql_upgrade to create it."错误,以及"PID"获取失败的错误

在安装的打印信息最后,有首次登陆的密码,需要特别注意;

  4)设置mysqld服务开机自启

#加入到service服务cp support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqld #加入到开机自启动列表chkconfig --add mysqld

  5)修改数据库密码

#启动数据库[root@localhost bin]# service mysqld start #进入客户端[root@localhost bin]# ./mysql -uroot -pEnter password:这里输入之前的临时密码 #修改密码mysql> set password=password('新密码'); #注意此密码必须要与其他服务器上的数据库设置的密码相同

  6)启动数据节点

cd /usr/local/mysql./bin/ndbd --initial #非第一次启动,命令如下./bin/ndbd

安装后第一次启动数据节点时要加上--initial参数。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

4.配置安装sql节点

  1)配置my.cnf文件

[mysqld]ndbclusterdatadir=/usr/local/mysql/databasedir=/usr/local/mysqlcharacter_set_server=utf8default-storage-engine=ndbclusterport=3306 [mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid [mysql_cluster]ndb-connectstring=192.168.17.130:1186

  2)安装mysql数据库

  3)启动sql节点

service mysqld start

如果提示:mysql:mysql is neither service nor target!?报错,则执行:

systemctl unmask mysqldservice mysql start

 

5.测试

  1)管理节点查看

ndb_mgm ndb_mgm> showCluster Configuration---------------------[ndbd(NDB)]    2 node(s)id=2    @192.168.17.131  (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)id=3    @192.168.17.132  (mysql-5.7.23 ndb-7.6.7, Nodegroup: 1) [ndb_mgmd(MGM)]    1 node(s)id=1    @192.168.17.130  (mysql-5.7.23 ndb-7.6.7) [mysqld(API)]    2 node(s)id=4    @192.168.17.133  (mysql-5.7.23 ndb-7.6.7)id=5    @192.168.17.134  (mysql-5.7.23 ndb-7.6.7)

  2)测试数据

#登陆数据库cd /usr/local/mysql./bin/mysql -uroot -pEnter password:输入密码 #创建数据库mytestmysql> create database mytest; #切换到mytest数据库mysql> use mytest; #创建表结构sys_myfirstmysql> create table sys_myfirst(id varchar(36) primary key, name varchar(100), memo varchar(255)); #在sys_myfirst中添加几条数据mysql> insert into sys_myfirst(id, name, memo) values('1','test1','hello world!');mysql> insert into sys_myfirst(id, name, memo) values('2','test2','hello world haha!');mysql> insert into sys_myfirst(id, name, memo) values('3','test3','hello world hehe!'); #查看数据mysql> select * from sys_myfirst;+----+-------+-------------------+| id | name  | memo              |+----+-------+-------------------+| 2  | test2 | hello world haha! || 1  | test1 | hello world!      || 3  | test3 | hello world hehe! |+----+-------+-------------------+3 rows in set (0.00 sec)

  3)在另一个sql节点查询

#这里就省去登陆mysql客户端的步骤了#查看数据mysql> select * from sys_myfirst;+----+-------+-------------------+| id | name  | memo              |+----+-------+-------------------+| 1  | test1 | hello world!      || 3  | test3 | hello world hehe! || 2  | test2 | hello world haha! |+----+-------+-------------------+3 rows in set (0.00 sec)

 

6.启动和停止管理节点

启动顺序:管理节点—数据节点—sql节点

停止顺序:管理节点(会同时停止管理节点和数据节点)—sql节点

停止管理节点:

#第一种方法ndb_mgm -e shutdown #第二种方法ndb_mgmndb_mgm> shutdown;

停止sql节点:

service mysqld stop

 

7.数据存放位置

在数据节点上通过lsof -c ndb命令(以root身份运行)来找出包含ndb进程所有打开的文件,

发现其真正存储数据的位置在mysql/data/ndb_3_fs/下面(3数字是config.ini的节点id),

各个文件夹中的文件是以16.7M为单位存储的,临时文件达到16.7M后就另起一个。

 

参考文档:

1.mysql-cluster集群搭建:

2.增加管理节点:

3.增加数据节点:

4.官方文档:

5.mysqlcluster+haproxy+keepalived

 

转载于:https://www.cnblogs.com/zzdbullet/p/11475641.html

你可能感兴趣的文章
SPOJ 1811 LCS [后缀自动机]
查看>>
BZOJ 3527: [Zjoi2014]力 [快速傅里叶变换]
查看>>
LeetCode Palindrome Permutation II
查看>>
LeetCode Minimum Index Sum of Two Lists
查看>>
linux学习系列三
查看>>
细看Thread的 start() 和 run()方法
查看>>
Maven项目无法添加到tomcat
查看>>
查看公司工商注册信息
查看>>
小tip: 使用SVG寥寥数行实现圆环loading进度效果
查看>>
科技发展潮流
查看>>
Reactor-反应器模式
查看>>
Object的wait/notify/notifyAll&&Thread的sleep/yield/join/holdsLock
查看>>
MVC3+EntityFramework实践笔记
查看>>
一个漂亮的 PlaceHolder
查看>>
jq 中.html(),.text()和.val()的总结
查看>>
ACE OLEDB 12.0连接方式
查看>>
Stack,( Aizu - ALDS1_3_A)
查看>>
javascript_17-基本类型和引用类型
查看>>
django paginator 分页功能
查看>>
java arrayList vector 区别
查看>>