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

[经验分享] MySQL MHA安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-9-30 06:24:03 | 显示全部楼层 |阅读模式
  Mysql MHA为MySQL的一种高可用软件,其主要功能是监控MYSQL的主从复制,并可以在Master出现问题时实现在多个Slave中自动重新选择新的Master并使用新的Mysql重新配置Mysql主从复制,其内部机制可以保证新的Master和Slave配置保证事务的一致性。其项目主页为: https://code.google.com/p/mysql-master-ha/
  安装及配置说明:
  测试环境如下:
  Manage_Server:10.103.16.32
  MySQL_Node1:10.103.16.33 初始的Master节点。
  MySQL_Node2:10.103.16.34
  MySQL_Node3:10.103.16.35
  说明:MHA并不会配置初始的MYSQL的主从复制环境,所以在配置MHA前要先手动配置好初始化的MYSQL主从复制环境。MySQL_Node1做为本测试环境中的初始的Master节点,MySQL_Node2,MySQL_Node3为初始的SLAVE节点。另外还要注意由于MHA在Master失败后会自动从SLAVE中选择出新的MASTER节点并重新配置新的主从复制环境,所以在配置数据库同步用户时除了要在MySQL_Node1中设置外还要在MySQL_Node2和MySQL_Node3中同样配置。
  在MySQL_Node1,MySQL_Node2,MySQL_Node3中加入以下数据库用户:

  GRANT REPLICATION SLAVE ON *.* TO 'DBARepl'@'10.103.16.%'>
  GRANT ALL PRIVILEGES ON *.* TO 'hauser'@'10.103.16.%'>  并且在Slave节点中设置:
  read_only = on
  relay_log_purge = off
  安装MHA
  1,在所有MySQL Node节点及Manage节点安装mha node软件包
  ## Install DBD::mysql if not installed
  $ yum install perl-DBD-MySQL
$ tar -zxf mha4mysql-node-X.Y.tar.gz  $ perl
Makefile.PL  $ make
  $ sudo make install
  2, 在Manage节点安装mha manager软件包
  manager节点需要以下perl包的支持:

  •   MHA Node package
  •   DBD::mysql
  •   Config::Tiny
  •   Log::Dispatch
  •   Parallel::ForkManager
  •   Time::HiRes (included from Perl v5.7.3)
  ## Install dependent Perl modules
yum install perl-DBD-MySQLyum install perl-Config-Tinyyum install perl-Log-Dispatchyum install perl-Parallel-ForkManager  ## Install dependent Perl modules
# MHA Node (See above)# Config::Tiny## perl -MCPAN -e "install Config::Tiny"# Log::Dispatch## perl -MCPAN -e "install Log::Dispatch"# Parallel::ForkManager## perl -MCPAN -e "install Parallel::ForkManager"## Installing MHA Manager  $ tar
-zxf mha4mysql-manager-X.Y.tar.gz  $ perl
Makefile.PL  $ make
  $ sudo make install
  3.配置Manager节点到各MySQL_Node之间的ssh自动登录,以及各MySQL_Node之间的ssh自动登录
  ( 使用:ssh-keygen 及 ssh-copy-id这两个shell命令完成)
  4.建立/etc/mha.conf文件,如下:
  [server default]
user=hauser                     #mha使用的mysql用户
password=P@ssw0rd             #mha使用的mysql用户的密码
manager_workdir=/home/zhanglei/log  
manager_log=/home/zhanglei/log/manager.log
master_binlog_dir=/usr/local/mysql/sql_log #主从复制中主数据库的binlog日志所在目录
remote_workdir=/home/zhanglei/log
ssh_user=sa
repl_user=DBARepl
repl_password=1q2w3e4r
ping_interval=1
[server1]
hostname=slave1
[server2]
hostname=slave2
[server3]
hostname=slave3
  5.检查MHA配置是否有问题,在manager节点执行如下命令:
  /usr/local/bin/masterha_check_repl --conf=/etc/mha.cnf
  错误及解决方法:
  1)
  Can't exec "mysqlbinlog": No such file or  directoryat/usr/local/share/perl5/MHA/BinlogManager.pm line  99.
  mysqlbinlog version not found!
  at /usr/local/bin/apply_diff_relay_logs line 463
  由于MHA使用ssh 远程执行shell命令,可以使用过下面的方法查看在这种方式下可以用于查询命令行的PATH变量
  [sa@master bin]$ ssh slave2 "printenv PATH"
  /usr/local/bin:/bin:/usr/bin
  默认只从以上两个位置查找mysqlbinlog命令,但由于数据库是安装在/usr/local/mysql目录下的,所以会报找不到命令的错误。解决这个错误有两种方法:
  1}在/usr/local/bin目录下建立相关命令的连接如下:
  ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog
  ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
  2}修改/etc/ssh/sshd_config 文件
  PermitUserEnvironment yes
  vim ~/.ssh/environment
  PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
  然后要重启sshd服务。
  2)
  Creating directory /home/zhanglei/log.. failed to create dir:/home/zhanglei/log:mkdir /home/zhanglei/log: Permission denied at /usr/local/share/perl5/MHA/NodeUtil.pm line 35
  这是由于MHA所合适的系统用户没有权限在数据节点中建立文件造成的,只要给相应用户授权就可以了。
  6.启动MHA对数据库主从复制进行监控:
  nohup masterha_manager --conf=/etc/mha.cnf &
  7.手动切换主从复制
  masterha_master_switch --master_state=dead --conf=/etc/mha.cnf --dead_master_host=slave1
  如报如下错误:
  [error][/usr/local/share/perl5/MHA/ManagerUtil.pm, ln178] Got ERROR: Use of uninitialized value $msg in scalar chomp at /usr/local/share/perl5/MHA/ManagerConst.pm line 90.
  解决方法修改:
  /usr/local/share/perl5/MHA/ManagerConst.pm
  our $log_fmt = sub {
  my %args = @_;
  my $msg = $args{message};
  + $msg = "" unless($msg);
  chomp $msg;
  if ( $args{level} eq "error" ) {
  my ( $ln, $script ) = ( caller(4) )[ 2, 1 ];
  MySQL课程推荐
  MySQL性能管理及架构设计
  高性能可扩展MySQL数据库设计及架构优化 电商项目



运维网声明 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-605957-1-1.html 上篇帖子: mysql audit审计插件 下篇帖子: mysql原理详解及部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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