ubuntu1804搭建mysql cluster

在网上看了几篇相关教程,虽然写的都很好,但是没有一个可以从头到尾做下来没有任何问题的,最终结合了各篇的精华,终于自己搭成了,趁着刚搭完,赶快记录下来~

环境

三台阿里云服务器(2v+4g+50g),在一个VPC网络里,就是在一个局域网里。

三台机器的内网ip如下:

服务器1:172.17.119.207
服务器2:172.17.119.206
服务器3:172.17.119.204

其中,服务器1上安装管理节点,服务器2上安装一个数据节点和一个sql节点,服务器3上安装一个数据节点和一个sql节点。

说明

1.本文使用mysql cluster的安装包,其中包含mysql5.7,所以无需额外安装mysql,如果以前安装过mysql,需要先卸载干净,本人是在纯净的ubuntu1804上安装的,也推荐大家在纯净的系统上安装,避免mysql残留影响安装。

2.以下所有命令均以root身份执行。

下载安装包

这个安装包在三台服务器上都需要有,使用下面命令获取:

wget http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
tar -xf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz

也可以到这个网址上自己找更新版本的。

配置

管理节点

执行下面命令:

mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql_cluster
//将集群启动和管理命令放到/usr/local/bin
cd /usr/local/mysql_cluster/bin
cp ndb_mgm* /usr/local/bin
//配置文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

config.ini内容如下:

# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]    
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

# TCP/IP options:
[TCP DEFAULT]    
#portnumber=2202

# Management process options:
[NDB_MGMD]          
nodeid=1          
HostName=172.17.119.207
DataDir=/var/lib/mysql-cluster/

# Options for data node :
[NDBD]                          
nodeid=2
HostName=172.17.119.206
DataDir=/usr/local/mysql_cluster/data/

# Options for data node :
[NDBD]  
nodeid=3                     
HostName=172.17.119.204
DataDir=/usr/local/mysql_cluster/data/

# SQL node options:
[MYSQLD] 
nodeid=4                      
HostName=172.17.119.206
[MYSQLD]
nodeid=5
HostName=172.17.119.204

管理节点就配置好了。

数据节点和sql节点

在服务器2和服务器3上均执行以下命令:

mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql
//添加用户和组
groupadd mysql
useradd -g mysql mysql
//将ndbd命令复制到/usr/local/bin/,该命令用于启动数据节点
cd /usr/local/mysql/bin/
cp ndbd /usr/local/bin
//安装运行mysql需要的包
apt-get install numactl
apt-get install libaio1 libaio-dev
//初始化mysql
cd /usr/local/mysql
mkdir data
cd bin/
./mysqld --initialize

这一步执行完,屏幕输出的最后一行应该是这样的:

A temporary password is generated for root@localhost: caA15u&;>p>X

就是会告诉你root用户mysql的初始密码,这个要记录一下,后面连接mysql要用的。

接下来设置一些权限:

cd /usr/local/mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/mysql.server /etc/init.d
chmod +x /etc/init.d/mysql.server

最后创建并修改配置文件:

vi /etc/my.cnf

my.cnf内容如下:

[mysqld]
ndbcluster
ndb-connectstring=172.17.119.207
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
 
[mysql_cluster]
ndb-connectstring=172.17.119.207

到这里,数据节点和sql节点就也配置完成了。

运行

启动管理节点

执行下面命令:

cd /usr/local/bin
ndb_mgmd --ndb-nodeid=1 --initial --configdir=/var/lib/mysql-cluster/ -f /var/lib/mysql-cluster/config.ini

输出如下信息则表示管理节点启动成功:

然后,使用ndb_mgm命令进入管理模式,输入show查看当前状态:

可以看到,此时数据节点和sql节点都处于未连接的状态。

启动数据节点

在服务器2和服务器3上均执行下面命令:

cd /usr/local/bin/
ndbd --initial

注意,--initial参数只有第一次启动需要带上,之后再启动就不需要了,如果输出如下则表示数据节点启动成功:

在两台服务器上都执行完之后,到管理节点,再次输入show,会看到两个数据节点都连上了:

启动sql节点

在服务器2和服务器3上均执行以下命令:

cd /usr/local/mysql/bin/
./mysqld_safe --user=mysql  --skip-syslog &

看到如下信息说明sql节点启动成功:

这时再到管理节点,输入show,会发现两个sql节点也连接上了:

到这里,mysql集群的搭建就算大功告成了!

验证

最后验证一下效果,在sql节点1上建一个数据库,看看是否可以同步到节点2。

首先,在服务器2上连接mysql:

cd /usr/local/mysql/bin/
./mysql -uroot -p

然后,输入初始化mysql的时候屏幕上输出的那个密码。

进去之后,首先要更换密码,否则无法进行任何操作。

连接上mysql之后,输入以下命令修改密码:

ALTER USER USER() IDENTIFIED BY 'your_password';

以后再连接,密码就用你设置的这个了~

然后,我们创建个数据库,叫test。

create database test;

创建完之后,到sql节点2,同样需要首先更改密码,更改之后,查看数据库:

可以看到,在sql节点2上,也有了test数据库,说明同步上了~

关闭

想要关闭集群时,最好按顺序来,避免把集群搞乱。

首先在管理节点执行以下命令:

cd /usr/local/bin
ndb_mgm -e shutdown

执行完这一步,管理节点和数据节点就都关闭了,sql节点还需要手动关闭。 

使用提示

最后要提示一点,是我踩过的一个坑。。。

我们在配置集群的时候,配置了数据库默认引擎为ndb_cluster,只有使用这个引擎,数据才能同步上。

但是,这只对我们新建的表生效。

我们搭好集群以后,一般会把以前mysql的数据导进去,这时候问题来了,以前的mysql用的一般是innodb之类的引擎,所以数据导入之后,并不能同步上,一定要在导入数据之后,把所有表的引擎改成ndb_cluster,这样才能同步上!

发布了39 篇原创文章 · 获赞 25 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/u013536232/article/details/104284205