mysql mha安装配置_MySQL MHA安装配置

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.%' IDENTIFIED BY 'P@SSW0rd' 用户同步

GRANT ALL PRIVILEGES ON *.* TO 'hauser'@'10.103.16.%' IDENTIFIED BY ''P@SSW0rd' 用户MHA

并且在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

$ perlMakefile.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 modulesyum 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

$ perlMakefile.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/logmanager_log=/home/zhanglei/log/manager.logmaster_binlog_dir=/usr/local/mysql/sql_log #主从复制中主数据库的binlog日志所在目录remote_workdir=/home/zhanglei/logssh_user=sarepl_user=DBAReplrepl_password=1q2w3e4rping_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课程推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值