Mysql Master-Master Replication Manager
(mysql 主主复制管理工具)!
目录
一、 概述 4
二、 典型的应用 5
2.1 两个节点的环境 5
2.2 两个master+一个或者多个slaves的环境 5
三、 需求 6
3.1 monitoring host需求 6
3.2 nodes需求 6
3.3 使用MMM tools的附加需求 7
四、 mmm_agentd 7
五、 mmm_mond 7
5.1 States 7
5.2 Roles 8
5.3 Status file 8
5.4 Checks 8
5.5 Network check 8
5.6 Flapping 8
5.7 Modes 9
5.7.1 Active mode 9
5.7.2 Manual mode 9
5.7.3 wait mode 9
5.7.4 Passive mode 9
5.8 Startup 9
5.9 Role transition 9
5.9.1 Standard role 9
5.9.2 Active master role 10
5.10 Kill host functionality 10
六、 mmm_control 控制monitor 10
6.1 help 10
6.2 ping 10
6.3 show 10
6.4 checks [host|all [check|all]] 11
6.5 set_online host 11
6.6 set_offline host 12
6.7 mode 12
6.8 set_active 12
6.9 set_manual 12
6.10 set_passive 13
6.11 move_role 13
6.12 move_role –force role host 13
七、 mmm_control 控制monitor 13
7.1 config file 13
7.2 configuration syntax 14
7.2.1 comments 14
7.2.2 variables 14
7.2.3 specifying multiple values 14
7.2.4 sections 14
7.2.5 includes 15
7.3 configuration variables 15
7.3.1 全局变量 15
7.3.2 monitor section 15
7.3.3 host sections 17
7.3.4 role sections 20
7.3.5 check sections 21
7.3.6 socket section 21
7.3.7 copy_method sections 22
八、 Logging 22
8.1 logging config files 22
8.2 Log4perl sample configuration 23
一、 概述
MMM(Master-Master replication manager for Mysql)是一套灵活的脚本程序,用来监控和故障切换,管理mysql Master-Master复制的配置 (同一时间只有一个节点是可写的)。附带的工具套件可以实现多个slaves的read负载均衡,因此你可以使用这个工具移除一组服务器中复制延迟较高的服务器的虚拟IP,它还可以备份数据,两节点之间再同步等等。
MMM主要的功能通过下面三个脚本来实现:
mmm_mond
监控进程,负责所有的监控工作,决定和处理所有节点角色活动
mmm_agentd
运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置
mmm_control
一个简单的脚本,提供管理mmm_mond进程的命令
二、 典型的应用
MMM典型的应用有以下两个方案。
2.1 两个节点的环境
在两个节点的master-master环境下,MMM使用5个IP。每个单独的节点使用一个固定IP,这个固定IP永远不会变化。
2个reader IPs(read-only)和一个writerIP(updates),后面三个IP(2个reader IP和一个Writer IP)在两个节点之间迁移,如何迁移取决于节点的可用性。
正常情况下(没有复制失败,没有复制延迟等)活动的master有两个虚拟ip(reader和writer),备用的master有一个虚拟ip(reader),如果活动的master失败了,那么所有的reader和writer虚拟IP都会被分配给备用的master。
2.2 两个MASTER+一个或者多个SLAVES的环境
三、 需求
搭建MMM架构的mysql服务器的前提:
n+1 hosts
一台或者多台安装mysql的服务器,一台安装MMMmonitor。
2*(n+1)IPs
每个主机一个固定IP,一个虚拟IP(reader role),全局使用一个writer role IP。
monitor user
一个在MMM monitor主机上可以使用的并且拥有REPLICATION CLIENT权限的mysql用户。
agent user
一个在MMM agent主机上可以使用的并且拥有SUPER,REPLICATIONCLIENT,PROCESS权限的mysql用户。
replication user
一个slaves主机上可以使用的并且拥有REPLICATIONCLIENT权限的mysql用户。
tools user
一个MMM tools主机上可以使用的,并且拥有SUPER,REPLICATIONCLIENT,RELOAD权限的mysql用户。
3.1 MONITORING HOST需求
?perl线程的支持
?fping(如果你想要使用非root用户运行mmm_mond进程)
?perl模块:
--Algorithm::Diff
--Class:Singleton
--DBI and DBD::mysql
--File::Basename
--File::stat
--File::Temp
--Log::Dispatch
--Log::Log4perl
--Mail::Send
--Net::Ping
--Proc::Daemon
--Thread::Queue
--Time::HiRes
3.2 NODES需求
所有的mysql servers都需要手工设置成read-only=1,MMM会改变活动master的read-only=0
?perl支持
?iproute
?send_arp(solaris)
?perl模块:
--Algorithm::Diff
--DBI and DBD::mysql
--File::Basename
--File::stat
--Log::Dispatch
--Log::Log4perl
--Mail::Send
--Net::ARP (linux)
--Proc::Daemon
--Time::HiRes
3.3 使用MMM TOOLS的附加需求
如果你想要使用MMM tools(mmm_backup,mmm_resotre,mmm_clone)管理你存放在LVM分区上的数据库文件和日志。Note:你需要空闲存储空间来满足快照还原(see Estimating Undo Space neededfor LVM Snapshot).
你依然需要安装下面的perl库:
--Path::Class
--Data::Dumper
四、 MMM_AGENTD
TODO short description
五、 MMM_MOND
5.1 STATES
ONLINE 主机正在运行,没有任何问题
ADMIN_OFFINE 手动被设置成离线状态
HARD_OFFLINE 主机不在线(ping检测或者是mysql检测失败)
AWAITING_RECOVERY 主机即将恢复在线
REPLICATION_DELAY 复制延迟很大,积压了很多未完成的日志(rep_backlog检测失败)
REPLICATION_FAIL 复制线程没有运行(rep_threads检测失败)
只有当主机在线的时候才能获得角色(reader or writer),当一个主机从ONLINE转换到其它状态,它所获得的角色都会从它身上移除。
一个主机在REPLICATION_DELAY或者是REPLICATION_FAIL状态时,如果所有的问题都解决了,就会被再次切换到ONLINE状态,除非它的状态在抖动,不稳定。参见Flapping(抖动)
一个主机在HARD_OFFLINE状态,如果所有的问题都解决了,那么它会转换到AWAITING_RECOVERY状态,如果它故障时间小于60s,并且它没有重启或者auto_set_online > 0,那么它将会被自动切换到ONLINE状态,除非它的状态在抖动,不稳定。参见Flapping(抖动)
如果活动的master出现积压了很多未完成的复制工作或者复制失败将不被视为一个问题,所以活动的master不会被置于REPLICATION_DELAY或者REPLICATION_FAIL状态
在节点被转换到ONLINE状态60s内,如果出现复制失败或者出现积压了很多未完成的复制工作将会被忽略(这个时间通过master-connect-retry来控制)
如果rep_backlog和rep_threads都检测失败,将会切换到REPLICATION_FAIL状态
5.2 ROLES
有两种类型的角色:
exclusive roles
互斥角色只有一个ip,并且同一时间只能分配给一个主机,你可以指定一个优先(preferred)主机,如果这个主机是ONLINE状态,那么角色就会被切换到这个主机。
balanced roles
负载均衡角色可以有多个IP,这些IP被均衡的分配给多个主机,所以没有一个主机可以比其他主机多出两个角色。
(备忘录:可以通过给可写的active_master_role设置mode=slave把角色切换给其他master)
5.3 STATUS FILE
保存host的角色和状态信息的文件”status_path”
5.4 CHECKS
mmm_mond会对每个主机执行4项检查,并决定检查是否成功:
ping 主机可以ping
mysql mysql server在线
rep_threads 复制线程在运行
rep_backlog 复制积压的日志很少
5.5 NETWORK CHECK
mmm_mond可以检查到没有功能的网络连接,它定期通ping配置的ips,至少有一个IP是可以达到的,network 就被认为可用。
如果在网络不可用的情况下,mmm_mond都做一下操作:
1、 忽略失败检测
2、 不改变主机状态
3、 不给agents发送任何信息
如果网络不可用的情况下启动mmm,mmm_mond将推迟到网络可用的时候再启动。
5.6 FLAPPING
mmm_mond 支持“flappng”(抖动)检测,如果一个主机频繁从ONLINE切换到HARD_OFFLINE或者REPLICATION_FAIL或者REPLICATION_DELAY状态,每次切换到ONLINE状态的时候(由于auto_set_online或者由于down的时间小于60s),将会导致角色的切换非常频繁。
为了避免这种情况mmm_mond内建了flap检测,你可以通过配置文件配置它。如果一个主机在flap_duration时间内宕掉了flap_count次,就认为主机处理flap状态,这个主机就不会自动被设置为ONLINE状态,它将一直处于AWAITING_RECOVERY状态除非手动设置online(mmm_controlset online host)。如果auto_set_online>0,处于flapping的主机在flap_duration时间后将制动被设置为ONLINE状态
5.7 MODES
5.7.1 ACTIVE MODE
Monitor将会自动的把角色从失败的主机上移除,并切换到其他主机上。
5.7.2 MANUAL MODE
Moniter会自动把负载均衡的角色分配给对应主机,但是不会自动的把角色从失败的主机上移除。你可以通过move_role来手工移除。
5.7.3 WAIT MODE
类似manual模式,但是当两个master都是online状态或者超过了wait_for_other_master的时间,将被改变为ACTIVE模式。
5.7.4 PASSIVE MODE
在被动模式下,monitor不改变roles,也不更新状态文件和发送任何信息给agents。在被动模式下你可以使用set_ip来改变roles,但是这些改变在monitor切换到ACTIVE或者MANUAL模式(set_activeor set_manual)前都不会生效,在启动的roles发生冲突将会进入被动模式。你可以分析问题,修复reole信息,然后切换到ACTIVE或者MANUAL模式,也可以手动进去被动模式,使用 set_passive。
5.8 STARTUP
初始化网络检查
如果网络不可达,那么Startup将被延迟到网络可达的时候再运行
初始化主机检查
读取状态信息:
--status file
--agents(mysql节点的信息)
--hosts(节点的系统信息)
尝试计算出集群集群的状态信息
5.9 ROLE TRANSITION
5.9.1 STANDARD ROLE
虚拟IP从原来的主机上移除
虚拟IP被配置到新主机上
新主机发送arp包,通知其他主机它的新IP
5.9.2 ACTIVE MASTER ROLE
writer role从原来的主机上移除:
1、 mysql设置为read_only模式
2、 删除活动的连接
3、 删除虚拟IP
slaves are informed They:
1、 完成原来主机上的复制工作
2、 切换master到新的主机上
添加writer role到新主机上:
1、 mysql设置为可写模式
2、 配置虚拟IP
5.10 KILL HOST FUNCTIONALITY
关闭检测失败的主机,这个功能一般不用,就不翻译了。
六、 MMM_CONTROL 控制MONITOR
可以通过mmm_control命令控制monitor守护进程,如果你有多个集群,你需要制定你想要控制的集群名字(例如:检测C1的状态使用“mmm_control @C1 show”),如果你没有多个MMM集群,那么就可以忽略集群名。
6.1 HELP
观看help信息
#mmm_control help
6.2 PING
ping monitor的进程,确定进程是否存在
#mmm_control ping
OK: Pinged successfully!
如果monitor当掉后,在ping
# mmm_control ping
ERROR: Can't connect to monitor daemon!
6.3 SHOW
查看当前的集群状态。
#mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: writer(192.168.0.50),reader(192.168.0.51)
db2(192.168.0.32) master/AWAITING_RECOVERY. Roles:
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.52),reader(192.168.0.53)
6.4 CHECKS [HOST|ALL [CHECK|ALL]]
查看指定node或者所有主机(all)的制定状态或者所有状态
# mmm_control checks
mmm-master1 ping [last change: 2010/02/11 12:43:16] OK
mmm-master1 mysql [last change: 2010/02/11 12:43:16] OK
mmm-master1 rep_threads [last change: 2010/02/11 12:43:16] OK
mmm-master1 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
mmm-master2 ping [last change: 2010/02/11 12:43:16] OK
mmm-master2 mysql [last change: 2010/02/11 12:43:16] OK
mmm-master2 rep_threads [last change: 2010/02/11 12:43:16] OK
mmm-master2 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
# mmm_control checks mmm-master1
mmm-master1 ping [last change: 2010/02/11 12:43:16] OK
mmm-master1 mysql [last change: 2010/02/11 12:43:16] OK
mmm-master1 rep_threads [last change: 2010/02/11 12:43:16] OK
mmm-master1 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
# mmm_control checks mmm-master1 rep_backlog
mmm-master1 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
# mmm_control checks all rep_backlog
mmm-master1 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
mmm-master2 rep_backlog [last change: 2010/02/11 12:43:16] OK: Backlog is null
6.5 SET_ONLINE HOST
set_online的作用是把node的状态从AWAITING_RECOVERY或者ADMIN_OFFLINE恢复到ONLINE,如下:db2主机被重启过,看他的状态:
# mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: writer(192.168.0.50),reader(192.168.0.51)
db2(192.168.0.32) master/AWAITING_RECOVERY. Roles:
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.52),reader(192.168.0.53)
当db2检测时候后,所有的角色都被移动到db1和db3上,现在我们来恢复它到online状态
# mmm_control set_online db2
OK: State of 'db2' changed to ONLINE. Now you can wait some time and check itsnew roles!
# mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: writer(192.168.0.50),reader(192.168.0.51)
db2(192.168.0.32) master/ONLINE. Roles: reader(192.168.0.52)
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.53)
6.6 SET_OFFLINE HOST
set_offline会将一个node手动的置为_ADMIN_OFFLINE状态,这个node上的所有角色将会被移除,并且停止mysql复制。
# mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: writer(192.168.0.50),reader(192.168.0.51)
db2(192.168.0.32) master/ONLINE. Roles: reader(192.168.0.52)
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.53)
# mmm_control set_offline db1
OK: State of 'db1' changed to ADMIN_OFFLINE. Now you can wait some time andcheck all roles!
mon:~# mmm_control show
db1(192.168.0.31) master/ADMIN_OFFLINE. Roles:
db2(192.168.0.32) master/ONLINE. Roles: writer(192.168.0.50), reader(192.168.0.52)
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.51),reader(192.168.0.53)
6.7 MODE
打印出当前monitor的运行模式,例如:
下面是主动模式:
# mmm_control mode
ACTIVE
下面是被动模式:
# mmm_control mode
PASSIVE
6.8 SET_ACTIVE
切换monitor进程的为ACTIVE模式
# mmm_control set_active
OK: Switched into active mode.
6.9 SET_MANUAL
切换monitor进程的为MANUAL模式
# mmm_control set_manual
OK: Switched into manual mode.
6.10 SET_PASSIVE
切换monitor进程的为PASSIVE模式
# mmm_control set_passive
OK: Switched into passive mode.
6.11 MOVE_ROLE
通过move可以在集群nodes之间切换独一的角色,这个命令在passive模式下不可用,例如:
# mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: reader(192.168.0.51)
db2(192.168.0.32) master/ONLINE. Roles: writer(192.168.0.50),reader(192.168.0.52)
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.53)
我们把writer角色切换到db1主机上:
# mmm_control move_role writer db1
OK: Role 'writer' has been moved from 'db2' to 'db1'. Now you can wait sometime and check new roles info!
# mmm_control show
db1(192.168.0.31) master/ONLINE. Roles: writer(192.168.0.50), reader(192.168.0.51)
db2(192.168.0.32) master/ONLINE. Roles: reader(192.168.0.52)
db3(192.168.0.33) slave/ONLINE. Roles: reader(192.168.0.53)
6.12 MOVE_ROLE –FORCE ROLE HOST
可以将active_master_role角色切换给一个状态为REPLICATION_FAIL或者REPLICATION_DELAY的主机上,使用这个命令一定要小心,这个命令在被动模式下无效。
6.13 set_ip ip host
set_ip可以用来在被动模式下操纵角色,改变在monitor改变成ACTIVE或者MANUAL模式后生效
七、 MMM_CONTROL 控制MONITOR
7.1 CONFIG FILE
config文件可以放在/etc,/etc/mmm,/etc/mysql-mmm,这三个目录中,/etc/mysql-mmm优先级最高
程序名 文件名
mmm_agentd ‘mmm_agent.conf’
mmm_mond ‘mmm_mon.conf’ or ‘mmm_mon_CLUSTER.conf’
mmm_control ‘mmm_mon.conf’ or ‘mmm_mon_CLUSTER.conf’
mmm_backup ‘mmm_tools.conf’
mmm_clone ‘mmm_tools.conf’
mmm_restore ‘mmm_tools.conf’
7.2 CONFIGURATION SYNTAX
7.2.1 COMMENTS
每行以#开头的行被认为是注释,并且这行会被忽略。注释不可以出现在一行注释的后面。注释前面的空格将会被忽略。
# This is a comment
debug 1 # this is no comment
7.2.2 VARIABLES
debug 0
7.2.3 SPECIFYING MULTIPLE VALUES
有些变量你需要指定多个值:
ips 192.168.0.51,192.168.0.52,192.168.0.53
7.2.4 SECTIONS
配置文件分为两种类型的sestions:唯一的和命名的。
唯一型的sections,例如:
<monitor>
ip 127.0.0.1
< /monitor>
定义一个空的唯一型sections也是可以的:
<socket />
命名型的sections,例如:
<host db1>
ip 192.168.0.31
< /host>
你当然也可以定义一个空的命名型sections:
<check mysql/>
default sections
默认sections里面的值会被其他所有的sections继承。
# 定义所有的主机角色都是'slave'
< host default>
mode slave
< /host>
7.2.5 INCLUDES
可以通过include导入其他配置文件
include common.conf
7.3 CONFIGURATION VARIABLES
7.3.1 全局变量
this
描述:这个主机的名字
默认值:无
Used by:agent,tools
debug
描述:是否开启debug模式
可用值:true/yes/1/on flase/no/0/off
默认值:0
Used by:agent,monitor
active_master_role
描述:哪个角色名被定义为活动的master
默认值:无
Used by:agent,monitor
max_kill_retries
描述:尝试杀死进程的最大次数,用来防止在切换active_master_role时产生多余的写操作
默认值:10
Used by:agent
default_copy_method
描述:默认拷贝方法的名字
默认值:无
Used by:tools
clone_dirs
描述:保存mysql日志和数据的路径(相对逻辑卷的挂载点)
默认值:无
Used by:tools
7.3.2 MONITOR SECTION
monitor section需要mmm_mond和mmm_control
IP
描述:mmm_mond进程监听哪个IP
默认值:无
Used by:control,monitor
port
描述:mmm_mond进程监听哪个端口
默认值:无
Used by:control,monitor
pid_path
描述:pid-file的路径
默认值:无
Used by: monitor
bin_path
描述:包含mmm二进制文件的目录
默认值:无
Used by:agent
status_path
描述:状态文件的位置
默认值:无
Used by:monitor
ping_interval
描述:网络监测的间隔时间
默认值:1s
Used by:monitor
ping_ips
描述:网络监测使用的Ips
默认值:
Used by:monitor
flap_duration
描述: 抖动检测持续的时间
默认值:3600
Used by:monitor
flap_count
描述:在flap_duration时间内出现flap_count次宕机,我们就认为这个时机为抖动状态
默认值:3
Used by:monitor
auto_set_online
描述:从AWAITING_RECOVERY状态切换到ONLINE状态的时间,单位秒,0=disabled
默认值:0
Used by:monitor
kill_host_bin
描述:当一个主机不可达,并且角色不能从一个agent上删除,就需要一个二进制命令用来杀掉一个主机,这个命令需要你自己定制,第一个参数是主机,第二个参数是ping的状态(1 ok,0 not ok)
默认值:bin_path/monitor/kill_host
Used by:monitor
careful_startup
描述:小心的启动,例如当writer角色被配置在多个主机上时进入passive模式
Allowed values:true/yes/1/on false/no/0/off
默认值:0
Used by:monitor
mode
描述:monitor默认的模式
Allowed values:active manual wait passive
默认值:active
Used by:monitor
wait_for_other_master
描述:从WAIT模式切换到ACTIVE模式时,等待其他master切换到ONLINE状态的时间,单位秒,0=永远等待
默认值:120
Used by:monitor
7.3.3 HOST SECTIONS
ip
描述:主机的IP
默认值:0
Used by:agent,monitor,tools
mode
描述:主机的模式,只有master和slave模式
默认值:0
Used by:agent,monitor
peer
描述:对等的主机名(只有在master主机才有)
默认值:0
Used by:agent,monitor
pid_path
描述:pid_file的位置
默认值:0
Used by:agent
bin_path
描述:包含mmm工具的目录
默认值:0
Used by:agent
agent_port
描述:mmm_agent监听的端口
默认值:9989
Used by:agent
cluster_interface
描述:集群的虚拟IP配置在哪个网卡上
默认值:无
Used by:agent
mysql_port
描述:mysqld监听的端口
默认值:3306
Used by:agent,monitor,tools
mysql_pidfile
描述:mysql的pidfile位置
默认值:/var/run/mysqld/mysqld.pid
Used by:tools
mysql_rcscript
描述:mysql rc-script的位置
默认值:/etc/init.d/mysql
Used by:tools
mysql_cnf
描述:my.cnf文件的位置
默认值:/etc/my.cnf
Used by:tools
agent_user
描述:MMM agent 使用的mysql用户
默认值:无
Used by:agent
agent_password
描述:MMM agent 使用的mysql用户的密码
默认值:无
Used by:agent
monitor_user
描述:MMM monitor 使用的mysql用户
默认值:无
Used by:monitor
monitor_password
描述:MMM monitor 使用的mysql用户的密码
默认值:无
Used by:monitor
replication_user
描述:mysql复制使用的用户
默认值:无
Used by:agent,tools
replication_password
描述:mysql复制使用的用户的密码
默认值:无
Used by:agent,tools
ssh_user
描述:MMM tools 使用的SSH用户
默认值:无
Used by:tools
ssh_port
描述:MMM tools 使用的SSH端口
默认值:无
Used by:tools
ssh_parameters
描述:MMM tools 使用的SSH时的额外参数
默认值:无
Used by:tools
tools_user
描述:MMM tools 使用的mysql用户
默认值:无
Used by:tools
tools_password
描述:MMM tools 使用的mysql用户的密码
默认值:无
Used by:tools
backup_dir
描述:备份的目标目录
默认值:无
Used by:tools
restor_dir
描述:还原的源目录
默认值:无
Used by:tools
lvm_bin_lvcreate
描述:lvcreate二进制文件的路径
默认值:lvcreate
Used by:tools
lvm_bin_lvremove
描述:lvremove二进制文件的路径
默认值:lvremove
Used by:tools
lvm_snapshot_size
描述:lvm快照的大小
默认值:
Used by:tools
lvm_logical_volume
描述:mysql数据和日志所在的lvm逻辑卷的名字
默认值:
Used by:tools
lvm_volume_group
描述:mysql数据和日志所在的lvm逻辑卷组的名字
默认值:
Used by:tools
lvm_mount_dir
描述:lvm快照的挂载点
默认值:
Used by:tools
lvm_mount_ops
描述:lvm快照挂在使用的参数
默认值:
Used by:tools
7.3.4 ROLE SECTIONS
这个sections定义cluster中有哪些角色,虚拟IP与角色的对应关系。每个角色这些服务器之间切换,每个服务器需要一个IP(用于monitor和此服务器通信),每个角色也需要一个IP。
mode
描述:角色的模式,分为balanced和exclusive两种模式。(一般writer角色是exclusive模式,reader角色是balanced模式)
默认值:
Used by:monitor
hosts
描述:哪些主机可以担任这个角色
默认值:
Used by:monitor
ips
描述:lvm快照挂在使用的参数
默认值:一个或者多个对应角色的虚拟IP
Used by:monitor
prefer
描述:那个主机对此角色具有较高优先级,只能使用在exclusive模式
默认值:
Used by:monitor
7.3.5 CHECK SECTIONS
check_period
描述:检查周期默认为5s
默认值:5s
Used by:monitor
trap_period
描述:一个节点被检测不成功的时间持续trap_period秒,就慎重的认为这个节点失败了。
默认值:10s
Used by:monitor
timeout
描述:检查超时的时间
默认值:2s
Used by:monitor
restart_after
描述:在完成restart_after次检查后,重启checker进程
默认值:10000
Used by:monitor
max_backlog
描述:记录检查rep_backlog日志的最大次数
默认值:60
Used by:monitor
7.3.6 SOCKET SECTION
type
描述:socket的类型是普通的还是ssl
默认值:
Used by:agent,control,monitor
cert_file
描述:如果使用ssl类型的连接,指定本地证书的位置
默认值:
Used by:agent,control,monitor
key_file
描述:RSA私钥的位置(使用ssl连接时使用)
默认值:
Used by:agent,control,monitor
ca_file
描述:包含著名的证书颁发结构颁发的证书文件的位置(使用ssl连接时使用)
默认值:
Used by:agent,monitor
7.3.7 COPY_METHOD SECTIONS
backup_command
描述:用来创建备份的命令
默认值:
Used by:tools
restor_command
描述:用来还原备份的命令
默认值:
Used by:tools
incremental_command
描述:显示可用的增量备份
默认值:
Used by:tools
incremental
描述:表明增量备份是否支持copy方法
默认值:0
Used by:tools
single_run
描述:决定拷贝方法是否可以拷贝所有的目录在一个进程
默认值:
Used by:tools
true_copy
描述:决定拷贝方法是否可以创建一个1:1的拷贝
默认值:
Used by:tools
八、 LOGGING
8.1 LOGGING CONFIG FILES
MMM使用Log4perl记录日志,所以日志相当灵活,如果默认的日志不是你需要的,你可以创建一个配置文件放在/etc/mmm or /etc/mysql-mmm, /etc/mysql-mmm优先级更高
程序对应依耐的配置文件如下:
程序 配置文件名
mmm_agentd ‘mmm_agent_log.conf’
mmm_mond ‘mmm_mon_log.conf’or ‘mmm_mon_log_CLUSTER.conf’
mmm_control ‘mmm_mon_log.conf’or ‘mmm_mon_log_CLUSTER.conf’
mmm_backup
mmm_clone
mmm_restore
8.2 LOG4PERL SAMPLE CONFIGURATION
这里是默认的日志配置
log4perl.logger = INFO, LogFile
log4perl.appender.LogFile = Log::Log4perl::Appender::File
log4perl.appender.LogFile.Threshold = INFO
log4perl.appender.LogFile.filename = /var/log/mysql-mmm/progam.info
log4perl.appender.LogFile.recreate = 1
log4perl.appender.LogFile.layout = PatternLayout
log4perl.appender.LogFile.layout.ConversionPattern = %d %5p %m%n
如果以debug模式运行,添加如下信息:
log4perl.logger = DEBUG, ScreenLog, LogFile
log4perl.appender.ScreenLog = Log::Log4perl::Appender::Screen
log4perl.appender.ScreenLog.stderr = 0
log4perl.appender.ScreenLog.layout = PatternLayout
log4perl.appender.ScreenLog.layout.ConversionPattern = %d %5p %m%n
通常可以把日志记录到多个文件中(以不同的重要级别来分离),或者让MMM给你发送邮件(在2.1.1版本下默认的日志配置是这样的)
log4perl.logger = INFO, FileInfo, FileWarn, FileError, FileFatal, MailFatal
log4perl.appender.FileInfo = Log::Log4perl::Appender::File
log4perl.appender.FileInfo.Threshold = INFO
log4perl.appender.FileInfo.filename = /var/log/mysql-mmm/progam.info
log4perl.appender.FileInfo.recreate = 1
log4perl.appender.FileInfo.layout = PatternLayout
log4perl.appender.FileInfo.layout.ConversionPattern = %d %5p %m%n
log4perl.appender.FileWarn = Log::Log4perl::Appender::File
log4perl.appender.FileWarn.Threshold = WARN
log4perl.appender.FileWarn.filename = /var/log/mysql-mmm/progam.warn
log4perl.appender.FileWarn.recreate = 1
log4perl.appender.FileWarn.layout = PatternLayout
log4perl.appender.FileWarn.layout.ConversionPattern = %d %5p %m%n
log4perl.appender.FileError = Log::Log4perl::Appender::File
log4perl.appender.FileError.Threshold = ERROR
log4perl.appender.FileError.filename = /var/log/mysql-mmm/progam.error
log4perl.appender.FileError.recreate = 1
log4perl.appender.FileError.layout = PatternLayout
log4perl.appender.FileError.layout.ConversionPattern = %d %5p %m%n
log4perl.appender.FileFatal = Log::Log4perl::Appender::File
log4perl.appender.FileFatal.Threshold = FATAL
log4perl.appender.FileFatal.filename = /var/log/mysql-mmm/progam.fatal
log4perl.appender.FileFatal.recreate = 1
log4perl.appender.FileFatal.layout = PatternLayout
log4perl.appender.FileFatal.layout.ConversionPattern = %d %5p %m%n
log4perl.appender.MailFatal =Log::Dispatch::Email::MailSend
log4perl.appender.MailFatal.Threshold = FATAL
log4perl.appender.MailFatal.to = root
log4perl.appender.MailFatal.buffered = 0
log4perl.appender.MailFatal.subject = FATAL error in progam
log4perl.appender.MailFatal.layout = PatternLayout
log4perl.appender.MailFatal.layout.ConversionPattern = %d %m%n