欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL Cluster安装与配置

程序员文章站 2022-05-28 09:49:12
...

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