搭建MySQL集群-注意版本

1.搭建环境
   mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
   操作系统centos 7.9
  下载地址链接:http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/
2.集群内的各个节点的规划

节点(用途)    

 IP地址(主机名)

管理节点 

192.168.0.18

SQL节点1  

 192.168.0.16

SQL节点2

 1192.168.0.17

 

 

 

 

 

 

 

 


 

3.管理节点配置步骤(192.168.0.18)

通过rz命令上传到Linux上 /usr/local下
[root@mysql-mnm-node ~]#  tar zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz  ##解压

[root@mysql-mnm-node ~]# mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64  /usr/local/    ## 解压后的目录移动到/usr/local/下,

[root@mysql-mnm-node ~]#cd /usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64

[root@mysql-mnm-node ~]#cp bin/ndb_mgm* /usr/local/bin   ###复制所有的ndb  到 /usr/local/bin 下 

[root@mysql-mnm-node ~]#cd /usr/local/bin

[root@mysql-mnm-node ~]#chmod +x ndb_mgm*     ####可以执行命令最好放入到环境变量中,这样可以直接执行命令

[root@mysql-mnm-node ~]#mkdir /var/lib/mysql-cluster   ###创建数据目录


####创建config.ini 配置文件

[root@mysql-mnm-node ~]#vi /var/lib/mysql-cluster/config.ini

[ndbd default]
NoOfReplicas=2
DataMemory=512M
IndexMemory=18M

[ndb_mgmd]
HostName=192.168.0.18
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=192.168.0.16
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=192.168.0.17
DataDir=/var/lib/mysql-cluster

[mysqld]

 

 

[root@mysql-mnm-node ~]#/usr/local/bin/ndb_mgmd -f  /var/lib/mysql-cluster/config.ini --initial   ###使用配置文件初始化管理节点

[root@mysql-mnm-node ~]# /usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64/bin/ndb_mgm    ###执行下面的命令验证下
ndb_mgm> show


4.集群sql节点配置步骤(在192.168.0.16和192.168.0.17执行相同步骤)

通过rz命令上传到Linux上,通过 tar zxvf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz 解压

解压后的目录移动到/usr/local/下,目录名称改为mysql

[root@mysql-sql-node ~]# mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql

[root@mysql-sql-node ~]#groupadd mysql
[root@mysql-sql-node ~]#useradd -g mysql -s /sbin/nologin mysql
[root@mysql-sql-node ~]#mkdir /var/lib/mysql-cluster
[root@mysql-sql-node ~]#chown root:mysql /var/lib/mysql-cluster/
[root@mysql-sql-node ~]#yum -y install libaio
[root@mysql-sql-node ~]#cd /usr/local/mysql/bin/
[root@mysql-sql-node ~]#./mysqld --initialize   ####初始化会建立相关的一些必要的表,如果不进行初始化安装创建,则mysql你都进不去
[root@mysql-sql-node ~]#cd /usr/local/mysql/
[root@mysql-sql-node ~]#chown -R root .
[root@mysql-sql-node ~]#chown -R mysql data
[root@mysql-sql-node ~]#chgrp -R mysql .
[root@mysql-sql-node ~]#cp support-files/mysql.server /etc/rc.d/init.d/
[root@mysql-sql-node ~]#chmod +x /etc/rc.d/init.d/mysql.server
[root@mysql-sql-node ~]#chkconfig --add mysql.server
[root@mysql-sql-node ~]#vim /etc/my.cnf

[mysqld]
ndbcluster
ndb-connectstring=192.168.0.18

[mysql_cluster]
ndb-connectstring=192.168.0.18
 

 

[root@mysql-sql-node ~]#/usr/local/mysql/bin/ndbd --initial

[root@mysql-sql-node ~]#/etc/init.d/mysql.server start   ####启动mysql服务

[root@db-sql-node2 ~]# echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile && source /etc/profile   ####把mysql/bin目录添加到环境变量

报错解决:

mysql(ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2))。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
解决:mysql登录不了需要密码的问题。
1.编辑my.cnf
vi /etc/my.cnf添加在[mysqld]后面任意一行添加“skip-grant-tables“用来跳过密码验证的过程。

2.重启mysql
/etc/init.d/mysql.server restart

3.进去mysql修改root密码
flush privileges; 刷新mysql系统权限相关表后重新设置密码
set password for root@localhost = password(‘root’);
修改完成重启mysql
/etc/init.d/mysql.server restart
进入mysql修改mysql的root登陆密码
set password for root@localhost = password(‘root’);

 

开始测试:
mysql> create database aa;
mysql> use aa
mysql> CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败,只有这样子,这两台机器才能共享数据库的数据结构
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
±-----+
| i |
±-----+
| 1 |
±-----+

现在到另外一个数据节点查看下aa数据库是否同步过来了.

#/usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| aa |
| bb |
| mysql |
| ndb_3_fs |
| test |
±-------------------+
mysql> use aa
mysql> select * from ctest2;

从上面可以看到数据已经同步了,mysql集群环境已经搭建完成.

报错解决:
1.用navicat连接不成功需要报错代码1130原因是被连接的数据不允许使用 192.168.1.13访问,只允许是用 localhost;
进入mysql mysql -u root -p 执行线面的sql语句就解决了。
mysql>use mysql;
mysql>select ‘host’ from user where user=‘root’;
mysql>update user set host = ‘%’ where user =‘root’;
mysql>flush privileges;
mysql>select ‘host’ from user where user=‘root’;
2.处理导入数据库表报错问题在my.cnf的[mysqld]里面加入这句,
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
3.建数据库表需要指定NDB
CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败

4.启动和关闭

启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。

管理操作

1.在(192.168.0.18)启动管理节点(关闭命令:ndb_mgm -e shutdown)

[root@dns-server ~]# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini  ##-f指定配置文件
2.在(192.168.0.16和192.168.0.17)启动ndbd和MySQL(关闭命令:/etc/init.d/mysql.server stop)

[root@db-sql-node2 ~]# /usr/local/mysql/bin/ndbd
[root@db-sql-node2 ~]# /etc/init.d/mysql.server start
3.在管理节点(192.168.0.18)查看状态
/usr/local/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64/bin/ndb_mgm
ndb_mgm> show

4.在db-sql-node1(192.168.0.17)登陆mysql创建数据库和表,在db-sql-node2(192.168.0.16)上验证同步结果

(如果使用sql创建表,命令为:CREATE TABLE student (age INT) ENGINE=NDBCLUSTER)

5.关闭时只需要关闭管理节点,后面的数据节点会同时被关闭



 

上一篇:若依前后端分离集成Mybatis-Plus


下一篇:学Java第13天