基本信息和规划:
#服务器信息:
====================================================================
ip address hostname ServerVersion MySql
------------ --------- -------------- -----------
192.168.100.151 server1 CentOS 5.6 MySql 5.0.95
192.168.100.12 server12 CentOS 5.6 MySql 5.6.30
192.168.100.13 server13 CentOS 5.6 MySql 5.6.30
192.168.100.14 server14 CentOS 5.6 MySql 5.6.30
====================================================================
#MySQL-MMM 信息:
====================================================================
function ip address role VIP
-------- ------------ ------ ---------------
monitor 192.168.100.151 monitor 192.168.100.251
master/agent 192.168.100.12 witer 192.168.100.212
master/agent 192.168.100.13 reader 192.168.100.213
slave/agent 192.168.100.14 reader 192.168.100.214
====================================================================
说明:151 作为 monitor,12 与 13 进行主主复制,14 为 12 的从slave。
MySQL 下载地址:
http://dev.mysql.com/downloads/mysql/http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-i686.tar.gz
MySQL-MMM yum源下载地址:(注意服务器对应的版本:epel-release-X-X.noarch.rpm)
http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
安装 MySQL:(ip 12,13,14 ,151 均安装)
MySQL 安装(RPM安装模式)及目录结构MySQL 安装(二进制安装模式)
MySQL 安装(源码安装模式)
MySQL 创建3个用户:(ip 12,13,14 ,151均创建)
GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.100.%' IDENTIFIED BY 'mmm_monitor';
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.100.%' IDENTIFIED BY 'mmm_agent';
GRANT REPLICATION SLAVE ON *.* TO 'mmm_replication'@'192.168.100.%' IDENTIFIED BY 'mmm_replication';
FLUSH PRIVILEGES;
配置复制:
12 与 13 配置主主复制:MySQL 高可用:主主复制 12 与 14 配置主从复制:MySQL 高可用:主从复制
#MySQL配置(/etc/my.cnf)如下,注意 server-id 在每台服务器实例中都不一样,与ip一样方便区分。
# cd /var/log/
# mkdir mysql
# chown mysql:mysql mysql
#MySQL配置(/etc/my.cnf)如下,注意 server-id 在每台服务器实例中都不一样,与ip一样方便区分。
[mysqld]
basedir =/usr/local/mysql
datadir =/usr/local/mysql/data
socket=/tmp/mysql.sock
port = 3306
user=mysql
default-storage-engine = innodb
replicate-ignore-db = mysql,information_schema,performance_schema
binlog-ignore-db = mysql,information_schema,performance_schema
server-id = 12
log-bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-bin.relay
relay_log_index = /var/log/mysql/mysql-bin.relay.index
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
MySQL-MMM 安装:
cd /usr/local/src
rpm -ivh epel-release-5-4.noarch.rpm
#agent节点安装(ip 12,13,14 执行)
yum -y install mysql-mmm.noarch mysql-mmm-tools.noarch mysql-mmm-agent.noarch
# monitor节点安装(ip 151 执行)
yum -y install mysql-mmm.noarch mysql-mmm-tools.noarch mysql-mmm-monitor.noarch
MySQL-MMM 配置:
#vi /etc/mysql-mmm/mmm_common.conf (ip 12,13,14,151 执行)
active_master_role writer
<host default>
cluster_interface eth0
pid_path /var/run/mysql-mmm/mmm_agentd.pid
bin_path /usr/libexec/mysql-mmm/
replication_user mmm_replication
replication_password mmm_replication
agent_user mmm_agent
agent_password mmm_agent
</host>
<host master12>
ip 192.168.100.12
mode master
peer master13
</host>
<host master13>
ip 192.168.100.13
mode master
peer master12
</host>
<host master14>
ip 192.168.100.14
mode slave
</host>
<role writer>
hosts master12, master13
ips 192.168.100.251
mode exclusive
</role>
<role reader>
hosts master12, master13, master14
ips 192.168.100.212, 192.168.100.213, 192.168.100.214
mode balanced
</role>
#vi /etc/mysql-mmm/mmm_agent.conf (ip 12,13,14 执行)
#在 ip 12 改为
this master12
#在 ip 13 改为
this master13
#在 ip 14 改为
this master14
#vi /etc/mysql-mmm/mmm_mon.conf (ip 151 执行)
include mmm_common.conf
<monitor>
ip 192.168.100.151
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.100.12, 192.168.100.13, 192.168.100.14
auto_set_online 60
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password mmm_monitor
</host>
debug 0
MySQL-MMM 启动
# 在 agent 启动(ip 12,13,14 执行)
# chkconfig mysql-mmm-agent on
# service mysql-mmm-agent start
/etc/init.d/mysql-mmm-agent start
# 在 monitor 启动(ip 151)
# chkconfig mysql-mmm-monitor on
# service mysql-mmm-monitor start
/etc/init.d/mysql-mmm-monitor start
配置完成!!!
# 在 monitor 检查和维护
mmm_control help #mmm_control 帮助信息
ping - ping monitor
show - show status
checks [<host>|all [<check>|all]] - show checks status
set_online <host> - set host <host> online
set_offline <host> - set host <host> offline
mode - print current mode.
set_active - switch into active mode.
set_manual - switch into manual mode.
set_passive - switch into passive mode.
move_role [--force] <role> <host> - move exclusive role <role> to host <host>
(Only use --force if you know what you are doing!)
set_ip <ip> <host> - set role with ip <ip> to host <host>
检查:
#monitor 启动服务器时,等待连接:
[root@server1 src]# mmm_control show
master12(192.168.100.12) master/AWAITING_RECOVERY. Roles:
master13(192.168.100.13) master/AWAITING_RECOVERY. Roles:
master14(192.168.100.14) slave/AWAITING_RECOVERY. Roles:
#正常情况下:
[root@server1 src]# mmm_control show
master12(192.168.100.12) master/ONLINE. Roles: reader(192.168.100.213)
master13(192.168.100.13) master/ONLINE. Roles: reader(192.168.100.214), writer(192.168.100.251)
master14(192.168.100.14) slave/ONLINE. Roles: reader(192.168.100.212)
#切换“writer”到 master12:
[root@server1 src]# mmm_control move_role writer master12
OK: Role 'writer' has been moved from 'master13' to 'master12'. Now you can wait some time and check new roles info!
#切换后:
[root@server1 src]# mmm_control show
master12(192.168.100.12) master/ONLINE. Roles: reader(192.168.100.213), writer(192.168.100.251)
master13(192.168.100.13) master/ONLINE. Roles: reader(192.168.100.214)
master14(192.168.100.14) slave/ONLINE. Roles: reader(192.168.100.212)
#验证群集
[root@server1 src]# mmm_control checks all
master12 ping [last change: 2016/04/23 18:33:14] OK
master12 mysql [last change: 2016/04/23 18:33:28] OK
master12 rep_threads [last change: 2016/04/23 18:33:14] OK
master12 rep_backlog [last change: 2016/04/23 18:33:14] OK: Backlog is null
master13 ping [last change: 2016/04/23 18:33:14] OK
master13 mysql [last change: 2016/04/23 18:33:14] OK
master13 rep_threads [last change: 2016/04/23 18:33:14] OK
master13 rep_backlog [last change: 2016/04/23 18:33:14] OK: Backlog is null
master14 ping [last change: 2016/04/23 18:33:14] OK
master14 mysql [last change: 2016/04/23 18:33:14] OK
master14 rep_threads [last change: 2016/04/23 18:33:14] OK
master14 rep_backlog [last change: 2016/04/23 18:33:14] OK: Backlog is null
测试:
#创建一个mysql测试帐户(在 ip 12,13,14 执行)
grant select,insert,update,delete on *.* to 'test'@'192.168.100.%' identified by 'test';
flush privileges;
#在 192.168.100.151 中连接 writer 角色的虚拟IP。可以操作数据。
mysql -h 192.168.100.251 -u test -p
#停止 192.168.100.12 (writer 角色)的 mysqld 服务
service mysqld stop
#查看群集信息,12 处于 HARD_OFFLINE 状态,writer 自动切换到 13。
[root@server1 src]# mmm_control show
master12(192.168.100.12) master/HARD_OFFLINE. Roles:
master13(192.168.100.13) master/ONLINE. Roles: reader(192.168.100.214), writer(192.168.100.251)
master14(192.168.100.14) slave/ONLINE. Roles: reader(192.168.100.212), reader(192.168.100.213)
#继续在刚才连接的 192.168.100.251 中操作数据。
1. 客户端将重新连接;
2. 操作数据时,13 写入,会同步到 14 中;
#启动 192.168.100.12 的 mysqld 服务(刚才操作的数据会从主库 13 同步到主库 12。群集中需要一点时间恢复)
service mysqld start
=========================================================================
测试二:双主高可用
=========================================================================
文档:https://launchpadlibrarian.net/368918243/mysql-mmm-2.2.2.pdf安装:http://mysql-mmm.org/mmm2:guide
下载安装:
# 下载安装
wget http://mysql-mmm.org/_media/:mmm2:mysql-mmm-2.2.1.tar.gz
tar zxvf :mmm2:mysql-mmm-2.2.1.tar.gz
cd mysql-mmm-2.2.1
make install
配置以下几个文件:
两台服务器配置一样,注意 cluster_interface 与现有的网卡名称一样
# vim /etc/mysql-mmm/mmm_common.conf
active_master_role writer
<host default>
cluster_interface ens33
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user mmm_replication
replication_password mmm_replication
agent_user mmm_agent
agent_password mmm_agent
</host>
<host server171>
ip 192.168.1.171
mode master
peer server172
</host>
<host server172>
ip 192.168.1.172
mode master
peer server171
</host>
<role writer>
hosts server171, server172
ips 192.168.1.181
mode exclusive
</role>
<role reader>
hosts server171, server172
ips 192.168.1.182,192.168.1.183
mode balanced
</role>
每天服务器配置的不一样,只配置当前服务器名称(如本测试服务器 192.168.1.172 名称为 server172,另一台服务器同理)
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this server172
监控服务器只要一台
vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
<monitor>
ip 127.0.0.1
pid_path /var/run/mmm_mond.pid
bin_path /usr/lib/mysql-mmm/
status_path /var/lib/misc/mmm_mond.status
ping_ips 192.168.1.171, 192.168.1.172
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password mmm_monitor
</host>
debug 0
# vim /etc/mysql-mmm/mmm_tools.conf
启动服务
service mysql-mmm-agent status
service mysql-mmm-monitor status
/etc/init.d/mysql-mmm-agent start
/etc/init.d/mysql-mmm-monitor start
chkconfig --add /etc/rc.d/init.d/mysql-mmm-agent
chkconfig --add /etc/rc.d/init.d/mysql-mmm-monitor
检查 & 日志
mmm_control --help
mmm_control show
mmm_control checks all
# 日志
tail -f /var/log/mysql-mmm/mmm_mond.log
tail -f /var/log/mysql-mmm/mmm_agentd.log
测试,连接 writer 角色的虚拟IP。测试故障转移
# 测试,连接 writer 角色的虚拟IP
mysql -h 192.168.1.181 -u root -p
mysql -h 192.168.1.181 -P3306 -u test -p
show variables like 'server_id';
# writer 角色所在服务器 server172重启mysql实例,角色将切换
[root@server172 ~]# service mysqld stop
# 重启服务后,角色不会变
[root@server172 ~]# service mysqld start
# 设置在线后,此实例作为 reader 角色 (双主同步自动恢复)
[root@server172 ~]# mmm_control set_online server172
标签:monitor,ip,mysql,agent,mmm,192.168,MySQL From: https://blog.51cto.com/hzc2012/6007809