mysql-mmm 安装配置过程

系统:centos 6.2 x86_64
192.168.101.77 mysql-mmm-agent,mysql-master,vip:192.168.101.7
192.168.101.88 mysql-mmm-agent,mysql-master,vip:192.168.101.8
192.168.101.33 mysql-mmm monitor

192.168.101.77 与192.168.101.88 安装mysql主主同步

一、mysql 安装配置过程略

二、mysql主主配置
192.168.101.77添加主备账号
grant replication slave on *.* to 'slave-user'@'192.168.101.88' identified by 'slave';
192.168.101.88添加主备账号
grant replication slave on *.* to 'slave-user'@'192.168.101.77' identified by 'slave';


192.168.101.77 my.cnf增加下面配置文件
server-id=1
log-bin=mysql-bin
binlog_format=ROW
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
skip_slave_start

192.168.101.88 my.cnf 添加下面配置文件
server-id=2
log-bin=mysql-bin
binlog_format=ROW
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
skip_slave_start

注意:192.168.101.77和192.168.101.88里面的server-id 不能重复

我是新安装的数据库,所以数据库拷贝就略过了

192.168.101.77和88上执行
stop slave;
flush logs; #关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。
FLUSH TABLES WITH READ LOCK;  #服务器锁表
mysql> show master status;  #主要获取binlog文件名和pos值
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |      120 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

192.168.101.77上执行
mysql> change master to
-> master_host='192.168.101.88',
-> master_user='slave-user',
-> master_password='slave',
-> master_log_file='binlog.000001',
-> master_log_pos=120,
-> master_connect_retry=10;

192.168.101.88执行
mysql> change master to
-> master_host='192.168.101.77',
-> master_user='slave-user',
-> master_password='slave',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=120,
-> master_connect_retry=10;

start slave;
show slave status\G; 查看状态
下面两项为Yes说明主备成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

解锁77和88 服务器
UNLOCK TABLES;


三、安装过程中的报错情况
1.提示连接不上,可能网络原因,账户权限问题,密码错误等
Last_IO_Error: error connecting to master 'slave-user@192.168.11.77:3306' - retry-time: 10  retries: 143
主从连接不上一般是账号密码输入有问题

2.找不到binlog文件
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
一开始在网上查找是binlog的pos的问题,可是自己试了很多方法,可是不行,后来才发现自己binlog日志文件写错了

四、mysql-mmm配置
# yum -y install perl perl-devel
wget http://search.cpan.org/CPAN/authors/id/A/AN/ANDK/CPAN-1.9205.tar.gz
[root@centos6 MMM]# tar  zxvf CPAN-1.9205.tar.gz
[root@centos6 MMM]# cd CPAN-1.9205
[root@open-source CPAN-1.94]# perl Makefile.PL
[root@open-source CPAN-1.94]# make
[root@open-source CPAN-1.94]# make install

报错
# perl -MCPAN -e shell
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.9205)
ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?)

解决
cpan[1]> o conf urllist unshift http://mirrors.sohu.com/CPAN/
Please use 'o conf commit' to make the config permanent!

cpan[2]> o conf commit
commit: wrote '/usr/lib/perl5/5.10.0/CPAN/Config.pm'

cpan[3]> install Bundle::CPAN
CPAN: Storable loaded ok (v2.18)
Going to read /root/.cpan/sources/authors/01mailrc.txt.gz

# perl -MCPAN -e shell
cpan> install Algorithm::Diff
cpan> install DBI
cpan>install Log::Dispatch
cpan> install Log::Log4perl
cpan> install Mail::Send
cpan> install Net::ARP
cpan> install Proc::Daemon
cpan> install Time::HiRes
cpan>install DBD::mysql
cpan>install File::stat
cpan>install File:basename

安装mysql-mmm
# tar -zxvf mysql-mmm-2.2.1.tar.gz
# cd mysql-mmm-2.2.1
# make install

192.168.101.77和88
修改配置文件两个配置文件一样
[root@open-source ~]# cat /etc/mysql-mmm/mmm_common.conf
active_master_role      writer

<host default>
   cluster_interface       eth0
   pid_path                /var/run/mysql-mmm/mmm_agentd.pid
   bin_path                /usr/lib/mysql-mmm/
   replication_user        slave-user
   replication_password    slave
   agent_user              mmm_agent
   agent_password          agentpass
</host>

<host open77>
   ip      192.168.101.77
   mode    master
   peer    open77
</host>

<host open88>
   ip      192.168.0.88
   mode    master
   peer    open88
</host>

<role writer>
   hosts   open77, open88
   ips     192.168.101.7
   mode    exclusive
</role>

<role reader>
   hosts   open77,open88
   ips     192.168.101.8
   mode    balanced
</role>

192.168.101.77
# cat /etc/mysql-mmm/mmm_agent.conf  
include mmm_common.conf
this open77

192.168.101.88
# cat /etc/mysql-mmm/mmm_agent.conf  
include mmm_common.conf
this open88

192.168.101.77和88启动mysql-mmm-agent
[root@open-source ~]# /etc/init.d/mysql-mmm-agent start


192.168.101.33
[root@open ~]# cat /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf

<monitor>
   ip                  192.168.101.33
   pid_path            /var/run/mysql-mmm/mmm_mond.pid
   bin_path            /usr/libexec/mysql-mmm
   status_path         /var/lib/mysql-mmm/mmm_mond.status
   ping_ips            192.168.101.77, 192.168.101.88
   auto_set_online     60

</monitor>

<host default>
   monitor_user        mmm_agent
   monitor_password    agentpass
</host>

debug 0

1.报错
mysql ERROR: Can't connect to monitor daemon!
将mmm_mon.conf的debug模式开启设为1
open2: exec of /usr/libexec/mysql-mmm/monitor/checker  ping_ip failed at /usr/lib/perl5/vendor_perl/5.8.8/MMM/Monitor/Checker.pm line 143
是自己的check路径写错了
修改该mmm_mon.conf
bin_path            /usr/lib/mysql-mmm

2.错误
[root@open-source mysql-mmm]# mmm_control checks
open88  ping         [last change: 2013/12/04 23:33:34]  OK
open88  mysql        [last change: 2013/12/04 23:33:34]  UNKNOWN: Error occurred: install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 16) line 3, <STDIN> line 1.
open88  rep_threads  [last change: 2013/12/04 23:33:34]  UNKNOWN: Error occurred: install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 16) line 3, <STDIN> line 1.
open88  rep_backlog  [last change: 2013/12/04 23:33:34]  UNKNOWN: Error occurred: install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 16) line 3, <STDIN> line 1.
open77  ping         [last change: 2013/12/04 23:33:34]  OK
open77  mysql        [last change: 2013/12/04 23:33:34]  Perhaps the DBD::mysql perl module hasn't been fully installed,
open77  rep_threads  [last change: 2013/12/04 23:33:34]  Perhaps the DBD::mysql perl module hasn't been fully installed,
open77  rep_backlog  [last change: 2013/12/04 23:33:34]  Perhaps the DBD::mysql perl module hasn't been fully installed,
解决
DBD::mysql没有安装好,我下载源码安装
[root@open-source DBD-mysql-4.023]# perl Makefile.PL
[root@open-source DBD-mysql-4.023]#make
[root@open-source DBD-mysql-4.023]#make install

[root@open-source ~]# mmm_control checks
open88  ping         [last change: 2013/12/04 23:33:34]  OK
open88  mysql        [last change: 2013/12/05 00:33:32]  OK
open88  rep_threads  [last change: 2013/12/05 00:33:35]  OK
open88  rep_backlog  [last change: 2013/12/05 00:33:35]  OK: Backlog is null
open77  ping         [last change: 2013/12/04 23:33:34]  OK
open77  mysql        [last change: 2013/12/05 00:33:35]  OK
open77  rep_threads  [last change: 2013/12/05 00:33:35]  OK
open77  rep_backlog  [last change: 2013/12/05 00:33:35]  OK: Backlog is null

[root@open-source ~]# mmm_control show
 open77(192.168.101.77) master/ONLINE. Roles: reader(192.168.101.8)
 open88(192.168.101.88) master/ONLINE. Roles: writer(192.168.101.7)


测试停掉192.168.101.88 mysql
[root@open2 mysql-mmm]# /etc/init.d/mysqld stop
Shutting down MySQL......... SUCCESS!

[root@open-source ~]# mmm_control show
 open77(192.168.101.77) master/ONLINE. Roles: reader(192.168.101.8), writer(192.168.101.7)
 open88(192.168.101.88) master/AWAITING_RECOVERY. Roles:

[root@open2 mysql-mmm]# /etc/init.d/mysqld start 启动mysql
Starting MySQL............................................... SUCCESS!

[root@open-source ~]# mmm_control show
 open77(192.168.101.77) master/ONLINE. Roles: writer(192.168.101.7)
 open88(192.168.101.88) master/ONLINE. Roles: reader(192.168.101.8)


至此mysql-mmm安装完成