背景:之前实现的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服务启动,再查看状态:

读写服务器又分开了


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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6
视觉化网页开发工具

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