MySQL-Cluster架构图文详解
Stan,2011/6/7
前言:
这是我第一次接触Linux,CentOS, MySQL,用了5天的时间终于将基于CentOS5.0系统下MySQL-Cluster架构成功,下面将我这些经验分享给大家。若发现有什么错误和疏忽之处,请发邮件给我:stan_home@qq.com。
(PDF图文版请下载,地址:http://download.csdn.net/source/3365704)
配置之前,先补充一些Linux常用命令:
ls 浏览
ls -l 查看文件夹及文件权限
vi 文本编辑器(搜索、编辑)
i 状态为修改
退出:“Esc”键后,然后输入":",然后输入“wq”写入、退出
:q! 强制退出
vim -f [文件名] 强制恢复文件
cp 拷贝文件命令
rm 删除文件
mkdir 创建文件夹
ln 连接问价或目录
man [命令] 查看命令参数
ifconfig 网卡信息命令
dig (域信息搜索器)
df 查看系统文件
vmstat 系统状态
ps 查看进程(-e显示全部,-f全格式输出)
ps -ef|grep mysql 查看所有mysql进程
Tips:输入一个文件或文件名,按一下Tab键,会自动完成改文件名(前提是这个文件或文件夹必须存在);
例如:
输入
[root@localhost tmp]# tar –xzvf mysql-c
按一下Tab键自动完成:
[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
下面,我们一起来架构吧!
一、配置环境:
OS:Linux CentOS 5.0
MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官网上下载http://dev.mysql.com/downloads/cluster /#downloads)
节点配置情况:
MGM:192.168.20.231
NDBD1:192.168.20.232
NDBD2:192.168.20.233
SQL1:192.168.20.234
SQL2:192.168.20.235
修改CentOS IP地址
(1)打开/etc/sysconfig/network-scripts/ifcfg-eth0文件,做如下修改
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0c:29:be:b3:53
IPADDR=192.168.20.231
NETMASK=255.255.255.0
GATEWAY=192.168.20.1
(2)修改/etc/resolv.conf文件, 如下(修改DNS服务)
nameserver 202.101.172.35
search localdomain
(3)重启网络服务
[root@localhost ~]# service network restart
二、软件安装:
(一)管理节点MGM
配置管理节点
首先在合适的位置,创建一个管理节点的配置文件,步骤如下:
[root@localhost ~]# mkdir /var/lib/mysql-cluster
[root@localhost ~]# cd /var/lib/mysql-cluster
[root@localhost mysql-cluster]# vi config.ini
配置文件config.ini内容如下:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[tcp default]
portnumber=2202
[ndb_mgmd]
hostname=192.168.20.231
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=192.168.20.232
datadir=/usr/local/mysql/data
[ndbd]
hostname=192.168.20.233
datadir=/usr/local/mysql/data
[mysqld]
hostname=192.168.20.234
[mysqld]
hostname=192.168.20.235
安 装管理节点,不需要mysqld二进制文件,只需要MySQL Cluster服务端程序(ndb_mgmd)和监听客户端程序(ndb_mgm)。这两个文件都在下载的MySQL-cluster文件解压后的bin 文件夹中。执行如下步骤,在集群的管理节点上安装ndb_mgmd 和 ndb_mgm。
1、改变地址到/var/tmp目录下,解压MySQL-Cluster压缩文件,取出ndb_mgm和ndb_mgmd复制到/usr/local/bin 目录下。
[root@localhost ~]# cd /var/tmp
[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
[root@localhost tmp]# cd mysql-cluster-gpl-7.1.13-linux-i686-glibc23
[root@localhost tmp]# cp bin/ndb_mgm* /usr/local/bin
2、改变路径为拷贝到的目录下,并确保这两个文件可执行。
[root@localhost tmp]# cd /usr/local/bin
[root@localhost bin]# chmod +x ndb_mgm*
3、在/usr/local下创建mysql文件夹。
[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir mysql
(二)、数据节点NDBD和SQL节点
配置数据节点NDBD和SQL节点
在每一个SQL节点中的/etc目录下找到my.cnf文件,并做如下配置:
[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.20.231
old_passwords=1
[mysql_cluster]
ndb-connectstring=192.168.20.231
在每一个数据节点NDBD和SQL节点的机器上,用root用户执行下面的步骤。
1、检查/etc/passwd 和 /etc/group 文件,是否存在mysql组和mysql用户,如果没有,用下面的命令创建一个mysql组,并在改组中添加mysql用户。
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd –g mysql mysql
2、改变文件夹位置到mysql压缩包的存放位置,解压文件,准备安装,步骤如下:
(下载文件可以从其他电脑映射, 在/home/下面创建一个download文件夹,如果是在本机Linux下下载的文件,则不需要此映射步骤。)
[root@localhost ~]# mount -t cifs -o username="name",password="password" //192.168.20.210/MySQL /home/download
[root@localhost ~] cp /home/download/ mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz /var/tmp
[root@localhost ~]# cd /var/tmp
[root@localhost tmp]# tar –C /usr/local –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
3、改变位置到local文件夹,改变mysql解压后的文件夹名称为mysql,然后执行提供的脚本,创建系统数据库。
[root@localhost tmp]# cd /usr/local
[root@localhost local]# mv mysql-cluster-gpl-7.1.13-linux-i686-glibc23/ mysql/
[root@localhost local]# cd mysql
[root@localhost mysql]# mkdir sock
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
4、为MySQL服务及数据目录设置必要的服务。
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/data
[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/sock
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# ls -l
5、复制MySQL的启动脚本到如下的文件夹,确保可以执行。并设置为当系统启动时,同时启动MySQL。
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql.server
[root@localhost mysql]# chkconfig --add mysql.server
三、Cluster环境启动
注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点。
1、[MGM]
[root@localhost ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
使用ndb_mgm来监听客户端,如下:
[root@localhost ~]# ndb_mgm
2、[NDBD]
首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。
[root@localhost ~]# /usr/local/mysql/bin/ndbd --initial
如果不是首次启动,则执行下面的命令。
[root@localhost ~]# /usr/local/mysql/bin/ndbd
3、[SQLD]
/usr/local/mysql/bin/mysqld_safe --user=mysql &
有可能出现上图问题,是系统数据库创建问题,只需再次创建系统数据库,方法如下:
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
再次启动
/usr/local/mysql/bin/mysqld_safe --user=mysql &
查看管理节点,启动成功:
四、测试
1、常规测试:
在节点4上面:
为了让表在cluster中正常复制,创建一个表必须使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法如下:
mysql>use test
mysql>create table teacher(t_id int) engine=ndb;
如果是一个已经存在的表,用alter table修改表的引擎。
mysql>alter table student engine=ndb;
插入一条数据:
mysql>insert into teacher values(133);
然后在节点5上:
mysql>select * from teacher;
两个节点数据保持一致,恭喜你,测试成功!
2、模拟NDB节点Crash:
在节点2上终止掉NDB进程,然后再分别通过两个SQL节点去访问teacher表,查看是否可以正常访问,数据是否一致。如下:
查看进程
[root@localhost ~]# ps -ef
[root@localhost ~]# kill 3344
[root@localhost ~]# ps -ef
查看管理节点,显示节点2已关闭。
节点4上面:
在节点5上面:
再回到节点4上面:
测试成功,当有一个NDB节点Crash后,整个MySQL Cluster环境仍可以正常服务。
3、模拟SQL节点Crash:
Kill掉节点4的mysqld进程,然后通过节点5进行访问,如下:
可以看到节点4 Crash之后,节点5仍然可以继续正常服务,测试成功。
相关推荐
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-Cluster-8.0/ 2、解压以后放在一个文件夹里面,创建my.ini配置文件; my.ini文件内容: [mysqld] character-set-server=utf8 bind-address = 0.0.0.0 port = 3306 #...
如果你需要集群环境,可以考虑“InnoDB Cluster”,但至少需要三个服务实例。 - **配置类型与连接方式**:推荐选择“Development Computer”作为配置类型,保持默认的连接方式,注意记录下配置的“Port”端口号...
- **永久会话管理器,使用JDBC-to-MySQL RDBMS**: 会话数据被保存在数据库中,所有Tomcat实例通过查询数据库来获取会话信息。此方法提供了较好的可伸缩性,但也增加了数据库访问的开销。 #### 五、总结 Apache与...
【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
# 基于Python的KMeans和EM算法结合图像分割项目 ## 项目简介 本项目结合KMeans聚类和EM(期望最大化)算法,实现对马赛克图像的精准分割。通过Gabor滤波器提取图像的多维特征,并利用KMeans进行初步聚类,随后使用EM算法优化聚类结果,最终生成高质量的分割图像。 ## 项目的主要特性和功能 1. 图像导入和预处理: 支持导入马赛克图像,并进行灰度化、滤波等预处理操作。 2. 特征提取: 使用Gabor滤波器提取图像的多维特征向量。 3. 聚类分析: 使用KMeans算法对图像进行初步聚类。 利用KMeans的聚类中心初始化EM算法,进一步优化聚类结果。 4. 图像生成和比较: 生成分割后的图像,并与原始图像进行比较,评估分割效果。 5. 数值比较: 通过计算特征向量之间的余弦相似度,量化分割效果的提升。 ## 安装使用步骤 ### 假设用户已经下载了项目的源码文件 1. 环境准备:
HCIP第一次作业:静态路由综合实验
【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
内容概要:本文详细介绍了Johnson-SU分布的参数计算与优化过程,涵盖位置参数γ、形状参数δ、尺度参数ξ和伸缩参数λ的计算方法,并实现了相应的Python代码。文中首先导入必要的库并设置随机种子以确保结果的可复现性。接着,分别定义了四个参数的计算函数,其中位置参数γ通过加权平均值计算,形状参数δ基于局部均值和标准差的比值,尺度参数ξ结合峰度和绝对偏差,伸缩参数λ依据偏态系数。此外,还实现了Johnson-SU分布的概率密度函数(PDF),并使用负对数似然函数作为目标函数,采用L-BFGS-B算法进行参数优化。最后,通过弹性网络的贝叶斯优化展示了另一种参数优化方法。; 适合人群:具有Python编程基础,对统计学和机器学习有一定了解的研究人员或工程师。; 使用场景及目标:①需要对复杂数据分布进行建模和拟合的场景;②希望通过优化算法提升模型性能的研究项目;③学习如何实现和应用先进的统计分布及优化技术。; 阅读建议:由于涉及较多数学公式和编程实现,建议读者在阅读时结合相关数学知识,同时动手实践代码,以便更好地理解和掌握Johnson-SU分布及其优化方法。
TSP问题的3种智能优化方法求解(研究生课程《智能优化算法》结课大作业).zip
【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
自动发布Java项目(Tomcat)Shell脚本
# 基于webpack和Vue的前端项目构建方案 ## 项目简介 本项目是基于webpack和Vue构建的前端项目方案,借助webpack强大的打包能力以及Vue的开发特性,可用于快速搭建现代化的前端应用。项目不仅完成了基本的webpack与Vue的集成配置,还在构建速度优化和代码规范性方面做了诸多配置。 ## 项目的主要特性和功能 1. 打包功能运用webpack进行模块打包,支持将scss转换为css,借助babel实现语法转换。 2. Vue开发支持集成Vue框架,能使用Vue单文件组件的开发模式。 3. 构建优化采用threadloader实现多进程打包,cacheloader缓存资源,极大提高构建速度开启热更新功能,开发更高效。 4. 错误处理与优化提供不同环境下的错误映射配置,便于定位错误利用webpackbundleanalyzer分析打包体积。
Hands-On Large Language Models - Jay Alammar 袋鼠书 《动手学大语言模型》PDF
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
# 基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统 ## 项目简介 本项目是一个基于Arduino Feather M0和Raspberry Pi的传感器数据采集与监控系统。系统通过Arduino Feather M0采集传感器数据,并通过WiFi将数据传输到Raspberry Pi。Raspberry Pi运行BalenaOS,集成了MySQL、PHP、NGINX、Apache和Grafana等工具,用于数据的存储、处理和可视化。项目适用于环境监测、物联网设备监控等场景。 ## 项目的主要特性和功能 1. 传感器数据采集使用Arduino Feather M0和AM2315传感器采集温度和湿度数据。 2. WiFi数据传输Arduino Feather M0通过WiFi将采集到的数据传输到Raspberry Pi。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。