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

[经验分享] LVS学习笔记 8 crm实现Mysql高可用集群

[复制链接]

尚未签到

发表于 2015-11-20 15:28:00 | 显示全部楼层 |阅读模式
  172.16.10.11nfs.sweifan.com 提供LVM格式的nfs,lvm方便扩展和备份


  
  我没空间了,要先删除分区,boot,home,根不能动,删除4,5

  
  # fdisk /dev/sda


# partprobe /dev/sda


  
  没办法,重启喽
  # pvcreate /dev/sda6
  # lvcreate -L 512M -n mydata myvg  只用了512M,剩余的以后试验备份用
  # mke2fs -j /dev/myvg/mydata        格式化
  然后开机自动挂载,输出为nfs。这里边要新建目录存数据,mysql用户要有读写权限
  添加mysql用户mysql组,为普通用户,并且不能登录
  # groupadd -g 3306 mysql    gid:3306
# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql   uid:3306
  
  创建目录,根下的mydata,用以挂载新分区
  # mkdir /mydata
  然后设置开机自动挂载
  # vim /etc/fstab

  
  # mount -a
  # mount

  
  创建数据目录:
  # mkdir /mydata/data
  给mysql用户权限
  # chown -R mysql.mysql /mydata/data
  然后把目录导出去:当然写简单点,直接 172.16.0.0/255.255.0.0(rw)
  # vim /etc/exports

  
  # exportfs -arv
  # service nfs restart   没有这一步可能远程挂载不上
  看看文件权限:

  
  然后在node节点操作:把所有之前的资源都删除
  node1
  # groupadd -g 3306 mysql
  # useradd -g 3306 -u 3306 -s /sbin/nologin-M mysql
  # mkdir /mydata
  试一下:
  # mount -t nfs 172.16.10.11:/mydata /mydata
  看看权限是否应设正确:

  
  映射不对,应该是mysql和root。
  卸载nfs。解决问题
  参考: http://www.361way.com/nfs-mount-nobody/2616.html
  修改nfs服务器和客户端的idmapd.conf
  # vim /etc/idmapd.conf

  
  对nfs和所有node做如此修改,因为我的所有虚拟主机根域都是sweifan.com,根域一致,映射就没问题了。当然前提是所有主机上有同样的用户和组,且ID号都一样,才能完成映射。
  修改之后:
  # service rpcidmapd restart
  然后在挂载。OK,用户权限映射没问题。
  
  # usermod -s /bin/bash mysql   mysql不能登录,指定shell
  # su mysql
  命令提示符变为:bash-4.1$。试着在data中创建文件,看能不能写,能写就OK
  bash-4.1$ exit  退出bash,退出mysql
  # umount /mydata      注意要退出mydata才能卸载
  node2结点做同样设置。我就出现了node1权限映射正确,node2不正确,一个是root,另一个是nobody.搞不好.但是一重启,在挂载就好了,TMD.
  
  编译安装mysql(需要cmake)
  编译安装时是不需要现在就把nfs挂载的,安装完成之后,初始化数据库时才需要挂载。
  #cmake . -LH
  #cmake .-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFIGDIR=/etc-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1-DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0-DMYSQL_UNIX_ADDR=/tmp/mysql.sock-DEFAULT_CHARSET=utf8
  
  这么多无非是指定安装路径、数据文件路径、配置文件路径、各种存储引擎是否启用、各种功能是否启用、字符集。。。这些功能默认就有的,比如安装路径,默认就是/usr/local/mysql
  警告:提领类型双关的指针将破坏强重叠规则  直接忽略
  #make && make install
  # chown -R :mysql /usr/local/mysql/    数组改为mysql,然后初始化数据库
  # mount -t nfs 172.16.10.11:/mydata /mydata
  # scripts/mysql_install_db --user=mysql--datadir=/mydata/data
  出错:
  chown: 正在更改"/mydata/data"的所有者: 不允许的操作
  Cannot change ownershipof the database directories to the 'mysql'
  user.  Check that you have the necessary permissionsand try again.
  why???
  因为这里初始化时,我们以管理员身份在执行操作,而在nfs服务器上,exports文件里边输出目录默认root_squash,即登入nfs使用分享目录的使用者是root身份,那么这个使用者的权限将被压缩为匿名用户nobody。所以我们需要在nfs服务器/etc/exports输出目录权限加上no_root_squash,然后再初始化数据库,但是注意,此时该用户对于该共享目录就具有root权限,既不安全,但此时我们需要这个权限。所以我们的nfs共享主机最好只是指定的主机,而不是共享给某网段。IPtables添加规则也可以。
  nfs.sweifan.com下操作:
  # vim /etc/exports
  /mydata                172.16.0.0/16(no_root_squash,rw)
  # exportfs -arv     重新导出共享文件
  


  切换回node1,mysql服务器
  # scripts/mysql_install_db --user=mysql--datadir=/mydata/data

  
  OK,数据库初始化成功
  # ls -l /mydata/data/

  
  启动之前,准备好配置文件:
  # cp /usr/local/mysql/support-files/my-large.cnf/etc/my.cnf
  # vim /etc/my.cnf
  在[mysqld]加上datadir和innodb_file_per_table(每表一个表空间文件)

  
  # cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld
  但是记得么,我们的高可用服务不能自动启动哦
  # chkconfig --add mysqld   加到服务列表
  # chkconfig mysqld off
  手动启动一下看看:
# service mysqld start


  
  手动启动mysql客户端看看:一台主机内,mysql和mysqld连接是通过socket
  # /usr/local/mysql/bin/mysql

  
  OK没问题,退出\q
  # service mysqld stop
  #umount /mydata
  
  OK接下来可以配置我们的高可用集群啦
  启用heartbeat
  # service heartbeat start
  # ssh node2 'service heartbeat start'
  # hb_gui  删除之前所有资源,这里只配置mysql集群
  
  规划:依旧是三个资源,启动顺序从上到下
  vip:172.16.10.10
  filesystem
  mysqld
  协同(collocation) IP和filesystem
  我觉得资源组比协同约束好用,定义一个资源组把:按照启动次序添加资源
  这里mysqld的资源代理是lsb格式,不需要参数
建好后启动:


  
  现在还不支持远程登录,mysqld在本机上登录添加用户:
  # /usr/local/mysql/bin/mysql
  mysql> GRANT ALL ON *.* TO 'root'@'%'IDENTIFIED BY 'mysql';
  mysql> FLUSH PRIVILEGES;
在win7主机上使用Navicatfor mysql客户端连接测试


  
  测试连接,OK 都没问题,新建一个表,然后down掉node1,rangnode2启用
  看还能否连上并查看到刚新建的表.

  

  
  OK没问题:
  但是呢 现在nfs成了单点故障了.再对nfs高可用?buhao,4台主机就为了mysql.考虑DRDB,两台主机存储作镜像
  DRDB:通过网络将两个主机上的磁盘做成镜像

  下一篇将开始drbd+corosync
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

运维网声明 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.iyunv.com/thread-141604-1-1.html 上篇帖子: LVS、Nginx负载分衡构建实战,以及应用性能对比 下篇帖子: LVS三种模式搭建步骤,参考待操作。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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