Mysql Cluster 搭建(mysql集群)

版权声明:转发原创文章请复制文章链接地址 https://blog.csdn.net/weixin_42579642/article/details/84648099

首先我们要了解mysql集群的是三种节点:

管理节点

该节点的作用是管理NDB集群中的其他节点,例如提供配置数据,启动和停止节点以及运行备份等功能。由于此节点类型管理其他节点的配置,因此应首先在任何其他节点之前启动此类型的节点。使用命令ndb_mgmd启动MGM节点

数据节点

该类型的节点存储集群数据

SQL节点

这是一个访问集群数据的节点,必须有mysqld服务进程

 

下面以4台服务器 ip为 172.20.10.143-172.20.10.146

按照如下节点设置对应的ip

节点   

SQL节点   172.20.10.143 对外部客户端提供API (PHP  mysql client  python....)

数据节点  数据存储    172.20.10.144  172.20.10.145

管理节点  负责协调 调度  172.20.10.146

 

SQL节点配置

如果以前安装过mysql  需要删除对应的文件 例如 /usr/local/mysql  /etc/my.cnf  /etc/init.d/mysql* /etc/rc.d/init.d/mysql*

查看/etc/passwd和 /etc/group文件中是否有mysql用户和组  如果没有按照如下指令创建

groupadd mysql

useradd -g mysql -s /bin/false mysql

下载mysqlcluster    我下载的位置是在/usr/local/

wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.6/mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz

然后解压 tar zxvf mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64.tar.gz

假设在/usr/local/目录下执行的解压操作  创建一个符号链接到/usr/local/mysql

ln -s /usr/local/mysql-cluster-gpl-7.6.8-linux-glibc2.12-x86_64 /usr/local/mysql

 cd /usr/local/mysql/bin/

初始化mysql 执行 ./mysqld --initialize 执行完毕后要记住随机密码

将mysql目录所有者和组都修改为mysql

cd /usr/local

执行chown -R  mysql:mysql  mysql/

设置开机自启动 cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysql.server

赋予可执行权限 chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

启动/etc/rc.d/init.d/mysql.server start

登录mysql

/usr/local/mysql/bin/mysql -uroot -p数据库密码   (如果你的随机密码有特殊字符,密码要加上单引号)

登陆后可修改mysql密码

use mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

然后退出可用新密码登录

停止mysql /etc/rc.d/init.d/mysql.server stop  因为还没有设置sql节点的一些配置信息

 

数据节点

需要拷贝 ndbd 和ndbmtd两个文件到/usr/local/bin目录

同样先解压或者从其他服务器拷贝这两个文件  下面是命令参考

cp bin/ndbd /usr/local/bin/ndbd cp bin/ndbmtd /usr/local/bin/ndbmtd

也可以从其他机器远程拷贝 例如

scp -P 2233 [email protected]:/usr/local/mysql/bin/ndbmtd ./

如果这两个文件没有可执行权限需要给与x权限

cd /usr/local/bin chmod +x ndb*

创建数据存储目录 mkdir -p /usr/local/mysql/data

上述目录需要和管理节点中配置的DATAdir一致

chown -R mysql:mysql /usr/local/mysql/

 

管理节点

需要安装ndb_mgmd和 ndb_mgm  可以按上述方式拷贝 并且赋予可执行权限

 

各节点配置

数据节点和SQL节点需要 vi /etc/my.cnf

按照如下方式配置

[mysqld]

# Options for mysqld process:

ndbcluster                      # run NDB storage engine



[mysql_cluster]

# Options for NDB Cluster processes:

ndb-connectstring=172.20.10.146  # 管理节点的ip

管理节点

mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster vi config.ini

[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2    # Number of replicas
DataMemory=80M    # How much memory to allocate for data storage
IndexMemory=18M   # How much memory to allocate for index storage
                  # For DataMemory and IndexMemory, we have used the
                  # default values. Since the "world" database takes up
                  # only about 500KB, this should be more than enough for
                  # this example NDB Cluster setup.
ServerPort=2202   # This the default value; however, you can use any
                  # port that is free for all the hosts in the cluster
                  # Note1: It is recommended that you do not specify the port
                  # number at all and simply allow the default value to be used
                  # instead
                  # Note2: The port was formerly specified using the PortNumber 
                  # TCP parameter; this parameter is no longer available in NDB
                  # Cluster 7.5.

[ndb_mgmd]
# Management process options:
HostName=172.20.10.146          # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster  # Directory for MGM node log files

[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
HostName=172.20.10.144          # Hostname or IP address
NodeId=2                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node's data files

[ndbd]
# Options for data node "B":
HostName=172.20.10.145          # Hostname or IP address
NodeId=3                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node's data files

[mysqld]
# SQL node options:
HostName=172.20.10.143          # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
                                # purposes such as running ndb_restore)

 

测试

启动顺序  先启动管理节点   再启动数据节点   最后启动SQL节点

在管理节点上先执行

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

如果报配置文件或者目录找不到   将config.ini拷贝到提示的默认目录即可

如果没有报错  查看是否有1186端口 如果有

ndb_mgm 进入客户端命令行 执行show 查看各节点的状态  此时 数据节点 sql节点都未启动  应该都是未连接状态

启动数据节点

在每一台数据节点上都执行 ndbd

在sql节点上执行 /etc/rc.d/init.d/mysql.server start 启动mysqld服务

 

然后客户端可以连接sql节点进行数据操作

 

 

关闭集群

在管理节点上执行 ndb_mgm -e shutdown可以关闭管理节点以及数据节点

 

sql节点可以按照关闭普通mysql服务的方式关闭

/etc/rc.d/init.d/mysql.server stop

 

 

--------------------常见错误----------------------

1.SQL节点MySQL服务无法启动

(1)如果以前安装过mysql  需要删除对应的文件 例如 /usr/local/mysql  /etc/my.cnf  /etc/init.d/mysql* /etc/rc.d/init.d/mysql*

(2) cluster压缩文件解压后做符号链接 检验是否正确连接  ls -l /usr/local

解压时不要解压到/root 目录下(包括创建虚拟主机时也要避免此种情况)

(3)设置/usr/local/mysql 目录及子目录的用户和组都为mysql  ( ./mysqld --initialize命令之后必须再设置一次)

(4)管理节点中设置的ip和SQL节点的ip不一致

(5)查找错误日志 /usr/local/data/***.err  查找error选项 再进一步排查

 

2.启动顺序

先启动管理节点   再启动数据节点   最后启动SQL节点

数据节点存储数据的目录是 /usr/local/mysql/data   保证初始状态 数据存储目录为空

3.必须使用DDBCLUSTER存储引擎 如果使用其他存储引擎需要使用alter table 修改存储引擎

猜你喜欢

转载自blog.csdn.net/weixin_42579642/article/details/84648099