设为首页 收藏本站
查看: 925|回复: 0

[经验分享] mysql集群与存储

[复制链接]

尚未签到

发表于 2018-10-2 10:13:34 | 显示全部楼层 |阅读模式
  存储的目标:存储是根据不同的应用环境通过采取合理、安全、有效
  的方式将数据保存到某些介质上并能保证有效的访问
  ·  一方面它是数据临时或长期驻留的物理媒介
  ·  另一方面,它是保证数据完整安全存放的方式或行为
  ·  存储就是把这两个方面结合起来,向客户提供一套数据
  存放解决方案
  块级别:提供块设备(磁盘)
  文件级别:提供共享文件夹
  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.cn  192.168.4.1  存储服务器
  Vh02.tedu.cn  192.168.4.2  mysql1
  Vh03.tedu.cn  192.168.4.3  mysql2
  [root@room8pc16 nsd1802]# 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上安装存储端软件包
  [root@vh01 ~]# yum install -y targetcli.noarch
  5、为存储端准备硬盘。虚拟机可以在不关机的情况下,直接加硬盘。
  6、创建vdb1作为共享存储的远程磁盘
  [root@vh01 ~]# parted  /dev/vdb
  (parted) mklabel  gpt
  创建一个主分区,起始位置是1M,结束位置是整个硬盘的10%容量部分
  (parted) mkpart  primary  1M  10%
  (parted) mkpart  primary  10%  20%
  (parted) print  查看
  (parted) quit
  [root@vh01 ~]# lsblk
  7、配置target存储
  [root@vh01 ~]# targetcli
  创建后端存储
  /> /backstores/block  create  formysql  /dev/vdb1
  创建IQN对象
  /> /iscsi  create  iqn.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/acls  create  iqn.2018-06.cn.tedu.vh02
  绑定地址(可以省略,因为默认已配置好)
  /> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/portals/  create  0.0.0.0
  存盘
  /> saveconfig
  /> exit
  8、启动服务
  [root@vh01 ~]# systemctl start target
  [root@vh01 ~]# systemctl enable  target
  三、配置iSCSI客户端
  1、安装软件包
  [root@vh02 ~]# yum  install  iscsi-initiator-utils
  2、修改客户端的iqn名称
  [root@vh02 ~]# vim /etc/iscsi/initiatorname.iscsi
  InitiatorName=iqn.2018-06.cn.tedu.vh02
  3、发现服务端
  [root@vh02 ~]# man  iscsiadm  查看帮助
  [root@vh02 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
  此时,可以发现存储的iqn名称,但是执行lsblk是看不到新磁盘的。
  4、登陆target。可以通过man帮助中看到的命令执行,也可以执行以下操作
  [root@vh02 ~]# systemctl  restart  iscsi
  [root@vh02 ~]# lsblk  出现新硬盘
  四、使用iSCSI磁盘
  1、分区、格式化
  [root@vh02 ~]# parted  /dev/sda
  (parted) mklabel  gpt
  (parted) mkpart  primary  1M  100%
  (parted) quit
  [root@vh02 ~]# mkfs.ext4  /dev/sda1
  2、安装mariadb
  [root@vh02 ~]# yum  install  -y  mariadb-server
  3、挂载再启服务
  [root@vh02 ~]# mount  /dev/sda1  /var/lib/mysql/
  [root@vh02 ~]# chown  mysql.mysql  /var/lib/mysql/
  [root@vh02 ~]# systemctl  start  mariadb
  五、测试
  1、创建数据库,并写入数据
  [root@vh02 ~]# mysql  -uroot
  MariaDB [(none)]> CREATE DATABASE nsd1802 DEFAULT CHAR SET utf8;
  MariaDB [(none)]> USE  nsd1802;
  MariaDB [nsd1802]> CREATE TABLE students(name varchar(20));
  MariaDB [nsd1802]> INSERT  INTO  students  VALUES ("李洋");
  MariaDB [nsd1802]> SELECT FROM students;
  2、停止mariadb服务,卸载sda1(模拟vh02宕机了)
  一定要将共享存储卸载,不能vh02和vh03同时挂载共享存储。因ext4/xfs是单节点文件系统,如果多个节点同时挂载,就会损坏文件系统,使得数据丢失。
  3、在vh03上挂载共享存储,安装数据库,让它为客户机提供服务。
  [root@vh02 ~]# shutdown  -h  now
  [root@vh03 ~]# yum  install  -y  iscsi-initiator-utils
  [root@vh01 ~]# targetcli
  /> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/acls/ create iqn.2018-06.cn.tedu.vh03
  /> saveconfig
  [root@vh03 ~]# vim  /etc/iscsi/initiatorname.iscsi
  InitiatorName=iqn.2018-06.cn.tedu.vh03
  [root@vh03 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
  [root@vh03 ~]# systemctl restart iscsi
  [root@vh03 ~]# yum  install  -y  mariadb-server
  [root@vh03 ~]# mount  /dev/sda1  /var/lib/mysql/
  [root@vh03 ~]# systemctl start mariadb
  [root@vh03 ~]# mysql
  MariaDB [(none)]> use nsd1802;
  MariaDB [nsd1802]> select  from 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目录中的说明路径
  [root@room8pc16 ~]# udevadm  info  --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盘的硬件信息
  [root@room8pc16 ~]# udevadm  info  --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)编写规则文件
  [root@room8pc16 ~]# vim  /etc/udev/rules.d/90-udisk.rules
  ACTION=="add", KERNEL=="sd[a-z]*", DRIVERS=="usb-storage",
  SYMLINK+="udisk%n"
  将设备连到主机,ACTION(行为)就是add,KERNEL的意思是没有人为干预内核给它起的名。SYMLINIK是创建快捷方式,+=是额外增加。%n是分区号
  (4)重新接入U盘即可
  NFS:网络文件系统,用于Linux间共享。
  一、实现只读共享
  1、配置vh01为服务器
  (1)装包
  [root@vh01 ~]# yum  install  -y  nfs-utils
  (2)创建共享目录
  [root@vh01 ~]# mkdir  -pv  /nfsroot/nfsro
  [root@vh01 ~]# cp  /etc/hosts  /nfsroot/nfsro/
  (3)在配置文件中声明共享目录
  [root@vh01 ~]# vim  /etc/exports
  /nfsroot/nfsro   *(ro)
  (4)启动服务
  [root@vh01 ~]# systemctl restart nfs
  2、客户端使用共享
  (1)查看
  [root@vh03 ~]# showmount  -e  192.168.4.1
  (2)挂载
  [root@vh03 ~]# mount  192.168.4.1:/nfsroot/nfsro  /mnt/sharero
  [root@vh03 ~]# cat  /mnt/sharero/hosts
  二、创建读写共享
  1、配置vh01为服务器
  (1)服务器上创建共享目录
  [root@vh01 ~]# mkdir  -m  777  /nfsroot/nfsrw
  不管是NFS还是SAMBA,还是FTP,只要是读写,必须设置本地权限和配置文件的权限
  (2)声明读写目录
  /nfsroot/nfsrw   192.168.4.*(rw,sync)    ->sync表示同步读写
  (3)重新输出共享目录
  [root@vh01 ~]# exportfs  -rv
  2、配置vh03为客户端
  [root@vh03 ~]# mount  192.168.4.1:/nfsroot/nfsrw  /mnt/sharerw
  [root@vh03 ~]# echo 'hello world' > /mnt/sharerw/hi.txt
  [root@vh03 ~]# 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网络也发现一次共享
  [root@vh03 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.1 --discover
  [root@vh03 ~]# systemctl restart iscsi
  [root@vh03 ~]# lsblk    此时本地有了sda和sdb
  3、安装多路径软件包
  [root@vh03 ~]# yum  install  -y  device-mapper-multipath
  4、sda和sdb是同一设备,他们的wwid就是相同的
  获得磁盘的wwid:
  [root@vh03 ~]# /lib/udev/scsi_id  --whitelisted  --device=/dev/sda
  3600140589282e00db104fc29d84334a8
  5、生成多路径配置文件
  [root@vh03 ~]# mpathconf  --user_friendly_names  n
  6、在配置文件里声明获得wwid的方法,并且声明WWID是3600140589282e00db104fc29d84334a8的设备就是mpatha
  [root@vh03 ~]# vim  /etc/multipath.conf
  defaults {
  user_friendly_names no
  find_multipaths yes
  }
  multipaths {
  multipath {
  wwid    "3600140589282e00db104fc29d84334a8"
  alias   "mpatha"
  }
  }
  7、启动多路径服务,就可以在/dev/mapper下看到mpatha设备了
  [root@vh03 ~]# systemctl  start  multipathd
  [root@vh03 ~]# systemctl enable multipathd


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-607440-1-1.html 上篇帖子: Mysql提升权限 下篇帖子: mysql进阶
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表