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] [ndb_mgmd] [ndbd] [ndbd] [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] [mysql_cluster] |
[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))。 2.重启mysql 3.进去mysql修改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.关闭时只需要关闭管理节点,后面的数据节点会同时被关闭