mysql mmm高可用架构设计
项目概述:搭建主从,双主,安装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高可用架构设计的更多相关文章
- centos6.6部署mysql mmm高可用架构
一.环境简述 1.工作逻辑图 2.MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是 ...
- CentOS 搭建 Mysql MMM 高可用架构
环境 CentOS Mysql 5.1 前提 安装了EPEL,详细安装步骤请參照 http://blog.csdn.net/robinsonmhj/article/details/36184863 机 ...
- 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进
本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- MySQL集群搭建(3)-MMM高可用架构
1 MMM 介绍 1.1 简介 MMM 是一套支持双主故障切换以及双主日常管理的第三方软件.MMM 由 Perl 开发,用来管理和监控双主复制,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入 ...
- mysql复制(高可用架构方案的基础)
mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以 ...
- Mysql MMM 高可用
一.Mysql MMM 高可用概况: mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...
- Redis 高可用架构设计(转载)
转载自:https://mp.weixin.qq.com/s?__biz=MzA3NDcyMTQyNQ==&mid=2649263292&idx=1&sn=b170390684 ...
随机推荐
- Linux Shell之top命令
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
- iOS 生成随机数 重复 不重复
//编程的时候,有三条任选执行路径,都会显示一些图片,比如路径1显示的图片是一个人,路径2显示的是两个人,路径3显示任意人数的图片,要求每次进入该页面都不能重复初始的那张图片. 于是我想到了 运用随机 ...
- hadoop2.6.0+eclipse配置
[0]安装前的声明 0.1) 所用节点2个 master : 192.168.119.105 hadoop5 slave : 192.168.119.101 hadoop1 (先用一个slave,跑成 ...
- compass做雪碧图
由于最近没什么时间好好写博文,我把用sass做雪碧图的关键点贴出来方便自己记忆: config.rb注释 # Set this to the root of your project when dep ...
- ARM嵌入式整理
填空 1指令含义 列出文件列表的ls命令 切换目录的cd命令 创建目录的mkdir命令 删除目录的rmdir命令 复制文件的cp命令 删除文件或目录的rm命令 让显示画面暂停的more命令 连接文件的 ...
- CF 163E. e-Government ac自动机+fail树+树状数组
E. e-Government 题目: 给出n个字符串,表示n个人名,有两种操作: ?string ,统计字符串string中出现的属于城市居民的次数. +id,把编号为id的人变为城市居民,如果已经 ...
- 日历控件table布局
作为初学者,一开始就接触div+css ,所以说实话,我并不怎么喜欢table布局,一般逃避. 先上这次的效果图: 看到这个图,第一次用table布局没实现,原因是给tr加下边框失效.当时没找到原因, ...
- Android之开源项目优秀项目篇
本文转自:http://www.trinea.cn/android/android-open-source-projects-excellent-project/ 记录的项目主要依据是项目有意思或项目 ...
- Zend studio 12.5.1安装aptana
aptana是zend studio的一个插件.解决zend对于前台html支持,加亮的问题. 安装方法其实很简单 ,直接给出aptana的地址了. http://download.aptana.co ...
- sql语句添加约束
sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...