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)
首先安装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)
相关文章推荐
- Nodejs连接mysql
- 多实例安装mysql数据库
- 12个优化MySQL的技巧小整理
- 一个手工删除mysql的sleep线程的小脚本
- 大幅优化MySQL查询性能的奇技淫巧
- Mysql 查询当前这周的数据
- mysql支持存储emoji表情
- 命令行启动mysql时“服务名无效”
- 如何修复损坏的MySQL数据表
- 大幅提升MySQL中InnoDB的全表扫描速度的方法
- 数据统计存储过程规范(mysql)
- mysql 索引
- MySQL的BTREE索引和HASH索引的区别
- 详细讲解安全升级MySQL的方法
- 区别mysql的多表查询和连接查询
- jboss7.1.1配置mysql数据源
- Cobar_基于MySQL的分布式数据库服务中间件
- 使用cgroups来限制MySQL企业备份服务对资源的占用
- Mysql数据库服务启动了,但无法登录数据
- MySQL中修改表结构时需要注意的一些地方