1
2
3
4
5
|
[manager,master,slave1,slave2]
shell> yum update
shell> yum -y
install
perl-DBD-MySQL ncftp
shell> wget http:
//mysql-master-ha
.googlecode.com
/files/mha4mysql-node-0
.53-0.noarch.rpm
sehll> rpm -ivh mha4mysql-node-0.53-0.noarch.rpm
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[manager]
shell> yum
install
perl
shell> yum
install
cpan
shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm
error:
perl(Config::Tiny) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch::File) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch::Screen) is needed by mha4mysql-manager-0.53-0.noarch
perl(Parallel::ForkManager) is needed by mha4mysql-manager-0.53-0.noarch
perl(Time::HiRes) is needed by mha4mysql-manager-0.53-0.noarch
[solution]
shell> wget
ftp
:
//ftp
.muug.mb.ca
/mirror/centos/5
.10
/os/x86_64/CentOS/perl-5
.8.8-41.el5.x86_64.rpm
shell> wget
ftp
:
//ftp
.muug.mb.ca
/mirror/centos/6
.5
/os/x86_64/Packages/compat-db43-4
.3.29-15.el6.x86_64.rpm
shell> wget http:
//downloads
.naulinux.ru
/pub/NauLinux/6x/i386/sites/School/RPMS/perl-Log-Dispatch-2
.27-1.el6.noarch.rpm
shell> wget http:
//dl
.fedoraproject.org
/pub/epel/6/i386/perl-Parallel-ForkManager-0
.7.9-1.el6.noarch.rpm
shell> wget http:
//dl
.fedoraproject.org
/pub/epel/6/i386/perl-Mail-Sender-0
.8.16-3.el6.noarch.rpm
shell> wget http:
//dl
.fedoraproject.org
/pub/epel/6/i386/perl-Mail-Sendmail-0
.79-12.el6.noarch.rpm
shell> wget http:
//mirror
.centos.org
/centos/6/os/x86_64/Packages/perl-Time-HiRes-1
.9721-136.el6.x86_64.rpm
shell> rpm -ivh perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm perl-Log-Dispatch-2.27-1.el6.noarch.rpm perl-Mail-Sender-0.8.16-3.el6.noarch.rpm perl-Mail-Sendmail-0.79-12.el6.noarch.rpm perl-Time-HiRes-1.9721-136.el6.x86_64.rpm
shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[master:156]
1.shell> vim
/etc/my
.cnf
#server-id 改为1
server-
id
=1
log-bin=mysql-bin
binlog_format=mixed
#授权操作
2.mysql> GRANT ALL PRIVILEGES ON *.* TO
'rep'
@
'10.10.54.%'
IDENTIFIED BY
'rep123'
;
mysql> flush privileges;
3.mysql> show master status;
[slave1,slave2]
4.change master操作
mysql> change master to
master_host=
'10.10.54.156'
,
master_port=3306,
master_user=
'rep'
,
master_password=
'rep123'
,
master_log_file=
'mysql-bin.000001'
,
master_log_pos=112;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[server default]
user=mha_rep
##mysql管理用戶名
password=123456
manager_workdir=
/masterha/app1
#目录可以任意指定
manager_log=
/masterha/app1/manager
.log
remote_workdir=
/masterha/app1
ssh_user=root
#ssh免密钥登录的帐号名
repl_user=rep
#mysql复制帐号,用来在主从机之间同步二进制日志等
repl_password=rep123
ping_interval=1
#ping间隔时间,用来检测master是否正常
[server1]
hostname
=10.10.54.155
#ssh_port=9999
master_binlog_dir=
/data/ndb
#mysql数据库目录
candidate_master=1
#master机宕掉后,优先启用这台作为新master
[server2]
hostname
=10.10.54.156
#ssh_port=9999
master_binlog_dir=
/data/ndb
candidate_master=1
[server3]
hostname
=10.10.54.157
#ssh_port=9999
master_binlog_dir=
/data/ndb
no_master=1
#设置no_master=1使主机不能成为新master
|
1
2
3
4
|
[manager:154]
shell> masterha_check_ssh --conf=
/etc/masterha/app1
.cnf
Sun Mar 2 17:45:38 2014 - [debug] ok.
Sun Mar 2 17:45:38 2014 - [info] All SSH connection tests passed successfully.
|
1
2
3
4
5
6
7
8
9
10
11
|
[manager:154]
shell> masterha_check_repl --conf=
/etc/masterha/app1
.cnf
---------------------------------------------------------
Sun Mar 2 13:16:57 2014 - [info] Slaves settings check
done
.
Sun Mar 2 13:16:57 2014 - [info]
10.10.54.156 (current master)
+--10.10.54.155
+--10.10.54.157
...
MySQL Replication Health is OK.
---------------------------------------------------------------
|
1
2
3
4
5
6
7
8
9
10
|
[manager:154]
shell>
nohup
masterha_manager --conf=
/etc/masterha/app1
.cnf >
/tmp/mha_manager
.log 2>&1
shell>
tail
-f
/masterha/app1/manager
.log
---------------------------------------------------------------
10.10.54.156 (current master)
+--10.10.54.155
+--10.10.54.157
...
Sun Mar 2 13:09:25 2014 - [info] Ping(SELECT) succeeded, waiting
until
MySQL doesn't respond..
-----------------------------------------------------------------
|
1
|
$msg =
""
unless($msg);
|