帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Mysql分布式集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上
发布时间:2024-02-27 23:43:51   分类:帮助文档
Mysql分布式集群部署---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、适合OLTP:InnoDB引擎特别适合处理大量的并发读写操作,如OLTP系统。 5、Crash Recovery:InnoDB具备崩溃恢复的功能,能够在异常退出后将数据恢复到一致的状态。 同时,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.com hostnamectl 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 ;done 2.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.com mkdir -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.ini cat > /etc/mysql-cluster/config.ini << EOF [ndbd default] #数据写入数量。1表示一份,1个数据节点 NoOfReplicas=1 [ndb_mgmd] nodeid=1 #管理结点的日志 datadir=/var/log/mysql-cluster #管理结点的IP地址。本机IP HostName=192.168.186.128 data node options: #存储结点 [ndbd] HostName=192.168.186.129 DataDir=/data/mysql #mysql数据存储路径 nodeid=2 # SQL node options: #关于SQL结点 [mysqld] HostName=192.168.186.130 nodeid=3 [mysqld] HostName=192.168.186.131 nodeid=4 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.com 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 #重命名 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-connectstring=192.168.186.128 [mysql_cluster] #管理节点IP地址 ndb-connectstring=192.168.186.128 EOF #启动数据节点 /usr/local/mysql/mysql-cluster/bin/ndbd –initial #检查数据节点是否启动 /usr/local/mysql/mysql-cluster/bin/ndb_mgm ndb_mgm> show 2.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.com mkdir -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] user=mysql #启动ndb引擎 ndbcluster #管理节点IP地址 ndb-connectstring=192.168.186.128 [mysql_cluster] #管理节点IP地址 ndb-connectstring=192.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" then basedir=/usr/local/mysql/mysql-cluster bindir=/usr/local/mysql/mysql-cluster/bin if test -z "$datadir" then datadir=/data/mysql fi sbindir=/usr/local/mysql/mysql-cluster/bin libexecdir=/usr/local/mysql/mysql-cluster/bin else bindir="$basedir/bin" if test -z "$datadir" then datadir="$basedir/data" fi sbindir="$basedir/sbin" libexecdir="$basedir/libexec" fi #初始化mysql数据库 cd /usr/local/mysql/mysql-cluster/bin ./mysqld --initialize --user=mysql --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 "Mysql@123"; #修改为新的密码 flush privileges; 3. 验证集群 #192.168.5.130上执行 mysql -uroot -pMysql@123 #利用修改后的密码登录 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 -pMysql@123 #利用修改后的密码登录 mysql> show databases; 可以看到数据完成同步。 至此MysqlCluster集群部署完成 4. 集群命令操作 4.1 管理节点操作 管理节点关闭(关闭管理节点后会一起关闭数据节点) /usr/local/mysql/mysql-cluster/bin/ndb_mgm -e shutdown rm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1 #如果集群配置有更新了 4.2 数据节点操作 数据节点(NDB)关闭 cd /usr/local/mysql/mysql-cluster/bin ./ndbd stop 4.3 SQL节点操作 SQL节点关闭 systemctl stop mysqld 参考地址:https://blog..net/hanyuce/article/details/134684116?app_version=6.2.2&code=app_1562916241&_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%7D&uLinkId=usr1mkqgl919blen&utm_source=app
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价