项目概述:搭建主从,双主,安装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. 在Dropbox上搭建私有的Git仓库的教程

    导读 Git版本控制系统需要一个服务器端,而GitHub上要想创建私有的Git服务器端仓库则触及到收费项目,于是这里我们利用Dropbox的免费空间,来看一下在Dropbox上搭建私有的Git仓库的教 ...

  2. Qt 静态编译的问题.

    编译参数 configure -confirm-license -opensource -developer-build -static -prefix D:\libraries\Qt5.3.1s - ...

  3. LeetCode34 Search for a Range

    题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...

  4. hadoop2 作业执行过程之yarn调度执行

    YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度(目前还不完善,只支持粗粒度的CPU和内存的的调配): 它的基本思想是将Mapreduce的jobtracker ...

  5. IOS开发 xcode报错之has been modified since the precompiled header was built

    转载的文章  很实用 IOS开发xcode报错之has been modified since the precompiled header was built 今天做百度地图的时候第一次发现下面错误 ...

  6. uiview 的setAnimationTransition : forView 方法实现翻页效果

    [UIView beginAnimations:nil context:nil]; [UIView setAnimationTransition:UIViewAnimationTransitionCu ...

  7. 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读

    一.教程重点:以 HTML5和CSS3的新功能和新特性 为导向,辅之以 实战型实例页面 二.内容概况: 第1部分:详细讲解HTML5相关知识,包括 各主流浏览器对HTML5的支持情况. HTML5与H ...

  8. 【Android 界面效果37】ViewStub的应用

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...

  9. DML 数据操控语言

    一.DML数据操作语言  (DQL  select ) 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删 ...

  10. Differential Geometry之第四章标架与曲面论的基本定理

    第四章.标架与曲面论的基本定理 1.活动标架 2.自然标架的运动方程 爱因斯坦求和约定(Einstein summation convention) 3.曲面的结构方程 4.曲面的存在唯一性定理 5. ...