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

[经验分享] keepalived 构建主备mysql

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-10-3 06:50:01 | 显示全部楼层 |阅读模式
  Mysql主主安装配置:
  安装前确认:版本号、校验码(md5sum)、端口号,安装路径
  安装依赖:
  yum install gcc gcc-c++ -y
  yum install cmake -y
  yum install ncurses-devel libtool  -y
  yum install bison -y
  创建mysql需要的文件夹:
  mkdir /usr/local/mysql/{etc,logs,data}
  mkdir /usr/local/mysql/logs/{bin-log,relay-log,slow-log,error-log}
  chown mysql:mysql /usr/local/mysql
  创建一个mysql的程序运行用户:
  sudo useradd –s /sbin/nologin mysql
  编译安装:
  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql
  make && make install
  备注:如果编译出错,可以先find / -name CMakeCache.txt,执行删除,然后再根据报错排除错误,执行重新编译
  赋予文件夹权限:
  chown –R mysql:mysql /usr/local/mysql
  配置文件的配置:
  cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
  

初始化mysql:        /usr/local/mysql/scripts/mysql_install_db --user=mysql  --defaults-file=/usr/local/mysql/etc/my.cnf --basedir=/usr/local/mysql/basedir --datadir=/usr/local/mysql/data  

  启动mysql: usr/local/mysql/basedir/bin/mysqld_safe --user=mysql
  

停止:/usr/local/mysql/basedir/bin/mysqladmin  -uroot –p   

  (禁止通过kill的方式停止进程)
  重写了配置文件后,启动报错:
  查看错误日志排查错误/usr/local/mysql/logs/error-log/
  查报错,百度经验需要重新初始化,初始化后解决问题
  Mysql创建用户修改权限:
  set password for root=password(‘12345678’)

  grant all privileges on . to ‘sas’@’%’>  delete from mysql.user where password=””;
  主root:密码:12345678
  从root:密码:12345678
  创建一个可供主从复制的数据库用户:

  grant replication slave on . to 'slave'@'%'>  查看二进制日志,做主主的复制:
  show master status;
  stop slave;
  change master to master_host='192.168.102.26',master_user='slave',master_password= ‘12345678',master_log_file='binlog.000001',master_port=3306,master_log_pos=244;
  start slave;
  show slave status;
  做成系统服务:
  ln -s /usr/local/mysql/bin/ /usr/bin        
  ln -s /usr/local/mysql/lib/ /usr/lib
  cp support-files/mysql.server /etc/init.d/mysqld -p
  chmod 755 /etc/init.d/mysqld
  chown mysql.mysql -R /usr/local/mysql
  chkconfig mysqld on
  安装keepalived:
  tar –xf keepalived-1.2.7.tar.gz
  ./configure --prefix=/usr/local/keepalived
  make
  make install
  cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  mkdir -pv /etc/keepalived
  cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  ln -s /usr/local/keepalived/sbin/keepalived /sbin/
  修改配置文件:
  vim /etc/keepalived/keepalived.conf
  

! Configuration File for keepalived  

  
global_defs {
  

  notification_email {
  

  root@linux.com
  

  }
  

  notification_email_from keepalived@localhost
  

  smtp_server mail.163.com
  

  smtp_connect_timeout 30
  

  router_id MySQL-ha
  

  }
  

  
vrrp_instance VI_1 {
  

  state BACKUP   #两台配置此处均是BACKUP
  

  interface eth0  #网卡,可使用ifconfig查看
  

  virtual_router_id 51
  

  priority 100   #优先级,另一台改为90
  

  advert_int 1
  

  nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
  

  authentication {
  

  auth_type PASS
  

  auth_pass keepalivedpass
  

  }
  

  virtual_ipaddress {
  

  192.168.1.200  #虚拟ip
  

  }
  

  }
  

  
virtual_server 192.168.1.200 3306 {
  

  delay_loop 2   #每个2秒检查一次real_server状态
  

  lb_algo wrr   #LVS算法
  

  lb_kind DR    #LVS模式
  

  persistence_timeout 60   #会话保持时间
  

  protocol TCP
  

  real_server 192.168.1.104 3306 {    #真实ip
  

  weight 3
  

  notify_down /etc/keepalived/check_keepalived  #检测到服务down后执行的脚本
  

  TCP_CHECK {
  

  connect_timeout 10    #连接超时时间
  

  nb_get_retry 3       #重连次数
  

  delay_before_retry 3   #重连间隔时间
  

  connect_port 3306   #健康检查端口
  

  }
  }
  }
  

  

  编辑服务down后执行的脚本:
  vim  /etc/keepalived/check_keepalived
  

#!/bin/bash  
MYSQL=/usr/local/mysql/bin/mysql
  
MYSQL_HOST=192.168.100.102  #根据实际填写
  
MYSQL_USER=root
  
MYSQL_PASSWORD=123456
  
CHECK_TIME=3
  
#mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
  
MYSQL_OK=1
  
function check_mysql_helth (){
  $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1
  if [ $? = 0 ];then
  MYSQL_OK=1
  echo mysql ok
  else
  MYSQL_OK=0
  echo mysql no ok
  fi
  return $MYSQL_OK
  
}
  

  
while [ $CHECK_TIME -ne 0 ]
  
do
  let "CHECK_TIME -= 1"
  check_mysql_helth
  
if [ $MYSQL_OK = 1 ]; then
  CHECK_TIME=0
  exit 0
  
fi
  
if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]
  
then
  /etc/init.d/keepalived stop
  exit 1
  
fi
  
sleep 1
  
done
  

  启动keepalived:
  service keepalived restart
  查询VIP:
  Ip addr
  防火墙放开vrrp协议
  防火墙开放
  #iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
  #iptables -I OUTPUT -o eth0 –d 224.0.0.0/8 -p vrrp -j ACCEPT
  iptables -A INPUT -i eth0 -p vrrp -s 192.168.1.107 -j ACCEPT  (对方ip地址)
  或
  iptables -A INPUT -p vrrp -j ACCEPT
  验证:
  1、在主库执行增删改操作,在从库观察状态是否同步
  2、在从库执行增删改操作,在主库观察状态是否同步
  3、停主的keepalived,查看从的ip,是否绑定成功
  问题总结:
  1、权限问题:
  现象:初始化没有报成功,没有错误日志
  分析:可能是由于无法写入而造成的异常
  方案:检查用户权限、文件夹权限(包括一级目录的权限)
  2、同步失败:
  现象:查看从状态,显示的是ok
  分析:可能是由于初始同步有问题,检查两库的状态
  方案:重新同步主从数据库,若还是无法同步,可能是由于tar包损坏,查看MD5值,重新下载安装
  3、5.5和5.6区别:
  两个版本设置字符集不同,5.6版本增加了uuid的概念
  4、keepalived绑定VIP失败:
  方案:检查配置文件的问题
  1)是否有多余的部分
  2)检查防火墙的配置,放行vrrp协议
  3)将检查健康状况脚本放在邮件配置下方



运维网声明 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-607712-1-1.html 上篇帖子: mysql连接模块 下篇帖子: MySQL information_schema库学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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