MySQL Cluster安装与配置
http://dev.mysql.com/downloads/cluster/ 选择 linux generic 下载64位系统用的。 mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86
选择 linux generic 下载64位系统用的。
mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz
开始看结合右侧目录结构树找到了对应的资料:
照着弄。机器只有2台腾讯云的2个微型配置的。
内网地址分别为 10.232.44.174 和 10.232.4.93 分别当一个data node 和 sql node ,前者还用于管理节点。
可以知道这个包解压之后 就相当于 安装普通的mysql tar.gz包 编译安装后的目录。所以直接拿来用。(不然也不应该有400多m)。
tar -C /usr/local mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64.tar.gz
名字太长太丑,做个软链接。多弄几个也行。(之前的环境用阿里云的一个脚本安装的,mysql在 /alidata/server 下,不在/usr/local下。)
ln -s /usr/local/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64 /usr/local/mysql
ln -s /usr/local/mysql-cluster-gpl-7.3.5-linux-glibc2.5-x86_64 /usr/local/mysql-cluster
配置过程中碰到几个坑的问题:
1.因之前装过mysql 所以想用之前的作为sql节点。
(要如何让加载的配置文件、端口号设置成不一样)
开始想独立一个myndb.cnf 但是后来找了好长时间才找到mysqld_safe 启动时有参数 –defaults-file。
后来发现原来的sql目录不能用于集群的sql节点。(可能会很麻烦,不尝试了。)
又在/usr/local/mysql-cluster/ 下按照常规初始化mysql一样。
scripts/mysql_install_db –user=mysql 输出屏幕的信息说明了可以用–defaults-file 指定配置文件.(要多看英文)
2.第二台机器忘了做 mysql_install_db那块操作,加载/etc/myndb.cnf 启动老是报错。看日志/usr/local/mysql-cluster/data/error.err说的一堆plugin 没有。郁闷了好长时间才发现原来没有初始化数据库。
3.新的这个mysqld 启动就看见在管理节点输出 数据节点端口的信息。输出
Forced node shutdown completed. Occured during startphase 0. Initiated by signal 9.
查资料发现是内容不足引起的,想到用 support_files/my-small.cnf 把这个里面mysqld配置的一些参数拷贝过来放这里面再启动就好了。应该是默认占的内容比较大,这垃圾机器本来就没多少内存。
note:
其他关于拷贝 mysql 脚本到 init.d 子类的都没做,因为不想破坏之前装的mysql。启动的话就直接多打点路径,杀掉就 kill 进程号。
为不影响原来的mysqld 设置了不同的socket ,port , 指定目录等参数。
[root@VM_44_174_CentOS ~]# cat /etc/myndb.cnf
[client]
port = 3366
socket = /tmp/mysql_ndb.sock
[mysqld]
# Options for mysqld process:
ndbcluster # run NDB storage engine
basedir=/usr/local/mysql-cluster
datadir=/usr/local/mysql-cluster/data
plugin-dir=/usr/local/mysql-cluster/lib/plugin
user=mysql
log-error=/usr/local/mysql-cluster/data/error.err
pid-file=/usr/local/mysql-cluster/data/pid.pid
socket=/tmp/mysql_ndb.sock
port=3366
#优化占用内存 解决了后来 已启动sql节点 数据节点就断开的情况。因为内存不足了。
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
[mysql_cluster]
# Options for MySQL Cluster processes:
ndb-connectstring=10.232.44.174 # location of management server
管理显示:
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @10.232.44.174 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)
id=3 @10.232.4.93 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.232.44.174 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 @10.232.44.174 (mysql-5.6.17 ndb-7.3.5)
id=5 @10.232.4.93 (mysql-5.6.17 ndb-7.3.5)
管理节点:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster
ndb_msgm
show
如果修改了config.ini 要使重新生效应该mgmd有参数 我没仔细找,直接删除 /var/lib/mysql-cluster/ 下面生成的 ndb开头的所以文件。再启动就生效了。
数据节点:
ndbd –initial
上面mgmd启动之后 就在各数据节点连接,请求分配id。之后再连接就直接 ndbd。
sql节点:
/usr/local/mysql/bin/mysqld_safe –user=mysql &
/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/myndb.cnf & 可以这样指定加载配置文件
mysql -S /tmp/mysql_ndb.sock -uroot -p
sql node: /usr/local/mysql 下执行 或者指定参数 –basedir=/usr/local/mysql –datadir=/usr/local/mysql
scripts/mysql_install_db –user=mysql 再启动
grant all privileges on *.* to ‘wordpress’@'%’ identified by ‘wordpress’;
grant all privileges on *.* to ‘wordpress’@'localhost’ identified by ‘wordpress’;
flush privileges;
关于测试 数据节点和sql节点 某个环节坏了,数据可用性测试过了,,网上很多测试例子。
图文教程:
现在机器mysql信息 ps -ef | grep mysql
[root@VM_44_174_centos ~]# ps -ef |grep mysql
root 3594 1 0 16:06 ? 00:00:56 ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster
root 10331 28967 0 17:48 pts/4 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/myndb.cnf
mysql 10618 10331 0 17:48 pts/4 00:00:21 /usr/local/mysql/bin/mysqld –defaults-file=/etc/myndb.cnf –basedir=/usr/local/mysql-cluster –datadir=/usr/local/mysql-cluster/data –plugin-dir=/usr/local/mysql-cluster/lib/plugin –user=mysql –log-error=/usr/local/mysql-cluster/data/error.err –pid-file=/usr/local/mysql-cluster/data/pid.pid –socket=/tmp/mysql_ndb.sock –port=3366
root 10980 1 0 17:55 pts/4 00:00:00 /bin/sh /alidata/server/mysql/bin/mysqld_safe –datadir=/alidata/server/mysql/data –pid-file=/alidata/server/mysql/data/VM_44_174_centos.pid
mysql 11221 10980 0 17:55 pts/4 00:00:01 /alidata/server/mysql/bin/mysqld –basedir=/alidata/server/mysql –datadir=/alidata/server/mysql/data –plugin-dir=/alidata/server/mysql/lib/plugin –user=mysql –log-error=/alidata/server/mysql/data/VM_44_174_centos.err –pid-file=/alidata/server/mysql/data/VM_44_174_centos.pid –socket=/tmp/mysql.sock –port=3306
root 11413 31036 0 18:00 pts/1 00:00:00 mysql -S /tmp/mysql_ndb.sock
root 13980 28967 0 19:53 pts/4 00:00:00 grep mysql
推荐阅读