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=1
auto_increment_offset=2log_slave_updates=1

3.重启

service mysqld stop
netstat -auplnt |grep 3306
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.4.tar.gz
# cd percona-xtrabackup-2.3.4
#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=123123 --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/

修改权限
[[email protected] 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=3306,
master_user=‘root‘,
master_password=‘123123‘,
master_log_file=‘mysqlserver.000004‘,
master_log_pos=1454

启动从库
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=3306, master_user=‘root‘,
master_password=‘123123‘, master_log_file=‘mysqlserver.000003‘,
master_log_pos=301;

IP地址是m2的
master_log_file=‘mysqlserver.000003‘,  master_log_pos=301;
这两个值随便从M2上show master status得到就行

start slave;

至此 双主搭建成功

7.搭建3M

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

3台服务器加网卡 使用NTA转换
配置
[[email protected] 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  保存配置

安装步骤:
[[email protected] ~]# perl -MCPAN -e shell
配置cpan 使用163作为Perl安装源
# yum install cpan -y
# perl -MCPAN -e shell
输入yes是表示自动配置  生成了cpan的默认文件
cpan[1]> o conf commit  保存配置
cpan[3]> exit
[[email protected] ~]# perl -MCPAN -e shell
cpan[1]> o conf init
输出no
一路回车

/root/.cpan/sources/MIRRORED.BY  cpan服务器文件
到亚洲
中国
选择163
cpan[3]> o conf commit

安装
在cpan上安装,需要选择就回车
install YAML
install Algorithm::Diff
install Class::Singleton
install DBI
install DBD::mysql
    安装这个模块以前,需要做如下工作,另外开一个窗口
    MySQL编译安装的
    [[email protected] network-scripts]# cd /etc/ld.so.conf.d/
    [[email protected] ld.so.conf.d]# ll
    total 8
    -r--r--r--. 1 root root 324 Nov 11  2013 kernel-2.6.32-    431.el6.x86_64.conf
    -rw-r--r--. 1 root root  17 Aug  9  2013 mysql-x86_64.conf
    [[email protected] 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.1.tar.gz
# cd mysql-mmm-2.2.1
# 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 ‘123123‘;

测试连通性  测试用户建立的是否得当  在每一台服务器上
mysql -uroot -prootroot -h192.168.56.219
mysql -uroot -prootroot -h192.168.56.101
mysql -uroot -prootroot -h192.168.56.102

mysql -urepl -prepl -h192.168.56.219
mysql -urepl -prepl -h192.168.56.101mysql -urepl -prepl -h192.168.56.102

mysql -ummm_agent -pmmm_agent -h192.168.56.219
mysql -ummm_agent -pmmm_agent -h192.168.56.101
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(三台主机的主机名)

[[email protected] ~]# vim /etc/hosts
[[email protected] ~]# 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
::1         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 0

mmm配置完毕

8.启动与测试

启动mmm、测试mmm状态
各个服务器的MySQL slave 启动
  每一个服务器启动agent
/etc/init.d/mysql-mmm-agent start
monitor服务器启动monitor
/etc/init.d/mysql-mmm-monitor start

[[email protected]_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>

时间: 2024-08-09 22:52:33

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

CentOS 搭建 Mysql MMM 高可用架构

环境 CentOS Mysql 5.1 前提 安装了EPEL,详细安装步骤请參照 http://blog.csdn.net/robinsonmhj/article/details/36184863 机器列表 机器IP 机器名 192.168.0.135 db1 192.168.0.136 monitor 192.168.0.137 db2 虚拟IP 作用 192.168.0.138 writter 192.168.0.139 reader 192.168.0.140 reader 安装步骤 1.

mysql高可用架构设计

主要介绍:复制功能介绍.mysql二进制日志.mysql复制拓扑.高可用框架.单点故障.读写分离和负载均衡介绍等 mysql复制功能提供分担读负载 复制解决的问题 实现在不同服务器上的数据分布 利用二进制日志增量进行 不需要太多的带宽 但是使用基于行的复制在进行大批量的更改时会对带宽带来一定得压力,特别是跨IDC环境下进行复制 实现在不同服务器上的数据分布 实现数据读取的负载均衡 需要其他组件配合完成 利用DNS轮询的方式把程序的读连接到不同的备份数据库, 使用LVS,haproxy这样的代理方

MySQL高可用群集--MMM高可用架构

为什么要使用MySQL高可用群集 在实际生产环境中,当普通的MySQL主从复制和读写分离不能满足实际需求时,就需要考虑MySQL的高可用群集,出于安全角度考虑,当数据访问量过大带来主服务器负载增大,当出现主服务器宕机一个时,保证数据服务不会中断的情况下,从服务器会自动寻找另一主服务器,而从服务器也会像主服务器一样,当其中一个宕机时,依旧可以保证服务不会中断. MMM高可用架构 什么是MMM? MMM(Master-Master replication manager for MySQL)是一套支

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

mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以在全部改变中根据业务需求选择部分库和部分表的复制复制的场景: 1.数据库容灾 2.需求:创建一个从数据服务器,做数据的测试和分析 3.负载均衡 4.复制时高可用架构方案的基础 mysql高可用架构特点1.数据库故障的检测与排除2.主从数据库的切换3.数据的备份和保护 mysql高可用架构常用方案1.

Mysql MMM 高可用

一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点: mmm_control  命令行管理mmm_mond进程: Monitor:192.168.209.18 DB1:192.168.209.19 DB2:192.168.209.20 DB3:192.168.209.21   virtual write ip:192.168.209.4 v

面向业务的立体化高可用架构设计

面向业务的立体化高可用架构设计 摘要:为了实现阿里九游游戏接入系统的业务高可用,技术人员跳出传统的面向系统的高可用的思路,转而从业务的角度来整体考虑高可用,最终实现了一套立体化的高可用架构,本文逐一展示这套立体化高可用架构的一些具体实践. 通常情况下我们在谈论高可用架构设计的时候,主要关注的是系统结构的高可用,例如主备架构.集群架构.多中心架构.我们做架构设计的时候,也主要是从系统结构本身出发,例如我们把单机改为双机.双机改为集群.单机房改为异地多机房等等. 这种以系统结构为目标的高可用架构设计

MMM高可用架构

MMM高可用架构 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,可以说是mysql主主复制管理器.虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也

Oracle Compute云快速搭建MySQL Keepalived高可用架构

最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户根据自身的技术储备想要使用Keepalived组件来配合MySQL实现.今天结合Oracle Compute刚刚宣布terraform支持的架构即代码方式,交付给客户一个快速搭建MySQL+Keepalived高可用架构,来帮助他们快速搭建测试环境甚至将来使用到正式环境. MySQL主主复制模式 M

高可用架构设计与实践

第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的涉及环节都有哪些? 第二课:高可用架构设计之总体架构篇 高可用架构为什么需要分层? 高可用架构分层设计原则是什么?如何架构分层? 高可用架构分层最佳实践: 我们的实践案例: 第三课:高可用架构设计之硬件篇 如何选择硬件?选择什么样的硬件? 高可用架构硬件层面如何保证? 硬件层面高可用架构保证的最佳实践是什么? 我们的实践案例: