mysql集群与存储
存储的目标:存储是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问
·一方面它是数据临时或长期驻留的物理媒介
·另一方面,它是保证数据完整安全存放的方式或行为
·存储就是把这两个方面结合起来,向客户提供一套数据
存放解决方案
块级别:提供块设备(磁盘)
文件级别:提供共享文件夹
DAS:直连式存储。本地磁盘
NAS:网络附加存储。本质上就是共享文件夹(nfs/samba)
SAN:存储区域网络。
FC SAN:基于光纤的存储区域网络
iSCSI技术
·Internet SCSI
·IETF制定的标准,将SCSI数据块映射为以太网数据包
·是一种基于IP Storage理论的新型存储技术
·将存储行业广泛应用的SCSI接口技术与IP网络相结合
·可以在IP网络上构建SAN
·最初由Cisco和IBM开发
优势
–基于IP协议技术的标准
–允许网络在TCP/IP协议上传输SCSI命令
–相对FC SAN,iSCSI实现的IP SAN投资更低
–解决了传输效率、存储容量、兼容性、开放性、安全
性等方面的问题
–没有距离限制
客户端
–iSCSI Initiator:软件实现,成本低、性能较低
–iSCSI HBA:硬件实现,性能好,成本较高
·存储设备端
–iSCSI Target
·以太网交换机
iscsi 部署步骤
二、配置iSCSI
1、准备三台虚机
vh01.tedu.cn192.168.4.1存储服务器
Vh02.tedu.cn192.168.4.2mysql1
Vh03.tedu.cn192.168.4.3mysql2
# clone-auto7
2、初始化三台虚拟机:ip地址、主机名、selinux、防火墙、yum
配置IP地址的方式可以使用nmtui
TUI:Text User Interface 文本用户界面
GUI:Graphical User Interface 图形用户界面
CLI:Command Line Interface 命令行界面
3、为客户端提供存储,需要给存储提供个名字。这个名字推荐使用iqn名称
iqn = iqn.时间.域名的反写.字符串:子字符串
如iqn.2018-06.cn.tedu.nsd1802:teacher
如果为全国200多同学都提供存储,就需要有200多不一样的名字。
4、在vh01上安装存储端软件包
# yum install -y targetcli.noarch
5、为存储端准备硬盘。虚拟机可以在不关机的情况下,直接加硬盘。
6、创建vdb1作为共享存储的远程磁盘
# parted/dev/vdb
(parted) mklabelgpt
创建一个主分区,起始位置是1M,结束位置是整个硬盘的10%容量部分
(parted) mkpartprimary1M10%
(parted) mkpartprimary10%20%
(parted) print查看
(parted) quit
# lsblk
7、配置target存储
# targetcli
创建后端存储
/> /backstores/blockcreateformysql/dev/vdb1
创建IQN对象
/> /iscsicreateiqn.2018-06.cn.tedu.nsd1802
向IQN对象中添加存储vdb1
/> ls
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/luns create /backstores/block/formysql
授权客户端访问,如客户端iqn名字是iqn.2018-06.cn.tedu.vh02
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/aclscreateiqn.2018-06.cn.tedu.vh02
绑定地址(可以省略,因为默认已配置好)
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/portals/create0.0.0.0
存盘
/> saveconfig
/> exit
8、启动服务
# systemctl start target
# systemctl enabletarget
三、配置iSCSI客户端
1、安装软件包
# yuminstalliscsi-initiator-utils
2、修改客户端的iqn名称
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-06.cn.tedu.vh02
3、发现服务端
# maniscsiadm查看帮助
# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
此时,可以发现存储的iqn名称,但是执行lsblk是看不到新磁盘的。
4、登陆target。可以通过man帮助中看到的命令执行,也可以执行以下操作
# systemctlrestartiscsi
# lsblk出现新硬盘
四、使用iSCSI磁盘
1、分区、格式化
# parted/dev/sda
(parted) mklabelgpt
(parted) mkpartprimary1M100%
(parted) quit
# mkfs.ext4/dev/sda1
2、安装mariadb
# yuminstall-ymariadb-server
3、挂载再启服务
# mount/dev/sda1/var/lib/mysql/
# chownmysql.mysql/var/lib/mysql/
# systemctlstartmariadb
五、测试
1、创建数据库,并写入数据
# mysql-uroot
MariaDB [(none)]> CREATE DATABASE nsd1802 DEFAULT CHAR SET utf8;
MariaDB [(none)]> USEnsd1802;
MariaDB > CREATE TABLE students(name varchar(20));
MariaDB > INSERTINTOstudentsVALUES ("李洋");
MariaDB > SELECT FROM students;
2、停止mariadb服务,卸载sda1(模拟vh02宕机了)
一定要将共享存储卸载,不能vh02和vh03同时挂载共享存储。因ext4/xfs是单节点文件系统,如果多个节点同时挂载,就会损坏文件系统,使得数据丢失。
3、在vh03上挂载共享存储,安装数据库,让它为客户机提供服务。
# shutdown-hnow
# yuminstall-yiscsi-initiator-utils
# targetcli
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/acls/ create iqn.2018-06.cn.tedu.vh03
/> saveconfig
# vim/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-06.cn.tedu.vh03
# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
# systemctl restart iscsi
# yuminstall-ymariadb-server
# mount/dev/sda1/var/lib/mysql/
# systemctl start mariadb
# mysql
MariaDB [(none)]> use nsd1802;
MariaDB > selectfrom students;
Udev:动态管理设备文件的方法
1、Linux中一切皆文件。
2、Udev管理设备文件。如,主机连接U盘出现新的文件(sdb),移除U盘,磁盘文件消失。
3、硬件文件的信息写入到了/sys目录下,这个目录与proc类似。
4、我们用udev可以为设备改名,或执行自定义操作。
(1)在/etc/udev/rules.d目录下创建规则文件
(2)接入新设备,如果满足规则,就会按管理员的规则应用
(3)规则文件名:数字-名字.rules
5、规则文件中,管理员指定硬件满足或不满足哪些条件,就执行什么操作
6、实例:U盘接入主机,起名为udisk
(1)找到U盘在/sys目录中的说明路径
# udevadminfo--query=path--name=/dev/sdb1
/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/host5/target5:0:0/5:0:0:0/block/sdb/sdb1
(2)根据上一步的路径,查询U盘的硬件信息
# udevadminfo--query=all--attribute-walk--path=/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/host5/target5:0:0/5:0:0:0/block/sdb/sdb1
出现的内容非常多,只需要找到跟U盘相关的内容即可,如DRIVERS=="usb-storage"
(3)编写规则文件
# vim/etc/udev/rules.d/90-udisk.rules
ACTION=="add", KERNEL=="sd*", DRIVERS=="usb-storage",
SYMLINK+="udisk%n"
将设备连到主机,ACTION(行为)就是add,KERNEL的意思是没有人为干预内核给它起的名。SYMLINIK是创建快捷方式,+=是额外增加。%n是分区号
(4)重新接入U盘即可
NFS:网络文件系统,用于Linux间共享。
一、实现只读共享
1、配置vh01为服务器
(1)装包
# yuminstall-ynfs-utils
(2)创建共享目录
# mkdir-pv/nfsroot/nfsro
# cp/etc/hosts/nfsroot/nfsro/
(3)在配置文件中声明共享目录
# vim/etc/exports
/nfsroot/nfsro *(ro)
(4)启动服务
# systemctl restart nfs
2、客户端使用共享
(1)查看
# showmount-e192.168.4.1
(2)挂载
# mount192.168.4.1:/nfsroot/nfsro/mnt/sharero
# cat/mnt/sharero/hosts
二、创建读写共享
1、配置vh01为服务器
(1)服务器上创建共享目录
# mkdir-m777/nfsroot/nfsrw
不管是NFS还是SAMBA,还是FTP,只要是读写,必须设置本地权限和配置文件的权限
(2)声明读写目录
/nfsroot/nfsrw 192.168.4.*(rw,sync) ->sync表示同步读写
(3)重新输出共享目录
# exportfs-rv
2、配置vh03为客户端
# mount192.168.4.1:/nfsroot/nfsrw/mnt/sharerw
# echo 'hello world' > /mnt/sharerw/hi.txt
# cat/mnt/sharerw/hi.txt
多路径multipath
一、用途
如果客户端到服务器存储只有一条线路,那么该线路出现故障,存储就不可用了。可以再加一条线路。这个时候,客户端就会从两条线路发现同一存储设备,会给这个存储起两个名字,如sda和sdb。
客户端无论使用哪个存储都不合适。我们可以创建一个虚拟磁盘,如mpatha,客户端挂载mpatha,只要底层不要两条路径全部出现故障,mpatha一直可用。原理参考HSRP。
二、配置多路径
1、在vh01和vh03之间加上192.168.2.0/24网络
2、在vh03上通过192.168.2.0网络也发现一次共享
# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.1 --discover
# systemctl restart iscsi
# lsblk 此时本地有了sda和sdb
3、安装多路径软件包
# yuminstall-ydevice-mapper-multipath
4、sda和sdb是同一设备,他们的wwid就是相同的
获得磁盘的wwid:
# /lib/udev/scsi_id--whitelisted--device=/dev/sda
3600140589282e00db104fc29d84334a8
5、生成多路径配置文件
# mpathconf--user_friendly_namesn
6、在配置文件里声明获得wwid的方法,并且声明WWID是3600140589282e00db104fc29d84334a8的设备就是mpatha
# vim/etc/multipath.conf
defaults {
user_friendly_names no
find_multipaths yes
}
multipaths {
multipath {
wwid "3600140589282e00db104fc29d84334a8"
alias "mpatha"
}
}
7、启动多路径服务,就可以在/dev/mapper下看到mpatha设备了
# systemctlstartmultipathd
# systemctl enable multipathd
页:
[1]