搜索
首页数据库mysql教程使用mysql-mmm实现mysql集群部署_MySQL

背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。

本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。

本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。

本次演示的配置使用三台机器,架构如下:

\

Master1 和Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。

1、安装mysql-mmm服务

在三台机器都安装

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install mysql-mmm*

完成后查看 rpm -qa|grep mysql-mmm

有以下组件表示安装成功

\

Rhel5或centos5,32位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Rhel6或centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm

Rhel6或centos6,64位:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1、添加mysql的用户

在三台机器都添加mysql用户,分别用于复制、

进入mysql服务mysql -u root -p

use mysql;

grant REPLICATION slave,REPLICATION CLIENT on *.* to 'repl'@'%' identified by 'password'; //建立复制用户

grant PROCESS,SUPER,REPLICATION CLIENT on *.* to 'mmm_agent'@'%' identified by 'password'; //建立agent用户

grant REPLICATION CLIENT on *.* to 'mmm_monitor'@'%' identified by 'password'; //建立用户

FLUSH PRIVILEGES;

2、配置同步复制

配置复制的策略如架构图所示。

配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937

3、修改hosts

分别修改三台机器的hosts文件

vi /etc/hosts

添加

200.200.168.24 M1

200.200.168.25 M2

200.200.168.23 slave1

4、配置mysql-mmm

修改 /etc/mysql-mmm/mmm_common.conf 各台机子的配置都一样

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        repl
    replication_password    password
    agent_user              mmm_agent
    agent_password          <span style="font-size: 13.3333339691162px;">password</span>
</host>

<host M1>
    ip      200.200.168.24
    mode    master
    peer    M2
</host>

<host M2>
    ip      200.200.168.25
    mode    master
    peer    M1
</host>

<host slave1>
    ip      200.200.168.23
    mode    slave
</host>

<role writer>
    hosts   M1,M2
    ips     200.200.168.26
    mode    exclusive
</role>

<role reader>
    hosts   M1,M2,slave1
    ips     200.200.168.27
    mode    balanced
</role>

注意:200.200.168.26和200.200.168.27是两个虚拟的IP地址,供应用程序调用,只需用两个没人占用的IP就可以,分别用来提供写和读服务,为以后实现数据库的读写分离(但实现读写分离需要修改应用程序,mysql并不能自动识别并切换)。

修改/etc/mysql-mmm/mmm_agent.conf

三台机器分别设置为this M1、this M2、this slave1

修改/etc/mysql-mmm/mmm_mon.conf

只是monitor(200.200.168.24)机子需要配置

include mmm_common.conf
<monitor>
    ip                  127.0.0.1
    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            200.200.168.24,200.200.168.25,200.200.168.23
    auto_set_online     10

    # The kill_host_bin does not exist by default, though the monitor will
    # throw a warning about it missing.  See the section 5.10 "Kill Host 
    # Functionality" in the PDF documentation.
    #
    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host
    #
</monitor>
<host default>
    monitor_user        mmm_monitor
    monitor_password    password
</host>
debug 0

配置完成后运行

三台机子都需运行:

/etc/init.d/mysql-mmm-agent start

Monitor机子运行

/etc/init.d/mysql-mmm-monitor start

5、查看服务状态及测试

在monitor机子运行mmm_control show

可以看到以下信息:

\

表示写服务器(200.200.168.26)使用的是200.200.168.24

读服务器(200.200.168.27)使用的是200.200.168.25

查看各个服务的状态:

mmm_control checks all

\

6、测试:

将master1的mysql服务停止,然后mmm_control show查看状态

\

可以看到读写服务器都转移到了master2,这时服务器master1的流程应用还能够正常使用,可以进行申请流程测试

这时查看mmm_control checks all

\

将master1 的mysql服务启动,再查看状态:

\

读写服务器又分开了

\
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL与Sqlite有何不同?MySQL与Sqlite有何不同?Apr 24, 2025 am 12:12 AM

MySQL和SQLite的主要区别在于设计理念和使用场景:1.MySQL适用于大型应用和企业级解决方案,支持高性能和高并发;2.SQLite适合移动应用和桌面软件,轻量级且易于嵌入。

MySQL中的索引是什么?它们如何提高性能?MySQL中的索引是什么?它们如何提高性能?Apr 24, 2025 am 12:09 AM

MySQL中的索引是数据库表中一列或多列的有序结构,用于加速数据检索。1)索引通过减少扫描数据量提升查询速度。2)B-Tree索引利用平衡树结构,适合范围查询和排序。3)创建索引使用CREATEINDEX语句,如CREATEINDEXidx_customer_idONorders(customer_id)。4)复合索引可优化多列查询,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。5)使用EXPLAIN分析查询计划,避

说明如何使用MySQL中的交易来确保数据一致性。说明如何使用MySQL中的交易来确保数据一致性。Apr 24, 2025 am 12:09 AM

在MySQL中使用事务可以确保数据一致性。1)通过STARTTRANSACTION开始事务,执行SQL操作后用COMMIT提交或ROLLBACK回滚。2)使用SAVEPOINT可以设置保存点,允许部分回滚。3)性能优化建议包括缩短事务时间、避免大规模查询和合理使用隔离级别。

在哪些情况下,您可以选择PostgreSQL而不是MySQL?在哪些情况下,您可以选择PostgreSQL而不是MySQL?Apr 24, 2025 am 12:07 AM

选择PostgreSQL而非MySQL的场景包括:1)需要复杂查询和高级SQL功能,2)要求严格的数据完整性和ACID遵从性,3)需要高级空间功能,4)处理大数据集时需要高性能。PostgreSQL在这些方面表现出色,适合需要复杂数据处理和高数据完整性的项目。

如何保护MySQL数据库?如何保护MySQL数据库?Apr 24, 2025 am 12:04 AM

MySQL数据库的安全可以通过以下措施实现:1.用户权限管理:通过CREATEUSER和GRANT命令严格控制访问权限。2.加密传输:配置SSL/TLS确保数据传输安全。3.数据库备份和恢复:使用mysqldump或mysqlpump定期备份数据。4.高级安全策略:使用防火墙限制访问,并启用审计日志记录操作。5.性能优化与最佳实践:通过索引和查询优化以及定期维护兼顾安全和性能。

您可以使用哪些工具来监视MySQL性能?您可以使用哪些工具来监视MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL与SQL Server有何不同?MySQL与SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在哪些情况下,您可以选择SQL Server而不是MySQL?在哪些情况下,您可以选择SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!