Debian12安装最新版mysql NDB Cluster8.20分部署数据库(分布式部署方式1管理节点 1 sql节点2 data节点)

MySQL NDB是一种高性能、高可靠性、可扩展的集群数据库,也称为MySQL Cluster。它是用于存储和操作大量数据的一种数据库引擎。MySQL NDB是一个完全分布式的数据库系统,它的所有数据和操作都是分布式进行的,可以有效地处理大规模数据的存储和查询。

MySQL NDB集群由多个节点组成,每个节点都是一个独立的MySQL服务器。节点之间互相通信,保证数据同步和负载均衡,使得整个集群能够高效地处理大并发量的请求。

MySQL NDB被广泛应用于需要高可用性、高可扩展性以及高性能的应用场景,如电信运营商、互联网公司、游戏公司等。
具体概念及架构介绍https://blog.csdn.net/nmmbwan/article/details/134625489?spm=1001.2014.3001.5502

1 服务器配置

  1. 管理节点(NDB-Mgm):172.16.10.19
  2. MySQL节点(NDB-Sql):172.16.10.22
  3. 数据节点A NDB-Data1:172.16.10.23
  4. 数据节点B(NDB-Data2):172.16.10.24

以下列表中给出了安装三种主要类型的 NDB Cluster 节点所需的组件:
• 管理节点: management-server
• 数据节点:data-node
• SQL 节点:server、common、client

2 配置网络

修改debian的ip
vi /etc/network/interfaces
修改ip地址

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens192
iface ens192 inet static
        address 172.16.10.22/24
        gateway 172.16.10.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 172.16.10.1

最后修改完成后重启网络systemctl restart networking.service

3 下载安装包

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.2/mysql-cluster_8.2.0-1debian12_amd64.deb-bundle.tar

解压

tar xf mysql-cluster_8.2.0-1debian12_amd64.deb-bundle.tar

mysql-cluster_8.2.0-1debian12_amd64.deb-bundle.tar包含了所有节点组件的安装包,压缩包内文件如下
在这里插入图片描述

如果是其它系统直接访问https://dev.mysql.com/downloads/cluster/下载对应的版本即可

4 管理节点安装

要安装 NDB Cluster 管理服务器,只需安装management-server。将安装包 复制到管理节点的计算机,然后以系统 root 用户身份运行以下命令来安装它
ps.根据需要替换 显示的名称,并与 MySQL 网站下载的安装包 的名称相匹配,

dpkg -i mysql-cluster-community-management-server_8.2.0-1debian12_amd64.deb

将管理服务器 ndb_mgmd安装在 /usr/sbin目录中

5 sql节点安装

将server、common、client安装包复制到需要安装 NDB Cluster SQL 节点。用 root 用户身份执行以下命令来安装 server和common:

dpkg -i mysql-common_8.2.0-1debian12_amd64.deb
dpkg -i mysql-cluster-community-server_8.2.0-1debian12_amd64.deb

这将在目录中安装具有存储引擎支持的 MySQL 服务器二进制文件 ( mysqld ) 。它还安装所有需要的 MySQL 服务器支持文件和有用的 MySQL 服务器程序,包括 mysql.server和 mysqld_safe启动脚本(/usr/share/mysql和/usr/bin, respectively)
要管理 SQL 节点(MySQL 服务器),还应该安装client

dpkg -i mysql-cluster-community-client*

这会将mysql客户端和其他 MySQL 客户端程序(例如mysqladmin和 mysqldump )安装到/usr/bin
安装完成后使用如下命令查看当前版本

mysql --version
mysql  Ver 8.2.0-cluster for Linux on x86_64 (MySQL Cluster Community Server - GPL)

6 安装datanode节点

数据节点只需安装 data-node ,将安装包复制到数据节点主机,并用 root 用户身份运行以下命令,并且在安装之前先安装前置依赖libclass-methodmaker-perl:

apt-get install libclass-methodmaker-perl
dpkg -i mysql-cluster-community-data-node_8.2.0-1debian12_amd64.deb

这会将ndbd和 ndbmtd数据节点二进制文件安装在 /usr/sbin. 其中任何一个都可用于在此主机上运行数据节点进程。

7 NDB Cluster 的初始配置

通过创建和编辑配置文件来手动配置已安装的 NDB Cluster。
对于我们的四节点、四主机 NDB Cluster(请参阅 集群节点和主机),需要编写四个配置文件,每个节点主机一个。

  • 每个数据节点或 SQL 节点都需要一个 my.cnf文件,该文件提供两条信息:一个连接字符串,告诉节点在哪里找到管理节点;以及一行告诉该主机(托管数据节点的机器)上的 MySQL 服务器启用存储引擎NDBCLUSTER。

  • 管理节点需要配置config.ini 文件,告诉它要维护多少个分片副本、为每个数据节点上的数据和索引分配多少内存、在哪里找到数据节点、将数据保存到每个数据节点上的磁盘上以及在哪里保存找到任何 SQL 节点。

7.1 配置数据节点和SQL节点

数据节点的配置文件my.cnf应位于该/etc目录中。(如果该文件不存在,则创建该文件。)例如:

vi /etc/my.cnf

然后添加如下内容:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=172.16.10.19  # location of management server

输入上述信息后,保存该文件并退出文本编辑器。
然后创建目录

mkdir -p /usr/local/mysql/data

对托管数据节点1、数据节点2和 SQL 节点的都执行此操作 。

7.2 配置管理节点

配置管理节点的第一步是创建可以在其中找到配置文件的目录,然后创建文件本身。例如(运行为 root):

$> 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 fragment replicas
DataMemory=98M    # How much memory to allocate for data storage

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

[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
HostName=172.16.10.23          # 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.16.10.24          # 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.16.10.22          # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
                                # purposes such as running ndb_restore)

8 NDB Cluster 的初始启动

8.1 启动

配置完成后,启动集群。每个集群节点进程必须在其所在的主机上单独启动。应首先启动管理节点,然后是数据节点,最后是 SQL 节点:

8.1.1 管理节点启动

在管理主机上,输入以下命令来启动管理节点进程:

$> ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini

在这里插入图片描述

8.1.2 数据节点启动

在每个数据节点主机上,运行以下命令来启动 ndbd进程:

$> ndbd

在这里插入图片描述
在这里插入图片描述

集群现在应该可以运行。可以通过sql节点调用ndb_mgm管理节点客户端来测试是否正常启动。
在sql节点上执行ndb_mgm进入命令行执行show或者直接执行ndb_mgm -e show
在这里插入图片描述

SQL 节点在此处被引用为 ,这反映了mysqld进程充当 NDB Cluster API 节点的 [mysqld(API)]事。

8.2 初始密码

使用mysqld --initialize-insecure
服务器不会生成密码或将其标记为过期,并写入警告消息:
[Warning] root@localhost is created with an empty password ! Please
consider switching off the --initialize-insecure option.
即可免密登录

8.3 设置远程访问

依次执行如下命令

mysql -u root -p
use mysql
SELECT user, host FROM mysql.user WHERE user='root';
update user set Host='%' where User='root';  #设置root远程访问
flush privileges;

在这里插入图片描述

现在即可使用mysql工具例如navicat远程连接数据库了

8.4使用数据库

在 NDB Cluster 中处理数据库表和数据与在标准 MySQL 中处理数据库表和数据没有太大区别。要注意两点:

  • 对于要在集群中复制的表,它必须使用 NDBCLUSTER存储引擎。要指定这一点,请在创建表时 使用ENGINE=NDBCLUSTER或 选项:ENGINE=NDB
CREATE TABLE tbl_name (col_name column_definitions) ENGINE=NDBCLUSTER;

或者,对于使用不同存储引擎的现有表,使用ALTER TABLE 更改要使用的表 NDBCLUSTER:

ALTER TABLE tbl_name ENGINE=NDBCLUSTER;

navicat查看表使用引擎如下:
在这里插入图片描述

  • 每个NDBCLUSTER表都有一个主键。如果用户在建表时没有定义主键,NDBCLUSTER 存储引擎会自动生成一个隐藏主键。这样的键与任何其他表索引一样占用空间。

8.5 查看表空间

在sql节点中执行如下命令:

all report memoryusage

在这里插入图片描述

9 日志

管理节点日志:/var/lib/mysql-cluster/ndb_1_cluster.log

数据节点日志:/usr/local/mysql/data/ndb_2_out.log
/usr/local/mysql/data/ndb_3_out.log

10 关机

root@NDB-Sql:~# ndb_mgm -e shutdown

11问题及解决办法

11.1 初始化失败

2023-11-25T05:33:30.101040Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting. 2023-11-25T05:33:30.101070Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it. 2023-11-25T05:33:30.101132Z 0 [ERROR] [MY-010119] [Server] Aborting

在这种情况下,请删除或重命名数据目录,然后重试。
删除初始化目录再次进行初始化:

rm -rf /var/lib/mysql/*

你可以重新运行 --initialize 选项来初始化 MySQL 数据目录:

mysqld --initialize --datadir=/var/lib/mysql/

11.2 启动失败

查看systemctl status mysql查看mysql状态,报错如下:

x mysql.service - MySQL Cluster Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sat 2023-11-25 13:45:46 CST; 1min 7s ago
   Duration: 2h 35min 59.122s
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 45839 ExecStartPre=/usr/share/mysql-8.2/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Process: 45875 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
   Main PID: 45875 (code=exited, status=1/FAILURE)
     Status: "Server shutdown complete (with return value = 1)"
      Error: 13 (Permission denied)
        CPU: 488ms

Nov 25 13:45:45 NDB-Sql systemd[1]: Starting mysql.service - MySQL Cluster Community Server...
Nov 25 13:45:46 NDB-Sql systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Nov 25 13:45:46 NDB-Sql systemd[1]: mysql.service: Failed with result 'exit-code'.
Nov 25 13:45:46 NDB-Sql systemd[1]: Failed to start mysql.service - MySQL Cluster Community Server.

修改文件夹访问权限

root@NDB-Sql:~# chown -R mysql:mysql /var/lib/mysql

11.3 修改配置文件后,怎么重新加载

先修改管理节点中配置文件
然后执行ndb_mgmd --reload -f /var/lib/mysql-cluster/config.ini

8.5.4 表空间数据要满了怎么扩容
如果data usage使用率过高就需要修改管理节点配置文件

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

11.4 表空间数据要满了怎么扩容

如果data usage使用率过高就需要修改管理节点配置文件

vi /var/lib/mysql-cluster/ config.ini
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2    # Number of fragment replicas
DataMemory=98M    # How much memory to allocate for data storage

DataMemory=98M修改为更大值
然后重启整个集群,在sql节点上进入ndb_mgm命令行执行shutdown或者直接执行ndb_mgm -e shutdown
在这里插入图片描述
然后重新加载配置文件

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

在这里插入图片描述
在sql节点执行命令 重启数据节点

在这里插入图片描述

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值