您的位置:首页 > 数据库 > MySQL

mysql mha安装以及安装出现问题处理办法

2015-06-25 11:40 477 查看
Mysql-MHA 安装及安装过程中遇到的问题

首先安装mysql软件

一主机部署

master机:192.168.31.101

slave1机:192.168.31.102(备用master)

slave2机(manager):192.168.31.103

大致步骤

A.首先用ssh-keygen实现四台主机之间相互免密钥登录

B.安装MHAmha4mysql-node,mha4mysql-manager 软件包

C.建立master,slave1,slave2之间主从复制

D.管理机manager上配置MHA文件

E.masterha_check_ssh工具验证ssh信任登录是否成功

F.masterha_check_repl工具验证mysql复制是否成功

G.启动MHA manager,并监控日志文件

H.测试master(156)宕机后,是否会自动切换

二主从复制配置(建立master,slave1,slave2之间主从复制)

在master机器上配置my.cnf文件

1.vim /etc/my.cnf

server-id=1

log-bin=mysql-bin

binlog_format=mixed

2.mysql> GRANT ALL PRIVILEGES ON *.* TO 'rep'@'192.168.31.%' IDENTIFIED BY 'rep';

mysql> flush privileges;

3.mysql> show master status;

[slave1,slave2]

4.change master操作

mysql> change master to

master_host='192.168.31.101',

master_port=3306,

master_user='rep',

master_password='rep',

master_log_file='mysql-bin.000001',

master_log_pos=112;

5.在备机(slave1)上也要授权

mysql> GRANT ALL PRIVILEGES ON *.* TO 'rep'@'192.168.31.%' IDENTIFIED BY 'rep';

[master,slave1,slave2]

6.查看主从复制是否成功的一些命令

mysql> start slave;

mysql> stop slave;

mysql> reset slave;

mysql> show slave status\G;

7.所有主机上设置复制权限帐号

例如在192.168.31.101设置

mysql> GRANT ALL PRIVILEGES ON *.* TO 'mha_rep'@'192.168.31.102' IDENTIFIED BY '123456';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'mha_rep'@'192.168.31.103' IDENTIFIED BY '123456';

此用户密码对应MHA配置文件里[server default]小节user和password。

三 MHA配置

1 依赖安装:

在node节点上,执行下面的命令:

yum install perl-DBD-MySQL

在manager节点上:

yum install perl-DBD-MySQL

yum install perl-Config-Tiny

yum install perl-Log-Dispatch

yum install perl-Parallel-ForkManager

yum install -y rrdtool perl-rrdtool rrdtool-devel perl-Params-Validate

2 rpm包安装:

manager节点:

rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm

rpm -ivh mha4mysql-node-0.53-0.el6.noarch.rpm

node节点:

rpm -ivh mha4mysql-node-0.53-0.el6.noarch.rpm

3 配置

mkdir -p /etc/masterha/

mkdir -p /var/log/masterha/app1/

将下面的内容写进/etc/masterha/app1.cnf:

[server default]

manager_workdir=/var/log/masterha/app1

manager_log=/var/log/masterha/app1/manager.log

user=admin

password=admin

ssh_user=root

repl_user=repl

repl_password=repl

ping_interval=1

shutdown_script=""

master_ip_online_change_script=""

report_script=""

[server1]

hostname=192.168.126.129

port=3306

candidate_master=1

master_binlog_dir="/home/mysql/mydata/data1/binlog"

[server2]

hostname=192.168.126.130

port=3306

candidate_master=1

master_binlog_dir="/home/mysql/mydata/data1/binlog"

[server3]

hostname=192.168.126.130

port=3307

[server4]

hostname=192.168.126.130

port=3308

[server5]

hostname=192.168.126.129

port=3307

[server6]

hostname=192.168.126.129

port=3308

4 配置ssh免秘钥:

MHA环境需要三台主机需要相互信任:实现三台主机之间相互免密钥登录。

用ssh-keygen创建公钥,一直默认回车,最后会在.ssh/下面生成id_rsa.pub

ssh-keygen -t rsa

把id_rsa.pub 文件复制到另外2台机子并导入公钥:

cat id_rsa.pub >> /root/.ssh/authorized_keys

(实验 将别的机器的公共秘钥赋值到本地,然后追加到本地的authorized_keys文件中

在192.168.31.103上操作

scp root@192.168.31.101:/root/.ssh/id_rsa.pub /root/.ssh/101.pub

cat /root/.ssh/101.pub>>/root/.ssh/authorized_keys

scp root@192.168.31.102:/root/.ssh/id_rsa.pub /root/.ssh/102.pub

cat /root/.ssh/102.pub>>/root/.ssh/authorized_keys

cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys

)

当然也可以直接复制里面的内容再粘帖到authorized_keys中。 这样204可以直接访问到其他2台机子了

ssh 192.168.200.201

ssh 192.168.200.202

同理在另外2台机子上面操作,让他们之间实现无密码登入。

masterha_check_ssh工具验证ssh信任登录是否成功

masterha_check_ssh --conf=/etc/masterha/app1.cnf

masterha_check_repl工具验证mysql复制是否成功

masterha_check_repl --conf=/etc/masterha/app1.cnf

启动MHA manager,并监控日志文件

masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log 2>&1 &

查看日志文件(/masterha/app1/manager.log)

看一下状态:

masterha_check_status --conf=/etc/masterha/app1.cnf

1.运行masterha_check_repl --conf=/etc/masterha/app1.cnf

Can't exec "mysqlbinlog": No such file or directory at /usr/local/perl5/MHA/BinlogManager.pm line 99.

在node节点上执行 which mysqlbinlog,比如我的结果就是

[localhost~]$ which mysqlbinlog

/usr/local/mysql/bin/mysqlbinlog

需要做一个软连接

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog

(shiyan:ln -s /data/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog)

Testing mysql connection and privileges..sh: mysql: command not found

mysql command failed with rc 127:0!

at /usr/bin/apply_diff_relay_logs line 367

main::check() called at /usr/bin/apply_diff_relay_logs line 486

eval {...} called at /usr/bin/apply_diff_relay_logs line 466

main::main() called at /usr/bin/apply_diff_relay_logs line 112

Tue Apr 14 13:32:29 2015 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln195] Slaves settings check failed!

Tue Apr 14 13:32:29 2015 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln375] Slave configuration failed.

Tue Apr 14 13:32:29 2015 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln386] Error happend on checking configurations. at

/usr/bin/masterha_check_repl line 48

Tue Apr 14 13:32:29 2015 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln482] Error happened on monitoring servers.

Tue Apr 14 13:32:29 2015 - [info] Got exit code 1 (Not master dead).

找不到mysql命令,把你mysql安装的目录下的bin目录,做一个软链接就可以了

ln -s /usr/local/mysql/bin/mysql /usr/bin

(shiyan:ln -s /data/mysql/bin/mysql /usr/bin)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: