mysql cluster安装

官网安装连接

环境说明

节点分布情况:

MGM1:10.1.1.50,
MGM2:10.1.1.51,
MGM3:10.1.1.52

NDBD1:10.1.1.53
NDBD2:10.1.1.56
NDBD2:10.1.1.57

SQL1:10.1.1.50,
SQL2:10.1.1.51,
SQL3:10.1.1.52

下载安装包

先官网下载页面 http://dev.mysql.com/downloads/cluster/ ,选择 Linux - Generic mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz

环境清理(在各台服务器上都要执行)

清除MySQL旧版本:

首先使用如下命令来清理之前操作系统自带的MySQL安装:

yum -y remove mysql

然后使用如下命令:

[root@localhost src]# rpm -qa | grep mysql*
mysql-libs-5.1.61-4.el6.i686
apr-util-mysql-1.3.9-3.el6_0.1.i686

对于找到的2个剩余MySQL包,按照如下的命令格式予以删除:

rpm  -e  --nodeps  mysql-libs-5.1.61-4.el6.i686
rpm  -e  --nodeps  apr-util-mysql-1.3.9-3.el6_0.1.i686

软件准备(在各台服务器上都要执行)

将安装包 上传到各服务器的某个目录下(如 /usr/local/src ) 下面,然后解压并移到 /usr/local/mysql 目录下

tar  -xzvf   /usr/local/src/mysql-cluster-gpl-7.3.5-linux-glibc2.5-i686.tar.gz
mv  /usr/local/src/mysql-cluster-gpl-7.3.5-linux-glibc2.5-i686/*   /usr/local/mysql

新建mysql用户及用户组:

groupadd mysql
useradd -g mysql -s /usr/sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql

安装 My Cluster:

在sql节点上创建目录

cd /home
mkdir mysql
cd mysql
mkdir sql_node sql_node/data sql_node/share
文件权限参考
(444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw-
700 rwx------ 744 rwxr--r-- 755 rwxr-xr-x 777 rwxrwxrwx)
chmod 775 -R ./

安装数据库

cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/sql_node/data

basedir:MYSQL安装文件的目录
datadir:存储数据库文件的目录

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service
chkconfig iptables off

关闭 selinux

vim /etc/selinux/config #(改为SELINUX=disabled)保存退出,

重启服务器

reboot

配置管理节点(192.168.137.101)

rm -rf /etc/my.cnf
vim /etc/config.ini

创建目录并设置权限

cd /home/mysql
mkdir manager manager/data ndb ndb/data
chmod 775 -R ./

config.ini内容如下:

[ndb_mgmd default]
DataDir = /home/mysql/manager/data

[ndbd default]
NoOfReplicas = 3
DataMemory = 2500M
IndexMemory = 800M
DataDir = /home/mysql/ndb/data

StringMemory = 50
MaxNoOfTables = 4096
MaxNoOfOrderedIndexes = 2048
MaxNoOfUniqueHashIndexes = 1024
MaxNoOfAttributes = 24576
MaxNoOfTriggers = 10240

MaxNoOfConcurrentTransactions = 409600
MaxNoOfConcurrentOperations = 3276800
TimeBetweenGlobalCheckpoints = 1000
TimeBetweenEpochs = 100
TimeBetweenWatchdogCheckInitial = 60000
TransactionBufferMemory = 20M
DiskCheckpointSpeed = 20M
DiskCheckpointSpeedInRestart = 100M
TimeBetweenLocalCheckpoints = 20

SchedulerSpinTimer = 400
SchedulerExecutionTimer = 100
RealTimeScheduler = 1

BackupMaxWriteSize = 2M
BackupDataBufferSize = 32M
BackupLogBufferSize = 8M
BackupMemory = 40M

MaxNoOfExecutionThreads = 4
TransactionDeadLockDetectionTimeOut = 15000
BatchSizePerLocalScan = 512
 
LongMessageBuffer = 16M

 
HeartbeatIntervalDbDb = 15000
HeartbeatIntervalDbApi = 15000

FragmentLogFileSize = 256M
NoOfFragmentLogFiles = 16

[mysqld default]

[ndb_mgmd]
NodeId = 1
HostName = 10.1.1.50
[ndb_mgmd]
NodeId = 2
HostName = 10.1.1.51
[ndb_mgmd]
NodeId = 3
HostName = 10.1.1.52
[ndbd]
NodeId = 11  
HostName = 10.1.1.53

[ndbd]
NodeId = 12
HostName = 10.1.1.56

[ndbd]
NodeId = 13
HostName = 10.1.1.57

[mysqld]
NodeId = 20
HostName = 10.1.1.50

[mysqld] 
NodeId = 21
HostName = 10.1.1.51
[mysqld] 
NodeId = 22
HostName = 10.1.1.52

配置数据节点

vim /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring = 10.1.1.50,10.1.1.51,10.1.1.52

[mysql_cluster]
ndb-connectstring = 10.1.1.50,10.1.1.51,10.1.1.52

配置SQL节点创建文件

cd /home/mysql
mkdir sql_node sql_node/data ndb ndb/data
chmod 775 -R ./

开机启动

cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
###systemctl enable mysqld

vim /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /home/mysql/sql_node/data
default-storage-engine = ndbcluster

slow-query-log = on
slow_query_log_file = /home/mysql/sql_node/data/slow-query.log
long_query_time = 5

skip-external-locking
key_buffer_size = 600M
max_allowed_packet = 100M
table_open_cache = 2048
sort_buffer_size = 1024M
net_buffer_length = 8K
read_buffer_size = 400M
read_rnd_buffer_size = 200M

lower_case_table_names =1 
back_log = 384
thread_stack = 256K
join_buffer_size = 500M
thread_cache_size = 200
query_cache_size = 640M
tmp_table_size = 256M
max_connections = 5000
max_connect_errors = 10000000 
wait_timeout = 2880000
interactive_timeout = 2880000
thread_concurrency = 8
max_connections=1000
bind-address=0.0.0.0
skip-name-resolve
ndbcluster
ndb-connectstring = 10.1.1.50,10.1.1.51,10.1.1.52

[mysql_cluster]
ndb-connectstring = 10.1.1.50,10.1.1.51,10.1.1.52

启动节点

启动需要按照如下顺序进行:
Management Node > Data Node > SQL Node

启动管理节点

–initial 首次加载、/usr/local/mysql/etc/config.ini文件有改变,其它时候不要加,除非是在备份、恢复或配置变化后重启时,其他时候不要加,不然数据就清空。。。

/usr/local/mysql/bin/ndb_mgmd  -f  /etc/config.ini --initial

正常启动方式

/usr/local/mysql/bin/ndb_mgmd  -f  /usr/local/mysql/etc/config.ini

#查看ndb_mgmd是否启动

[root@localhost mysql]# ps -ef | grep ndb_mgmd
root      2948     1  1 23:47 ?        00:00:03 /usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/etc/config.ini
root      2984  2073  0 23:52 pts/0    00:00:00 grep ndb_mgmd

#ndb_mgmd默认启动 1186 端口

[root@localhost mysql]# netstat -ntlp | grep ndb_mgmd
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      2948/ndb_mgmd      

#查看集群状态

[root@localhost mysql]# /usr/local/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=11 (not connected, accepting connect from 192.168.137.102)
id=12 (not connected, accepting connect from 192.168.137.103)
 
[ndb_mgmd(MGM)]    1 node(s)
id=1    @192.168.137.101  (mysql-5.6.17 ndb-7.3.5)
 
[mysqld(API)]    3 node(s)
id=81 (not connected, accepting connect from 192.168.137.104)
id=82 (not connected, accepting connect from 192.168.137.105)
id=83 (not connected, accepting connect from any host)
 

启动数据节点

只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!

/usr/local/mysql/bin/ndbd --initial

正常启动方式

/usr/local/mysql/bin/ndbd

查看 ndbd 启动状态

[root@localhost ~]# ps -ef | grep ndbd
root      2373     1  0 18:11 ?        00:00:00 /usr/local/mysql/bin/ndbd
root      2377  1985  0 18:11 pts/0    00:00:00 grep ndbd

启动SQL节点

启动 SQL 节点

systemctl start  mysqld  
如果报
Failed to start mysqld.service: Unit not found
则这样起动:/usr/local/mysql/support-files/mysql.server start

关闭 SQL 节点

systemctl stop  mysqld

重启 SQL 节点

systemctl stop mysqld

检验mysql是否运行

systemctl   status mysqld

为sql指定密码

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
 
/usr/local/mysql/bin/mysqladmin -u root -h 'host' password 'new-password'



授权

/usr/local/mysql/bin/mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'xjkjt@mysql';

flush privileges;

启动命令行窗口

/usr/local/mysql/bin/mysql -u root -p

java连接

jdbc:mysql:loadbalance://10.10.10.176:3306,10.10.10.177:3306/mysq_bb?roundRobinLoadBalance=true
 

问题

确保每个相关节点的机器的1186,2202,3306能telnet

程序都监听ip4
制作开机启动

非集群的表迁移时将引擎换成
ndbcluster

备份与恢复

备份

采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入start backup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点,在数据节点会生成BACKUP文件目录

 /usr/local/mysql/bin/ndb_mgm
 start backup

恢复

单表还原

在某个节点上删除一张表后进行还原

/usr/local/mysql/bin/ndb_mgm
##还原单个表,需要一次在每个数据节点运行以下命令。
ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2
##在后续节点上还原时就不需要指定-m选项来还原metadata,否则还原时会报Restore: Failed to restore table: testdb/def/dept ... Exiting错误

整库还原

#USER MODE 9表示只有一个还原程序通过nodeid为9的api节点连接。
ndb_mgm> ENTER SINGLE USER MODE 9
ndb_mgm> EXIT SINGLE USER MODE
#只有第一个节点还原时要使用-m命令
ndb_restore -c 192.168.1.131 -n 1 -b 1 -m -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 2 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 3 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1
ndb_restore -c 192.168.1.131 -n 4 -b 1 -r --backup_path=/opt/backupfiles/BACKUP-1/1

MySQLClster在线添加节点

增加或减少数据节点的数量和NoOfReplicas有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。
1.首先是在配置文件中添加两个节点的设置,如下:

2。用ndb_mgm工具,停掉管理节点,然后重新启动管理节点
3.执行ndb_mgm进入管理命令界面,找到管理节点的id,然后执行管理节点id stop,退出
执行
4./usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini --reload 重新启动管理节点
5.登陆上去用show命令查看,是否出现了新添加的两个节点!

6.重新分配cluster的数据
SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE =‘NDBCLUSTER’;
ALTERONLINE TABLE table_nameREORGANIZE PARTITION;
alteronline table card_packagereorganize partition;

7.然后通过show命令或者使用ndb_desc命令查看
ndb_desc-c 10.80.30.39 -dbgcarddbcard_package-p
•-c后面跟管理节点的ip,-d跟数据库的名字,table_name为表名,-p输出分区的详细信息

MySQLClster用户权限共享

•在sql节点41上面执行mysql -uroot-p < /usr/local/mysql/share/ndb_dist_priv.sql

•在mysql终端调用名字为mysql_cluster_move_privileges的存储过程,这个存储过程的功能是备份权限表,然后将表的存储引擎转换为ndbcluster引擎。
mysql>CALLmysql.mysql_cluster_move_privileges();

•自动备份权限表

shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql

•验证权限表
mysql>show create tablemysql.user;看engine是否为ndbcluster。

•在41上面加测试账号
mysql>grant all on . to test@‘10.100.200.%’ identified by ‘test123’;

[root@banggo~]#mysql-h10.100.200.39 -utest-ptest123 -P3307;

OK,能连上,测试成功!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁晓山(ben)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值