赞
踩
系统环境:centos7
管理节点:192.168.127.128
数据节点:192.168.127.145,192.168.127.146
sql节点:192.168.127.145,192.168.127.146
创建mysql用户,将程序部署到/home/mysql 目录下
数据节点、sql节点必须卸载mariadb
管理节点 创建/var/lib/mysql/mysql-cluster 目录,且mysql账户有读写权限
[ndbd default] NoOfReplicas=2 [ndb_mgmd] NodeId=1 hostname=192.168.127.128 datadir=/home/mysql/mysql-cluster/ [ndbd] NodeId=2 hostname=192.168.127.145 datadir=/home/mysql/data/ [ndbd] NodeId=3 hostname=192.168.127.146 datadir=/home/mysql/data/ [mysqld] NodeId=4 hostname=192.168.127.145 [mysqld] NodeId=5 hostname=192.168.127.146
./bin/ndb_mgmd -f ./config.ini --initial
./bin/ndb_mgm -e shutdown
其中mysql_cluster节点为数据节点的配置,其他的为mysql节点的配置
[client] socket=/home/mysql/mysql.sock [mysqld] basedir=/home/mysql datadir=/home/mysql/data socket=/home/mysql/mysql.sock user=mysql symbolic-links=0 ndbcluster ndb-connectstring=192.168.127.128 [mysqld_safe] log-error=/home/mysql/mysqld.log pid-file=/home/mysql/mysqld.pid [mysql_cluster] ndb-connectstring=192.168.127.128
第一次启动需要加 --initial 参数
./bin/ndbd --initial
(1)初始换数据:
./bin/mysqld --initialize
(2)启动mysql
./bin/mysqld_safe --user=mysql &
(3) 登录mysql修改root账户密码
set password for 'root'@'localhost' = password('123456')
grant all privileges on *.* to 'root'@'%' identified by '123456'
(4)mysqld 关闭
Kill 掉mysqld_safe进程即可
再次启动需要删除 mysql.sock、mysqld.pid、mysql.sock.lock 文件
管理节点>数据节点>sql节点(必须等上级所有节点启动后才能启动下级节点)
管理节点>数据节点>sql节点
一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的。一次需要增加2n个数据节点、或者2n个sql节点(n>=1)
在config.ini 中增加sql节点或者数据节点
执行ndb_mgm进入管理命令界面
找到管理节点的id,然后执行 管理节点id stop,退出
./bin/ndb_mgmd -f ./config.ini --reload
滚动重启旧的数据存储节点服务(滚动重启,不能所有节点同时重启,如果同时停止,数据库前端查询就会出现错误)
ndb_mgm> [ndb_id] restart
滚动重启所有的数据查询节点服务:可以将mysqld_safe的启动、关闭写成shell脚本,通过脚本重启mysql服务
kill_mysqld_safe.sh
#!/bin/bash sp_pid=`ps -ef | grep mysqld_safe | grep -v grep | awk '{print $2}'` if [ -z "$sp_pid" ] then echo "[ not find mysqld_safe pid ]" else echo "find result: $sp_pid " kill -9 $sp_pid fi spm_pid=`ps -ef | grep mysqld | grep -v grep | awk '{print $2}'` if [ -z "$spm_pid" ] then echo "[ not find mysqld pid ]" else echo "find result: $spm_pid" kill -9 $spm_pid fi rm -f mysql.sock rm -f mysql.sock.lock rm -f mysqld.pid echo "remove mysql.sock,mysqld.pid,mysql.sock.lock"
kill_ndbd.sh
#!/bin/bash
sp_pid=`ps -ef | grep ndbd | grep -v grep | awk '{print $2}'`
if [ -z "$sp_pid" ]
then
echo "[ not find ndbd pid ]"
else
echo "find result: $sp_pid "
kill -9 $sp_pid
fi
start_mysqld_safe.sh
#!/bin/bash
./bin/mysqld_safe --user=mysql &
start_ndbd.sh
#!/bin/bash
./bin/ndbd &
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。