搭建mysql NDB集群
ndb群集安装
介绍
ndbcluster
(也称为ndb
)是一种内存存储引擎,提供高可用性和数据持久性功能。
的ndbcluster
存储引擎可以与一系列故障切换和负载平衡选项进行配置,但最简单的是开始在集群级别的存储引擎。ndb cluster的ndb
存储引擎包含一整套数据,仅依赖于群集本身内的其他数据。
ndb群集 的“ 群集 ”部分的配置独立于mysql服务器。在ndb群集中,群集的每个部分都被视为一个 节点。
共有三种类型的群集节点,并且在最小的ndb群集配置中,将至少有三个节点,这些类型之一:
-
管理节点:这种类型的节点的作用是管理ndb群集中的其他节点,执行诸如提供配置数据,启动和停止节点以及运行备份之类的功能。由于此节点类型管理其他节点的配置,因此应首先启动此类型的节点,然后再启动任何其他节点。使用命令ndb_mgmd启动一个mgm节点 。
-
数据节点:这种类型的节点存储集群数据。
ndb群集表通常完全存储在内存中,而不是磁盘上(这就是为什么我们将ndb群集称为 内存数据库)。但是,某些ndb群集数据可以存储在磁盘上。
-
sql节点:这是访问集群数据的节点。对于ndb群集,sql节点是使用
ndbcluster
存储引擎的传统mysql服务器 。sql节点实际上只是api节点的一种特殊类型 ,它指定访问ndb群集数据的任何应用程序。api节点的另一个示例是用于还原集群备份的 ndb_restore实用程序。可以使用ndb api编写此类应用程序。
1、资源规划
节点 |
ip地址 |
硬件资源 |
系统 |
|
|
管理节点(mgmd) |
192.168.137.128 |
1cpu、1g内存 |
centos7 |
|
|
管理节点(mgmd) |
192.168.137.129 |
1cpu、1g内存 |
centos7 |
|
|
数据节点“ a”(ndbd) sql节点(mysqld) |
192.168.137.130 |
1cpu、3g内存 (数据节点吃内存) |
centos7 |
|
|
数据节点“ b”(ndbd) sql节点(mysqld) |
192.168.137.131 |
1cpu、3g内存 |
centos7 |
|
|
2、下载安装文件(192.168.137.130、192.168.137.131)
官网地址:
3.2、sql节点
将位置更改为包含下载文件的目录,解压缩归档文件,并创建一个名为mysql该mysql 目录的符号链接 。
useradd mysql
tar -xf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql
3.3、将位置更改为mysql目录,并使用mysqld 设置系统数据库 --initialize,如下所示:
#rm -rf /data/apps/mysql-8.0/ mkdir -p /data/apps/mysql-8.0/logs && chown -r mysql.mysql /data/apps/mysql-8.0 chown -r mysql.mysql /usr/local/mysql cat > /usr/local/mysql/my.cnf <<eoe [mysqld] basedir=/usr/local/mysql datadir=/data/apps/mysql-8.0/data socket=/tmp/mysql.sock user=mysql symbolic-links=0 lower_case_table_names=1 max_connections=2000 wait_timeout=120 interactive_timeout=120 key_buffer_size=128m tmp_table_size=16m read_buffer_size=4m read_rnd_buffer_size=16m sort_buffer_size=32m innodb_buffer_pool_size=1024m ndbcluster [mysqld_safe] log-error=/data/apps/mysql-8.0/logs/mysqld.log pid-file=/data/apps/mysql-8.0/mysqld.pid user=mysql [mysql_cluster] ndb-connectstring=192.168.137.128,192.168.137.129 eoe
mv /etc/my.cnf /etc/my.cnf_`date +%f-%s`
ln -s /usr/local/mysql/my.cnf /etc/my.cnf
3.4初始化数据库
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/data/apps/mysql-8.0/data --initialize --user=mysql
记住密码一会儿用
3.4 将mysql启动脚本复制到适当的目录,使其可执行,并将其设置为在操作系统启动时启动:
cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server
4.1数据节点,拷贝数据节点启动文件,如数据节点和sql节点在同一台,此步忽略
scp 192.168.137.130:/usr/local/mysql/bin/{ndbd,ndbmtd} /usr/local/bin/. cd /usr/local/bin chmod +x ndb* mkdir -p /data/apps/mysql-8.0
在每个数据节点主机上应重复上述步骤。
5.1管理节点。 137.128、137.129
scp 192.168.137.130:/usr/local/mysql/bin/ndb_mgm* /usr/local/bin/. cd /usr/local/bin chmod +x ndb_mgm*
mkdir -p /usr/local/mysql/mysql-cluster
5.2配置管理节点。
#配置文件详解
#
cat > /usr/local/mysql/config.ini <<eoe [ndbd default] # options affecting ndbd processes on all data nodes: noofreplicas=2 # number of replicas datamemory=98m # how much memory to allocate for data storage [ndb_mgmd] nodeid=1 # management process options: hostname=192.168.137.128 # hostname or ip address of mgm node datadir=/usr/local/mysql/mysql-cluster # directory for mgm node log files [ndb_mgmd] nodeid=2 # management process options: hostname=192.168.137.129 # hostname or ip address of mgm node datadir=/usr/local/mysql/mysql-cluster # directory for mgm node log files [ndbd] # options for data node "a": # (one [ndbd] section per data node) hostname=192.168.137.130 # hostname or ip address nodeid=3 # node id for this data node datadir=/data/apps/mysql-8.0 # directory for this data node's data files [ndbd] # options for data node "b": hostname=192.168.137.131 # hostname or ip address nodeid=4 # node id for this data node datadir=/data/apps/mysql-8.0 # directory for this data node's data files [mysqld] nodeid=5 # sql node options: hostname=192.168.137.130 # hostname or ip address # (additional mysqld connections can be # specified for this node for various
[mysqld] # sql node options: nodeid=6 hostname=192.168.137.131 # purposes such as running ndb_restore) eoe
6、 ndb群集的初始启动
6.1管理主机
/usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/config.ini --initial (初始化才加)
6.2在每个数据节点主机上,运行以下命令以启动 ndbd进程:
ndbd --initial (初始化才加)
如报错,执行下列命令
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
再次启动成功:
6.3 sql节点启动数据库:
/usr/local/mysql/bin/mysqld &
如果一切顺利,并且集群已正确设置,则集群现在应该可以运行了。您可以通过调用ndb_mgm管理节点客户端来对此进行测试。输出看起来应该像这里显示的一样,尽管您可能会看到输出有些细微的差异,具体取决于所使用的mysql版本:
管理节点
sql节点在这里被称为 [mysqld(api)],这反映了mysqld进程充当ndb群集api节点的事实 。
7、安全关闭和重新启动ndb群集
7.1要关闭群集,请在托管管理节点的计算机上的外壳程序中输入以下命令:
ndb_mgm -e shutdown -e此处 的选项用于将命令从外壳传递给ndb_mgm客户端。
7.2 再次启动,管理节点执行
ndb_mgmd -f /usr/local/mysql/config.ini
7.3 在每个数据节点执行
ndbd
7.4 使用ndb_mgm客户端来验证两个数据节点均已成功启动。
7.5 在sql主机上:
/usr/local/mysql/bin/mysqld &
如果其中一个数据节点挂掉,必须让其中一个节点完全恢复,集群才可以继续使用
8、 其他注意
创建表时必须设定主键和加上engine=ndbcluster
create table s_position ( id int not null auto_increment, name varchar(20) not null default '经理', #设定默认值 description varchar(100), primary key pk_positon (id) #设定主键 ) engine=ndbcluster;
上一篇: MySQL优化(7):其他注意事项
下一篇: mysql数据库初次登录时无法登录问题
推荐阅读
-
详解Lamp环境搭建Linux CentOS6.5编译安装mysql5.6
-
Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17详细配置
-
Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
-
Linux系统 CentOS 7怎么搭建集群? 搭建高可用集群的步骤
-
详解mysql集群:一主多从架构实现
-
nginx+apache+mysql+php+memcached+squid搭建集群web环境
-
详解CentOS 6.5搭建Redis3.2.8单机分布式集群
-
Windows下搭建PHP开发环境(Apache+PHP+MySQL)
-
云主机搭建php+mysql运行环境教程(护卫神 PHP套件)
-
CentOS下RabbitMq高可用集群环境搭建教程