项目概述:搭建主从,双主,安装Perl模块  安装配置mmm软件  测试

硬件环境:4台虚拟PC

软件环境:rehl6.5 MySQL-5.6.26 percona-xtrabackup-2.3.4 mysql-mmm-2.2.1

实施步骤:

  搭建主从,双主:

1.搭建4台主机与数据库:m1 m2 slave deve

2.修改m1 m2 slave参数文件 


[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
pid-file=/var/run/mysqld/mysql.pid
user=mysql


server-id=3
log_bin = mysqlserver
binlog_format=row


[mysql]
socket=/tmp/mysql.sock

 m1 m2参数文件在[mysqld]追加

auto_increment_increment=
auto_increment_offset=2
log_slave_updates=1

3.重启

service mysqld stop
netstat -auplnt |grep
service mysqld start grep -v "#" /etc/my.cnf 过滤#开头行查看文件
4.使用xtrabackup备份主库
4.1 安装工具
m1 m2 slave都要安装xtrabackup
# yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel vim-common -y 下面两个软件需要单独安装
rpm -ivh libev4-4.15-7.1.x86_64.rpm
rpm -ivh libev-devel-4.15-21.1.x86_64.rpm # tar xf percona-xtrabackup-2.3..tar.gz
# cd percona-xtrabackup-2.3.
#cmake -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF && make -j4
# make install 修改PATH变量
# vim /etc/profile
文件最后追加
export PATH="$PATH:/usr/local/xtrabackup/bin"
# source /etc/profile
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/usr/local/xtrabackup/bin # innobackupex --help 验证安装成功与否 建立备份目录 /backup/
chown -R mysql:mysql /backup
注意:3台pc时间一样 参数文件一致 其中server-id不一样
date -s '2016/06/30 16:05'

4.2 备份恢复

主库m1
备份:
# innobackupex --user=root --password= --socket=/var/run/mysqld/mysql.sock --no-timestamp /backup/
# innobackupex --apply-log /backup/ 主库m1上:
建用户
mysql> create user 'repl'@'%' identified by 'repl';
mysql> grant replication slave on *.* to 'root'@'%'; 将主库的备份拷贝到备库
scp安装百度
# scp -r * 172.16.145.38:/backup/ 在m2 slave 上:
关闭数据库
如果备库已经有数据库,删除数据库即可
datadir目录下面的内容 //删除
sock文件、pid文件 //删除,数据库关闭情况下,这两个文件很可能已经消失
binlog文件 //最好删除 恢复从库:
innobackupex --move-back /backup/ 修改权限
[root@mysql5 data]# chown -R mysql:mysql . 启动从库
mysqld_safe --defaults-file=/etc/my.cnf --skip-slave-start &

5.搭建主从

查看position
# cat xtrabackup_info 在m2 slave库上执行:
mysql>change master to
master_host='172.16.145.37',
master_port=,
master_user='root',
master_password='',
master_log_file='mysqlserver.000004',
master_log_pos= 启动从库
start slave; 查看备库状态
mysql> show slave status\G
Last_IO_Error,这个需要为空
show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
验证:主库 建表 查看从库 至此 主从 备份恢复搭建完毕

6.搭建双主

在m1上:
mysql> stop slave;
CHANGE MASTER TO master_host = '172.16.145.38', master_port=, master_user='root',
master_password='', master_log_file='mysqlserver.000003',
master_log_pos=; IP地址是m2的
master_log_file='mysqlserver.000003', master_log_pos=;
这两个值随便从M2上show master status得到就行 start slave; 至此 双主搭建成功

7.搭建3M

7.1配置网络 保证m1 m2 slave通信上网

3台服务器加网卡 使用NTA转换
配置
[root@mysql5 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp 重启网卡

7.2安装Perl模块

可以选用网络在线安装的方式,注意一定要选用国内的服务器,最好的就是163
perl -MCPAN -e shell 一种在线安装方式:cpan
cpan命令:
o config init 重新配置
o config commit 保存配置 安装步骤:
[root@mysql5 ~]# perl -MCPAN -e shell
配置cpan 使用163作为Perl安装源
# yum install cpan -y
# perl -MCPAN -e shell
输入yes是表示自动配置 生成了cpan的默认文件
cpan[]> o conf commit 保存配置
cpan[]> exit
[root@mysql5 ~]# perl -MCPAN -e shell
cpan[]> o conf init
输出no
一路回车 /root/.cpan/sources/MIRRORED.BY cpan服务器文件
到亚洲
中国
选择163
cpan[]> o conf commit 安装
在cpan上安装,需要选择就回车
install YAML
install Algorithm::Diff
install Class::Singleton
install DBI
install DBD::mysql
安装这个模块以前,需要做如下工作,另外开一个窗口
MySQL编译安装的
[root@mysql5 network-scripts]# cd /etc/ld.so.conf.d/
[root@mysql5 ld.so.conf.d]# ll
total
-r--r--r--. root root Nov kernel-2.6.- .el6.x86_64.conf
-rw-r--r--. root root Aug mysql-x86_64.conf
[root@mysql5 ld.so.conf.d]# vim mysql-x86_64.conf(文件随机选就行)
追加 :/usr/local/mysql/lib
ldconfig 刷新/etc/ld.so.conf.d/下的动态库
install File::Temp
install Log::Dispatch
install Log::Log4perl
install Mail::Send
install Net::ARP
force install Net::Ping #force表示只安装不测试 强制安装
install Proc::Daemon
install Thread::Queue
install Time::HiRes 注意:保证每个模块安装上。可以在安装一遍查看是否安装上。安装不上可以下载tar包编译安装

7.3安装配置mmm

安装mmm
# tar xf mysql-mmm-2.2..tar.gz
# cd mysql-mmm-2.2.
# make install 在m1建用户
grant replication client on *.* to 'mmm_monitor'@'172.16.145.%' identified by 'mmm_monitor';
grant super,replication client,process on *.* to 'mmm_agent'@'172.16.145.%' identified by 'mmm_agent';
grant replication slave on *.* to 'repl'@'172.16.145.%' identified by 'repl';
grant all on *.* to 'root'@'172.16.145.%' identified by ''; 测试连通性 测试用户建立的是否得当 在每一台服务器上
mysql -uroot -prootroot -h192.168.56.
mysql -uroot -prootroot -h192.168.56.
mysql -uroot -prootroot -h192.168.56. mysql -urepl -prepl -h192.168.56.
mysql -urepl -prepl -h192.168.56.101
mysql -urepl -prepl -h192.168.56. mysql -ummm_agent -pmmm_agent -h192.168.56.
mysql -ummm_agent -pmmm_agent -h192.168.56.
mysql -ummm_agent -pmmm_agent -h192.168.56.102
配置mmm文件
以下文件在m1 m2 slave配置 /etc/mysql-mmm/mmm_common.conf
active_master_role writer #主作用 写 <host default>
cluster_interface eth1 #通信的网卡 pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/ replication_user repl #主从复制用户
replication_password repl agent_user mmm_agent#通信的用户
agent_password mmm_agent
</host> <host m1>#主机名
ip 172.16.145.37
mode master#角色
peer m2 # m1对应的
</host> <host m2>
ip 172.16.145.38
mode master
peer m1
</host> <host slave_mon>
ip 172.16.145.39
mode slave
</host> <role writer> #写角色
hosts m1,m2
ips 172.16.145.24 vip 同一网段不一样
mode exclusive
</role> <role reader>
hosts m2,slave_mon
ips 172.16.145.25, 172.16.145.26
mode balanced
</role> mmm_agent.conf文件
this slave_mon(三台主机的主机名) [root@m1 ~]# vim /etc/hosts
[root@m1 ~]# cat /etc/hosts
172.16.145.37 m1
172.16.145.38 m2
172.16.145.39 slave_mon
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6
monitor在salve上  在slave配置
# vim mmm_mon.conf 修改IP地址 注意monitor用户名与密码
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.0.1, 192.168.0.2, 192.168.0.3(m1 m2 slave ip地址)
</monitor> <host default>
monitor_user mmm_monitor
monitor_password mmm_monotor
</host> debug

mmm配置完毕

8.启动与测试

启动mmm、测试mmm状态
各个服务器的MySQL slave 启动
每一个服务器启动agent
/etc/init.d/mysql-mmm-agent start
monitor服务器启动monitor
/etc/init.d/mysql-mmm-monitor start [root@slave_mon ~]# /etc/init.d/mysql-mmm-monitor start
Daemon bin: '/usr/sbin/mmm_mond'
Daemon pid: '/var/run/mmm_mond.pid'
Starting MMM Monitor daemon: Ok 用deve登陆read和write vip,在write上建表,在read查看。m1模拟宕机,write vip飘到m2上
# mmm_control help
Valid commands are:
help - show this message
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>

mysql mmm高可用架构设计的更多相关文章

  1. centos6.6部署mysql mmm高可用架构

    一.环境简述 1.工作逻辑图 2.MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是 ...

  2. CentOS 搭建 Mysql MMM 高可用架构

    环境 CentOS Mysql 5.1 前提 安装了EPEL,详细安装步骤请參照 http://blog.csdn.net/robinsonmhj/article/details/36184863 机 ...

  3. 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进

    本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...

  4. 从MySQL高可用引出对高可用架构设计的一些思考

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  5. 从mysql高可用架构看高可用架构设计

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  6. MySQL集群搭建(3)-MMM高可用架构

    1 MMM 介绍 1.1 简介 MMM 是一套支持双主故障切换以及双主日常管理的第三方软件.MMM 由 Perl 开发,用来管理和监控双主复制,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入 ...

  7. mysql复制(高可用架构方案的基础)

    mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以 ...

  8. Mysql MMM 高可用

    一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...

  9. Redis 高可用架构设计(转载)

    转载自:https://mp.weixin.qq.com/s?__biz=MzA3NDcyMTQyNQ==&mid=2649263292&idx=1&sn=b170390684 ...

随机推荐

  1. 信号之signal函数

    UNIX系统的信号机制最简单的接口是signal函数.signal函数的功能:为指定的信号安装一个新的信号处理函数. #include <signal.h> void (*signal(i ...

  2. Bash脚本编程基础

    为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程. 按照应用的Shell环境不同,可以将Shell脚本分为多种类型.其中最常见的是应用于Bash和Tcsh的脚本 ...

  3. ls 显示目录和文件的技巧

    摘自 http://hi.baidu.com/zaoyuan1217/blog/item/fd69575660366b4fd10906b9.html 要列出当前目录下所有的文件名和目录名直接使用ls命 ...

  4. html元素英文含义

    常用html标签的英语全称及简单功能描述 <a>:anchor 定义锚 <abbr>:abbreviation 定义缩写 <acronym>: 定义只取消首字母的缩 ...

  5. WinForm中DefWndProc、WndProc与IMessageFilter的区别

    这篇文章主要介绍了WinForm中DefWndProc.WndProc与IMessageFilter的区别,较为详细的分析了WinForm的消息处理机制,需要的朋友可以参考下     一般来说,Win ...

  6. html 文件上传框 input标签

    文件上传框 有时候,需要用户上传自己的文件,文件上传框看上去和其它 文本域差不多,只是它还包含了一个浏览按钮.访问者可以通 过输入需要上传的文件的路径或者点击浏览按钮选择需要上传 的文件. 代码格式: ...

  7. ArcGIS地图文档MXD效率慢的一点建议(二)

    经常有用户询问,我的MXD图层比较多,而且配置好了相关的符号,但是我的服务器更换了一下,而且两个服务器的要素类名称都是一样的,我想配置一下新的数据源,而且我的这个MXD已经连接不到原来的数据源了,打开 ...

  8. 【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析

    .先讲讲怎么使用bindService()绑定服务 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回 ...

  9. hdu 1243 反恐训练营 最长公共字序列

    此题的题意很明确,就是求最长公共子序列: #include<iostream> #include<algorithm> #include<cstdio> #incl ...

  10. hihocoder 1037 数字三角形

    #1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸 ...