CentOS搭建MySQL-Cluster集群
<p>1、准备</p><p> 1)操作系统为CentOS,使用root用户安装</p>
<p> 2)下载mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz,下载地址https://dev.mysql.com/downloads/cluster/7.6.html。</p>
<p> 3)准备3台Linux主机</p>
<table border="0">
<tbody>
<tr>
<td>IP地址</td>
<td>作用</td>
</tr>
<tr>
<td>172.16.43.142</td>
<td>管理节点</td>
</tr>
<tr>
<td>172.16.43.148</td>
<td>数据节点、SQL节点</td>
</tr>
<tr>
<td>172.16.43.149</td>
<td>数据节点、SQL节点</td>
</tr>
</tbody>
</table>
<p><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> 保证所有主机防火墙对1181和3306端口例外,或直接禁用防火墙</span></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">systemctl stop firewalld.service
systemctl disable firewalld.service</span></pre>
</div>
<p>2、安装管理节点(Management Node)</p>
<p> <span style="color: rgba(0, 0, 0, 1)">管理节点最好与数据节点不在同一台机器,如果在同一台机器,当这台机器挂了,则整个服务不可用</span>。</p>
<p> 1)创建文件/var/lib/mysql-cluster/config.ini</p>
<div class="cnblogs_code">
<pre>mkdir /var/lib/mysql-<span style="color: rgba(0, 0, 0, 1)">cluster
<span style="color: rgba(0, 0, 0, 1)">vi /var/lib/mysql-cluster/config.ini</span></span></pre>
</div>
<p> 文件内容为(配置说明见:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-configuration.html,https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html):</p>
<div class="cnblogs_code">
<pre>
NoOfReplicas</span>=2<span style="color: rgba(0, 0, 0, 1)">
NodeId</span>=1<span style="color: rgba(0, 0, 0, 1)">
HostName</span>=172.16.43.151<span style="color: rgba(0, 0, 0, 1)">
DataDir</span>=/var/lib/mysql-<span style="color: rgba(0, 0, 0, 1)">cluster
NodeId</span>=11<span style="color: rgba(0, 0, 0, 1)">
HostName</span>=172.16.43.153<span style="color: rgba(0, 0, 0, 1)">
DataDir</span>=/usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">data
NodeId</span>=12<span style="color: rgba(0, 0, 0, 1)">
HostName</span>=172.16.43.154<span style="color: rgba(0, 0, 0, 1)">
DataDir</span>=/usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">data
NodeId</span>=21<span style="color: rgba(0, 0, 0, 1)">
HostName</span>=172.16.43.153<span style="color: rgba(0, 0, 0, 1)">
NodeId</span>=22<span style="color: rgba(0, 0, 0, 1)">
HostName</span>=172.16.43.154</pre>
</div>
<p> 注意:NodeId只能是数字,可以在不同类型节点间空出几个数字,以备扩展。NoOfReplicas值范围是1-2。</p>
<p> 2)解压安装文件,拷贝需要的程序</p>
<p> <span style="color: rgba(0, 0, 255, 1)">对于单纯管理节点,只需要ndb_mgm和ndb_mgmd,其他解压内容都可以删除。</span></p>
<div class="cnblogs_code">
<pre>tar zxvf mysql-cluster-gpl-7.6.13-el7-<span style="color: rgba(0, 0, 0, 1)">x86_64.tar
cd mysql</span>-cluster-gpl-7.6.13-el7-x86_64/<span style="color: rgba(0, 0, 0, 1)">
cp bin</span>/ndb_mgm* /usr/local/<span style="color: rgba(0, 0, 0, 1)">bin</span><span style="color: rgba(0, 0, 0, 1)">
chmod </span>+x /usr/local/bin/ndb_mgm*</pre>
</div>
<p> 3)启动管理节点,并查看集群信息</p>
<div class="cnblogs_code">
<pre>ndb_mgmd <span style="color: rgba(0, 128, 128, 1)">-f</span> /var/lib/mysql-cluster/config.ini --config-cache=FALSE<span style="color: rgba(0, 0, 0, 1)">
ndb_mgm</span></pre>
</div>
<p> ndb_mgmd启动参数介绍:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-mgmd.html</p>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322110219786-353570021.png"></p>
<p><img src="https://img2020.cnblogs.com/i-beta/1031555/202003/1031555-20200321233543115-1195492780.png"></p>
<p> 因为我们的数据节点和SQL节点都没安装,所有状态都是not connected。</p>
<p>3、安装SQL节点(SQL Node)</p>
<p> 1)创建mysql用户和组</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">groupadd mysql
useradd -g mysql mysql</span></pre>
</div>
<p> 2)修改/etc/my.cnf文件</p>
<div class="cnblogs_code">
<pre>vi /etc/my.cnf</pre>
</div>
<p> 修改后的内容为:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">
ndbcluster<br>default-storage-engine=ndbcluster<br>character_set_server=utf8<br>lower_case_table_names=1<br>#basedir=/usr/local/<span style="color: rgba(0, 0, 0, 1)">mysql</span>
#datadir</span>=/usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">data
ndb</span>-connectstring=172.16.43.151</pre>
</div>
<pre><span style="color: rgba(0, 0, 0, 1)">配置说明:<br>default-storage-engine=ndbcluster设置默认Engine。<br>lower_case_table_names=1,设置大小写不敏感。<br>character_set_server=utf8设置字符集,mysql默认字符集不支持汉字<br>此处datadir与config.ini中的DataDir是不同的设置,一个针对SQL节点,一个针对数据节点,它们的值可以相同,也可以不同,<span style="color: rgba(0, 0, 255, 1)">如果相同,且SQL节点与数据节点在同一台主机,则需保证SQL节点要先初始化,不然会报错</span>。<br>如果安装位置不是/usr/local/mysql,则需要basedir参数,不然mysql初始化时有些配置找不到。</span></pre>
<p> 3)创建数据存储目录并更改属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">mkdir </span>/usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">data
cd </span>/usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">
chown </span>-<span style="color: rgba(0, 0, 0, 1)">R mysql data
chgrp </span>-R mysql .</pre>
</div>
<p> 3)解压安装文件并初始化</p>
<div class="cnblogs_code">
<pre>tar -xzvf mysql-cluster-gpl-7.6.13-el7-<span style="color: rgba(0, 0, 0, 1)">x86_64.tar.gz
mv mysql</span>-cluster-gpl-7.6.13-el7-x86_64/ /usr/local/<span style="color: rgba(0, 0, 0, 1)">mysql
cd </span>/usr/local/<span style="color: rgba(0, 0, 0, 1)">mysql
.</span>/bin/mysqld --initialize --user=mysql</pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322120548497-683222005.png"></p>
<p> <span style="color: rgba(0, 0, 255, 1)">记住上图中初始化生成的随机密码,丢了我是不晓得在哪可以再找到这个临时密码</span></p>
<p> 4)添加并启动Linux服务</p>
<div class="cnblogs_code">
<pre>cp support-files/mysql.server /etc/init.d/<span style="color: rgba(0, 0, 0, 1)">mysqld
chmod </span>+x /etc/init.d/<span style="color: rgba(0, 0, 0, 1)">mysqld
chkconfig </span>--<span style="color: rgba(0, 0, 0, 1)">add mysqld
service mysqld start</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322120814911-304667500.png"></p>
<p>4、安装数据节点</p>
<p> 1)复制ndbd和ndbmtd文件并授权</p>
<p> <span style="color: rgba(0, 0, 255, 1)">对于单纯数据节点,只需要ndbd和ndbmtd文件,其他解压文件均可删除</span></p>
<div class="cnblogs_code">
<pre>cd /usr/local/<span style="color: rgba(0, 0, 0, 1)">mysql
cp bin</span>/ndbd /usr/local/bin/<span style="color: rgba(0, 0, 0, 1)">ndbd
cp bin</span>/ndbmtd /usr/local/bin/<span style="color: rgba(0, 0, 0, 1)">ndbmtd
chmod +x </span>/usr/local/<span style="color: rgba(0, 0, 0, 1)">bin/ndb*
</span></pre>
</div>
<p> 2)修改my.cnf文件(<span style="color: rgba(0, 0, 255, 1)">如果数据节点与SQL节点在同一台服务器,且datadir一样,这一步可省略</span>)</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">
ndbcluster
ndb</span>-connectstring=172.16.43.142</pre>
</div>
<p> 3)创建管理节点config.ini中ndbd定义的<span style="color: rgba(0, 0, 255, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">DataDir目录(<span style="color: rgba(0, 0, 255, 1)">如果数据节点与SQL节点在同一台服务器,且datadir一样,这一步可省略)</span></span></span></span></span></span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre>mkdir /usr/local/mysql<span style="color: rgba(0, 0, 0, 1)">
mkdir </span>/usr/local/mysql/data</pre>
</div>
<p> 4)启动数据节点</p>
<div class="cnblogs_code">
<pre>ndbd</pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322032116050-1778535295.png"></p>
<p>5、验证安装</p>
<p> 1)打开管理节点,重新查看各个节点状态,若出现下图则表示全部安装完成</p>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322123533988-373955563.png"></p>
<p> 2)登陆mysql,创建'root'@'%'用户,每个SQL节点都要创建</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 使用'root'%'localhost'用户登陆</span>
cd /usr/local/mysql/<span style="color: rgba(0, 0, 0, 1)">bin
.</span>/mysql -u root -<span style="color: rgba(0, 0, 0, 1)">p
set password </span>=<span style="color: rgba(0, 0, 0, 1)"> password('abc123');
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 创建'root'@'%'</span>
create user 'root'@'%<span style="color: rgba(0, 0, 0, 1)">' identified by 'abc123';
grant all on </span>*.* to 'root'@'%' with grant option;</pre>
</div>
<p> 3)使用数据库连接工具创建数据库表,注意表的Engine为ndbcluster(也可以在my.cnf中设置默认引擎),这样2个SQL节点都可以看到这张表和表中的数据了。</p>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322125701636-758451564.png"></p>
<p> </p>
<p> </p>
<p>出现的问题:</p>
<p>1、启动ndb_mgmd时报,Could not create directory '/usr/local/mysql/mysql-cluster'. Either create it manually or specify a different directory with --configdir=<path></p>
<p> 解决方式一:增加--config-cache=FALSE</p>
<p> 解决方式二:配置--configdir参数为已存在的目录</p>
<p> 解决方式三:创建默认的/usr/local/mysql/mysql-cluster目录</p>
<p>2、mysqld(API) not connected(如下图),检测防火墙是否打开了。</p>
<p><img src="https://img2020.cnblogs.com/blog/1031555/202003/1031555-20200322043633803-137828861.png"></p>
<p>其他:</p>
<p> 官网安装介绍:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/zhi-leaf/p/12543503.html
頁:
[1]