增量同步:
备份/迁移:辅助工具(mysql 主–从复制 rsync+inotify —》趋近于一致----sersync 双向同步 ----》MM)
迁移:mysql 从主机A迁移到主机B (一主两从模式)
一主、两从模式迁移方案
①确定迁移的时间、业务线停止的时间、要写文档描述具体操作,要发邮件审批
②确定迁移后的节点的环境问题(资源环境+系统的依赖环境+mysql内部的格式环境—自增长)
③rsync+inotify 持续同步
④测试、之前还要编写回滚方案
⑤提交检修申请 22:00-00:00
1.文件系统接口
2.对对象管理的软件集合
3.对象及属性
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取
文件系统的挂载使用:
除根文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问,挂载点即分区设备文件关联的某个目录文件类比:NFS
开源的分布式文件系统
由存储服务器、客户端以及NFS/Samba存储网关组成
五元数据服务器
扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议
brick:块服务器
volume:卷
fuse:伪文件系统,虚拟出来的文件系统
vfs:伪文件系统,虚拟出来的文件系统
glusterd:gfs的客户端
模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能
gige:千兆网/千兆接口
TCP/IP:网络协议
infiniband:网络协议,与TCP/IP相比,TCP/IP具有转发丢失数据包的特性,基于此通讯协议可能导致通讯变慢,而IB使用基于信任的
1、客户端或应用程序通过GlusterFS的挂载点访问数据,对于用户来说,集群系统的存在对用户是完全透明的,用户感觉不到是操作本地系统还是远端的集群系统。
2、用户的这个操作被递交给 本地linux系统的VFS来处理。
3、VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端,所以, 我们可以将 fuse文件系统理解为一个代理。
4、GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理
5、通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上
glusterfs支持6种卷,分别是:分布式卷、条带卷、复制卷、分布式条带卷、条带复制卷、和分布式条带复制卷
①分布式卷(默认)∶文件通过RASH算法分布到所有 Brick Server .上,这种卷是Glusterf 的基础;以文件为单位根据HASH算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID O,不具有容错能力。
②条带卷(默认):类似RAIDO,文件被分成数据块并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。
③复制卷(Replica volume):将文件同步到多个Brick 上,使其具备多个文件副本,属于文件级RAID1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。
④分布式条带卷(Distribute stripe volume) : Brick Server 数量是条带数(数据块分布的 Brick数量)的倍数,兼具分布式卷和条带卷的特点。
⑤分布式复制卷(Distribute Raplica voluma): Brick Server数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点条带复制卷(stripe Replica volume):类似RATD 10,同时具有条带卷和复制卷的特点
⑥分布式条带复制卷(Distribute stripe ReplicavoLume):三种基本卷的复合卷,通常用于类Map Reduce应用
1.存储服务器
2.客户端
3.NFS/Samba存储网关组成
客户端比较重要,因为他是无元服务器的
**注:**云服务器的作用:存储元数据,帮用户定位文件的位置、索引等信息
1、准备环境
#关闭防火墙
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
2、磁盘分区并挂载
[root@localhost ~]#cd /opt/
[root@localhost opt]#vim fdisk.sh
#!/bin/bash
dev=`ls /dev/sd* |grep -o 'sd[b-z]'| uniq`
for i in $dev
do
echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$i &> /dev/null
mkfs.xfs /dev/${i}"1" &> /dev/null
mkdir -p /data/${i}"1" &> /dev/null
echo "/dev/${i}"1" /data/${i}"1" xfs defaults 0 0 " >> /etc/fstab
done
mount -a &> /dev/null
[root@localhost opt]#echo "- - -"> /sys/class/scsi_host/host0/scan
[root@localhost opt]#echo "- - -"> /sys/class/scsi_host/host1/scan
[root@localhost opt]#echo "- - -"> /sys/class/scsi_host/host2/scan
[root@localhost opt]#chmod -x /opt/fdisk.sh ##赋予执行权限
[root@localhost opt]#bash fdisk.sh
[root@localhost opt]#df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 36G 3.6G 32G 11% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sdb1 xfs 20G 33M 20G 1% /data/sdb1
/dev/sdc1 xfs 20G 33M 20G 1% /data/sdc1
/dev/sdd1 xfs 20G 33M 20G 1% /data/sdd1
/dev/sde1 xfs 20G 33M 20G 1% /data/sde1
3、修改主机名,配置/etc/hosts文件
##nod1为例
[root@localhost ~]#hostnamectl set-hostname nod1
[root@localhost ~]#su
[root@nod1 opt]#vim /etc/hosts
192.168.223.101 node1
192.168.223.102 node2
192.168.223.105 node3
192.168.223.103 node4
192.168.223.104 client
4、安装、启动glusterFS(所有nod的节点上操作)
#将gfsrepo安装包上传到/opt目录下
[root@node1 opt]#rz -E
rz waiting to receive.
[root@node1 opt]#ls
fdisk.sh gfsrepo.tar.gz rh
[root@node1 opt]#tar xf gfsrepo.tar.gz
#配置yum文件
[root@node1 opt]#cd /etc/yum.repos.d/
[root@node1 yum.repos.d]#ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
[root@node1 yum.repos.d]#mkdir bak
[root@node1 yum.repos.d]#mv *.repo bak
[root@node1 yum.repos.d]#ls
bak
[root@node1 yum.repos.d]#vim glfs.repo
[local]
name=local
baseurl=file:///opt/gfsrepo
gpgcheck=0
[root@node1 yum.repos.d]#yum clean && yum makecache
[root@node1 opt]#yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
##开启
[root@node1 opt]#systemctl start glusterd.service
[root@node1 opt]#systemctl status glusterd.service
● glusterd.service - GlusterFS, a clustered file-system server
Loaded: loaded (/usr/lib/systemd/system/glusterd.service; disabled; vendor preset: disabled)
Active: active (running) since 一 2022-01-03 15:29:05 CST; 26s ago
Process: 41830 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 41831 (glusterd)
CGroup: /system.slice/glusterd.service
└─41831 /usr/sbin/glusterd -p /var/run/glusterd.pid --log...
1月 03 15:29:05 node1 systemd[1]: Starting GlusterFS, a clustered ....
1月 03 15:29:05 node1 systemd[1]: Started GlusterFS, a clustered f....
Hint: Some lines were ellipsized, use -l to show in full.
5、添加节点到存储信任池中(在node1上操作)
[root@node1 opt]#gluster peer probe node1
peer probe: success. Probe on localhost not needed
[root@node1 opt]#gluster peer probe node2
peer probe: success.
[root@node1 opt]#gluster peer probe node3
peer probe: success.
[root@node1 opt]#gluster peer probe node4
peer probe: success.
[root@node1 opt]#gluster peer status ##在每个节点上查看
Number of Peers: 3
Hostname: node2
Uuid: 8f16350f-f421-4b86-9c82-31a18dbe5b4e
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 134f4869-c892-44df-b44c-e939e5ff253b
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: e18a43fb-b4ca-45ff-8448-f0ea2efab2cb
State: Peer in Cluster (Connected)
#创建分布式卷,没有指定类型,默认创建的是分布式卷
[root@node1 opt]#gluster volume create dis-voluem node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-voluem: success: please start the volume to access data
#查看卷列表
[root@node1 opt]#gluster volume list
dis-voluem
#启动卷
[root@node1 opt]#gluster volume start dis-volume
#查看卷的进本信息
[root@node1 opt]#gluster volume info dis-volume
#指定的类型是stripe 数值为2 且后面跟了两个 brick server ,所以创建的是条带卷
[root@node1 opt]#gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
#启动
[root@node1 opt]#gluster volume start stripe-volume
volume start: stripe-volume: success
#查看
[root@node1 opt]#gluster volume list
dis-voluem
stripe-volume
#查看详细信息
[root@node1 opt]#gluster volume info stripe-volume
Volume Name: stripe-volume
Type: Stripe
Volume ID: e2bbfefa-388e-49b7-91fd-929fe42fe58e
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
#配置环境
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#hostnamectl set-hostname client
[root@localhost ~]#su
[root@client ~]#
[root@client ~]#vim /etc/hosts
192.168.223.101 node1
192.168.223.102 node2
192.168.223.105 node3
192.168.223.103 node4
192.168.223.104 client
[root@client ~]#cd /etc/yum.repos.d/
[root@client yum.repos.d]#ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
[root@client yum.repos.d]#mkdir bak
[root@client yum.repos.d]#mv *.repo bak
[root@client yum.repos.d]#ls
bak
[root@client yum.repos.d]#vim loc.repo
[local]
name=local
baseurl=file:///opt/gfsrepo
gpgcheck=0
root@client yum.repos.d]#cd /opt/
[root@client opt]#ls
rh
[root@client opt]#rz -E
rz waiting to receive.
[root@client opt]#ls
gfsrepo.tar.gz rh
[root@client opt]#tar xzf gfsrepo.tar.gz
[root@client opt]#ls
gfsrepo gfsrepo.tar.gz rh
[root@client optyum install glusterfs glusterfs-fuse -y
#创建挂载点
[root@client opt]#mkdir -p /data/{dis,stripe,rep,dis_stripe,dis_rep}
[root@client opt]#cd /data/
[root@client data]#ls
dis dis_rep dis_stripe rep stripe
[root@client data]#mount.glusterfs node1:stripe-volume /data/dis
测试:
cd /opt
dd if=/dev/zero of=/demo1.log bs=1M count=40
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1M count=40
dd if=/dev/zero of=/demo5.log bs=1M count=40
cp /demo* /data/dis
cp /demo* /data/stripe/
cp /demo* /data/rep/
cp /demo* /data/dis_stripe/
cp /demo* /data/dis_rep/
[root@node1 opt]#ll /data/sdb1
#已文件形式的分布式
总用量 163840
-rw-r--r--. 2 root root 41943040 12月 15 06:39 demo1.log
-rw-r--r--. 2 root root 41943040 12月 15 06:39 demo2.log
-rw-r--r--. 2 root root 41943040 12月 15 06:39 demo3.log
-rw-r--r--. 2 root root 41943040 12月 15 06:39 demo4.log
[root@node2 opt]#ll /data/sdb1
总用量 40960
-rw-r--r--. 2 root root 41943040 12月 15 06:39 demo5.log
[root@node1 opt]#ll -h /data/sdc1
#条带卷
总用量 101M
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo1.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo2.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo3.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo4.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo5.log
[root@node2 opt]#ll -h /data/sdc1
总用量 101M
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo1.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo2.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo3.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo4.log
-rw-r--r--. 2 root root 20M 12月 15 06:39 demo5.log
[root@node3 opt]# ll -h /data/sdb1
#复制1
总用量 200M
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo1.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo2.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo3.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo4.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo5.log
[root@node4 yum.repos.d]#ll -h /data/sdb1
总用量 200M
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo1.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo2.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo3.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo4.log
-rw-r--r--. 2 root root 40M 12月 15 06:39 demo5.log
#####破坏测试####
systemctl stop glusterd.service ###当我们关机node2 在客户端上查看文件是否正常
####分布式卷数据查看###
[root@localhost dis]# ll ###我们在客户上发现少了demo5.log文件,这个是node2上的,
总用量 163840
-rw-r--r-- 1 root root 41943040 10月 18 14:50 demo1.log
-rw-r--r-- 1 root root 41943040 10月 18 14:50 demo2.log
-rw-r--r-- 1 root root 41943040 10月 18 14:50 demo3.log
-rw-r--r-- 1 root root 41943040 10月 18 14:50 demo4.log
####条带卷###
[root@localhost text]# cd stripe/ ####无法访问,条带卷不具备冗余性
[root@localhost stripe]# ll
总用量 0
#####分布式条带卷####
[root@localhost dis_and_stripe]# ll #####无法访问,分布条带卷不具备冗余性
总用量 40960
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo5.log
###分布式复制卷####
[root@localhost dis_and_rep]# ll #####可以访问,分布式复制卷具备冗余性
总用量 204800
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo1.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo2.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo3.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo4.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo5.log
###node2 和node4 挂机####
1、测试复制卷是否正常
[root@localhost rep]# ls -l ###在客户机上测试正常 数据有
总用量 204800
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo1.log
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo2.log
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo3.log
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo4.log
-rw-r--r-- 1 root root 41943040 10月 18 14:51 demo5.log
2、测试分布式条卷是否正常
[root@localhost dis_and_stripe]# ll ###在客户机上测试正常 没有数据
总用量 0
3、测试分布式复制卷是否正常
[root@localhost dis_and_rep]# ll ###在客户机上测试正常 有数据
总用量 204800
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo1.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo2.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo3.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo4.log
-rw-r--r-- 1 root root 41943040 10月 18 14:52 demo5.log