沈阳定制网站驻马店市做网站
news/
2025/9/22 22:59:45/
文章来源:
沈阳定制网站,驻马店市做网站,公司推广哪个平台好,h5响应式音乐网站模板1.1 目的
部署MysqlCluster集群环境
1.2 MySQL集群Cluster原理
1 数据分片
MySQL集群Cluster将数据分成多个片段#xff0c;每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上#xff0c;提高系统的性能和可扩展性。
2. 数据同步
MySQL集群Cluster使…1.1 目的
部署MysqlCluster集群环境
1.2 MySQL集群Cluster原理
1 数据分片
MySQL集群Cluster将数据分成多个片段每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上提高系统的性能和可扩展性。
2. 数据同步
MySQL集群Cluster使用多个服务器来存储数据因此需要确保数据在不同的服务器之间同步。MySQL集群Cluster使用多种同步机制如异步复制、半同步复制和全同步复制等来确保数据的一致性和可靠性。
3. 负载均衡
MySQL集群Cluster使用负载均衡算法来分配客户端请求到不同的服务器上。这样可以避免单个服务器过载提高系统的性能和可用性。
4. 自动故障转移
MySQL集群Cluster可以自动检测服务器的故障并将故障服务器上的数据转移到其他服务器上。这样可以确保系统的高可用性和可靠性。
1.3 NDB引擎介绍
在MySQL实现集群Cluster架构中存储节点使用的存储引擎为NDB引擎。NDB引擎是一种分布式的基于内存的引擎因此作为MySQL集群Cluster架构中的存储节点内存一定要足够大。 使用NDB引擎有以下优点
1、基于内存存储没有磁盘I/O瓶颈速度快。 2、扩展性好增加节点即可实现数据库集群Cluster的扩展。 3、冗余性好单个节点故障集群还可以提供服务。 同时NDB引擎也有以下缺点
1、由于存储基于内存因此在设备断电后数据即丢失。 2、存储空间大小受内存大小限制。 3、多个节点分布式架构整体速度受会网络速度影响
1.4 InnoDB存储引擎
InnoDB是一种支持事务和行级锁的崇尚ACID特性的储存引擎。它是MySQL5.5版本后的默认引擎。InnoDB非常适合那些需要频繁进行更新操作的应用比如在线事务处理系统OLTP。 使用InnoDB引擎有以下优点
1、支持事务InnoDB储存引擎具有事务处理的能力能够保证数据的完整性和一致性。 2、行级锁InnoDB通过行级锁来控制并发读写操作提高了多用户环境下的并发性能。 3、外键约束InnoDB支持外键约束保证数据的完整性。 4、适合OLTPInnoDB引擎特别适合处理大量的并发读写操作如OLTP系统。 5、Crash RecoveryInnoDB具备崩溃恢复的功能能够在异常退出后将数据恢复到一致的状态。 同时InnoDB引擎也有以下缺点
1、 读写效率较差。 2、 占用的数据空间相对较大。
1.5 MyISAM存储引擎
MyISAM是MySQL早期的默认储存引擎它采用表级锁适合处理大量的读操作。然而它不支持事务和外键约束。 使用MyISAM引擎有以下优点
1、表级锁MyISAM采用表级锁对于大量更新操作的并发性能较差。 2、不支持事务MyISAM不支持事务处理因此可能存在数据不一致的风险。 3、全文索引MyISAM支持全文索引适合处理搜索引擎和全文搜索等应用。 4、插入性能MyISAM在插入性能方面较好对于大量的插入操作性能较高。
同时MyISAM引擎也有以下缺点
1、不支持事务的完整性和并发性。
1.6 引擎对比选择
InnoDB适用于大量的并发读写操作、需要事务处理和外键约束的应用MyISAM适用于大量的读操作、不需要事务处理和外键约束的应用NDB适用于高并发、实时性要求高的应用。
2. 部署程序
2.1 部署环境
服务器作用 服务器名 服务器IP 系统版本 管理节点 master 192.168.186.128 Centos7 数据节点 slave1 192.168.186.129 Centos7 SQL节点 slave2 192.168.186.130 Centos7 SQL节点 slave3 192.168.186.130 Centos7
2.2.1 修改四台主机名和添加hosts
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
sed -i s/enforcing/disabled/ /etc/selinux/config # 永久
setenforce 0 # 临时
#时间同步
yum install ntpdate -y
ntpdate time.windows.comhostnamectl set-hostname master bash #192.168.186.128上操作
hostnamectl set-hostname slave1 bash #192.168.186.129上操作
hostnamectl set-hostname slave2 bash #192.168.186.130上操作
hostnamectl set-hostname slave3 bash #192.168.186.131上操作#四台服务器同时添加内容
cat /etc/hosts EOF
192.168.186.128 master
192.168.186.129 slave1
192.168.186.130 slave2
192.168.186.131 slave3
EOF#所有机器上都操作
ssh-keygen -t rsa #一路回车不输入密码
###把本地的ssh公钥文件安装到远程主机对应的账户
for i in master slave1 slave2 slave3;do ssh-copy-id -i .ssh/id_rsa.pub $i ;done2.3 管理节点部署
2.3.1 管理节点原理
顾名思义管理节点用来对其它节点进行管理。实际操作中是通过对一个叫做config.ini的配置文件进行维护而起到管理的作用。该文件可以用来配置有多少需要维护的副本、需要在每个数据节点上为数据和索引分配多少内存、数据节点的位置、在每个数据节点上保存数据的磁盘位置、SQL节点的位置等信息。管理节点只能有一个配置要求不高。
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
sed -i s/enforcing/disabled/ /etc/selinux/config # 永久
setenforce 0 # 临时
#时间同步
yum install ntpdate -y
ntpdate time.windows.commkdir -p /var/log/mysql-cluster
mkdir -p /etc/mysql-cluster
mkdir -p /usr/local/mysql cd /usr/local/mysql #上传安装包到此路径下
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz --no-check-certificate
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz #解压
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster #重命名
touch /etc/mysql-cluster/config.inicat /etc/mysql-cluster/config.ini EOF
[ndbd default]
#数据写入数量。1表示一份,1个数据节点
NoOfReplicas1[ndb_mgmd]
nodeid1
#管理结点的日志
datadir/var/log/mysql-cluster
#管理结点的IP地址。本机IP
HostName192.168.186.128###### data node options: #存储结点
[ndbd]
HostName192.168.186.129
DataDir/data/mysql
#mysql数据存储路径
nodeid2# SQL node options: #关于SQL结点
[mysqld]
HostName192.168.186.130
nodeid3[mysqld]
HostName192.168.186.131
nodeid4
EOF#初始化管理节点
/usr/local/mysql/mysql-cluster/bin/ndb_mgmd -f /etc/mysql-cluster/config.ini#查看集群状态
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm show
#发现管理节点已经启动当数据节点以及SQL节点未启动时显示的是not connected。2.4 数据节点部署
2.4.1 数据节点原理
用来存放Cluster里面的数据可以有多个数据节点。每个数据节点可以有多个镜像节点。任何一个数据节点发生故障只要它的镜像节点正常Cluster就可以正常运行。 这3种逻辑上不同的节点物理上可以存放在不同的服务器上也可以在同一台 服务器上。通过架构中各个节点的介绍可以总结一下MySQL Cluter的访问过程前台应用利用一定的负载均衡算法将对数据库的访问分散到不同的SQL节点上然后SQL节点对数据节点进行数据访问并从数据节点返回结果最后SQL节点将收到的结果返给前台应用。而管理节点并不参与访问过长它只用来对SQL节点和数据节点进行配置管理。
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
sed -i s/enforcing/disabled/ /etc/selinux/config # 永久
setenforce 0 # 临时
#时间同步
yum install ntpdate -y
ntpdate time.windows.commkdir -p /usr/local/mysql cd /usr/local/mysql
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz --no-check-certificate
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz #解压
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster #重命名
useradd -M -s /sbin/nologin mysql
mkdir -p /etc/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/cat /etc/my.cnf EOF[mysqld]
#mysql数据存储路径
datadir/data/mysql
#启动ndb引擎
ndbcluster
#管理节点IP地址
ndb-connectstring192.168.186.128[mysql_cluster]
#管理节点IP地址
ndb-connectstring192.168.186.128
EOF#启动数据节点
/usr/local/mysql/mysql-cluster/bin/ndbd –initial#检查数据节点是否启动
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm show2.5 SQL节点部署2台 SQL服务器同样的部署方式
SQL节点可以理解为应用和数据节点之间的一个桥梁。应用不能直接访问数据节点只能先访问SQL节点然后SQL节点再去访问数据节点来返回数据。Cluster中可以有多个SQL节点通过每个SQL节点查询到的数据都是一直的通常来说SQL节点越多分配到每个SQL节点的负载就越少系统的整体性能就越好。
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
sed -i s/enforcing/disabled/ /etc/selinux/config # 永久
setenforce 0 # 临时
#时间同步
yum install ntpdate -y
ntpdate time.windows.commkdir -p /usr/local/mysql
mkdir -p /etc/mysql
mkdir -p /data/mysql cd /usr/local/mysql
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz --no-check-certificate
tar -zxvf mysql-cluster-8.0.25-linux-glibc2.12-x86_64.tar.gz #解压
mv mysql-cluster-8.0.25-linux-glibc2.12-x86_64 mysql-cluster #重命名chown -R mysql:mysql /data/mysql/
useradd -M -s /sbin/nologin mysql#创建SQL节点配置文件
cat /etc/my.cnf EOF[mysqld]
usermysql
#启动ndb引擎
ndbcluster
#管理节点IP地址
ndb-connectstring192.168.186.128[mysql_cluster]
#管理节点IP地址
ndb-connectstring192.168.186.128
EOF#配置mysql服务
cp /usr/local/mysql/mysql-cluster/support-files/mysql.server /etc/init.d/mysqld
chmod x /etc/init.d/mysqld#编辑mysqld服务
vim /etc/init.d/mysqld#图片中的代码如下
# Set some defaults
mysqld_pid_file_path
if test -z $basedir
thenbasedir/usr/local/mysql/mysql-clusterbindir/usr/local/mysql/mysql-cluster/binif test -z $datadirthendatadir/data/mysqlfisbindir/usr/local/mysql/mysql-cluster/binlibexecdir/usr/local/mysql/mysql-cluster/bin
elsebindir$basedir/binif test -z $datadirthendatadir$basedir/datafisbindir$basedir/sbinlibexecdir$basedir/libexec
fi
#初始化mysql数据库
cd /usr/local/mysql/mysql-cluster/bin
./mysqld --initialize --usermysql --basedir/usr/local/mysql/mysql-cluster --datadir/data/mysql/#启动mysql
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld#两台SQL节点操作相同。#检查SQL节点是否启动
/usr/local/mysql/mysql-cluster/bin/ndb_mgm
ndb_mgm show#2台 SQL服务器同样的部署后截图如下
cp /usr/local/mysql/mysql-cluster/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/tools/mysql/bin/mysql /usr/bin#登录数据库
mysql -uroot -p #初始化时候的密码
alter user user() identified by Mysql123; #修改为新的密码
flush privileges;3. 验证集群
#192.168.5.130上执行
mysql -uroot -pMysql123 #利用修改后的密码登录
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| ndbinfo |
| performance_schema |
| sys |
--------------------
5 rows in set (0.11 sec)mysql create database mqq;
Query OK, 1 row affected (0.17 sec)mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mqq |
| mysql |
| ndbinfo |
| performance_schema |
| sys |
--------------------
6 rows in set (0.00 sec)mysql 192.168.5.131上验证
mysql -uroot -pMysql123 #利用修改后的密码登录
mysql show databases;可以看到数据完成同步。 至此MysqlCluster集群部署完成
4. 集群命令操作
4.1 管理节点操作
管理节点关闭关闭管理节点后会一起关闭数据节点
/usr/local/mysql/mysql-cluster/bin/ndb_mgm -e shutdownrm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1 #如果集群配置有更新了4.2 数据节点操作
数据节点NDB关闭
cd /usr/local/mysql/mysql-cluster/bin
./ndbd stop4.3 SQL节点操作
SQL节点关闭
systemctl stop mysqld参考地址https://blog.csdn.net/hanyuce/article/details/134684116?app_version6.2.2codeapp_1562916241csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134684116%22%2C%22source%22%3A%22qq_14910065%22%7DuLinkIdusr1mkqgl919blenutm_sourceapp
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910672.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!