- 浏览: 734807 次
- 性别:
- 来自: 湖北
文章分类
最新评论
-
SE_XiaoFeng:
用mysqldump命令行导出。这个报错唉。错误提示信息如下: ...
linux下如何导入导出MySQL数据库 -
SE_XiaoFeng:
文章写的干脆了当,我喜欢!
linux下如何导入导出MySQL数据库 -
niky6688:
网站咋打不开呢
beckham herms birki ...
【原创】上周给公司新做了一个网站,请大家审阅! -
niky6688:
哈哈
new chanel bags 2012
burbe ...
今天我抢了一个咪咪??? -
ydsakyclguozi:
...
jsp资源管理器也可能是木马
发布时间:2005.05.24 11:20 来源:超越PHP 作者:Michael(超越PHP 译 ) |
在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试。通过测试我们发现,可以使用这个特性来与备份数据库服务器保持数据同步,这样当主服务器因为某种原因处理失效时,能够使用备份机处理所有的查询。对于这样的要求,配置两台服务器并不困难。我将详细讨论整个处理过程,同时讨论一下当主服务器失效时,如何使用PHP来重定向查询。 |
用MySQL内建复制功能来优化可用性(下) |
第三步:创建相互的主从关系 GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY 'password'; 在B机上运行'FLUSH PRIVILEGES'命令,以便装入在加入复制用户后的新的授权表,接着回到A机上,在 master-host=10.1.1.2 在重启A机的服务程序之后,现在我们一拥有了在A机与B机之间的相互主-从关系。不管在哪个服务器上 更新一条记录或插入一条记录,都将被复制到另一台服务器上。要注意的是:我不敢确定一个备机合并二进 制日志变化的速度有多快,所以用这种方法来进行插入或更新语句的负载平衡可能不是一个好办法。 第四步:修改你的数据库连接程序 既然你已经在A机和B机之间建立了一个相互的关系,你需要修改数据库连接程序,以便从这种方式中得 到好处。下面的函数首先试图与A机连接,如果不能建立连接则与B机连接。 /******************************************************** function db_connect() returns a link identifier on success, or false on error ********************************************************/ function db_connect(){ $username = "replUser"; $password = "password"; $primary = "10.1.1.1"; $backup = "10.1.1.2"; # attempt connection to primary if(!$link_id = @mysql_connect($primary, $username, $password)) # attempt connection to secondary $link_id = @mysql_connect($secondary, $username, $password) return $link_id; } ?> 我在两种情况下对使用了上面技术的数据库连接建立过程进行了测试,一种是主MySQL服务程序关闭了, 但是服务器还在运行,另一种情况是主服务器关闭了。如果只是mysqld关闭了,连接会马上转向备机;但是 如果整个服务器关闭了,就出现了无限地等待(两分钟后我放弃了跟踪 -- 很短的注意跨度),因为PHP在查 找一个不存在的服务器。不幸地是,不象fsockopen函数,mysql_connect函数没有一个超时参数,然而我们 可以使用fsockopen来模拟一个超时处理。 第五步:一个改进的数据库连接程序 /******************************************************** function db_connect_plus() returns a link identifier on success, or false on error ********************************************************/ function db_connect_plus(){ $username = "username"; $password = "password"; $primary = "10.1.1.1"; $backup = "10.1.1.2"; $timeout = 15; // timeout in seconds if($fp = fsockopen($primary, 3306, &$errno, &$errstr, $timeout)){ fclose($fp); return $link = mysql_connect($primary, $username, $password); } if($fp = fsockopen($secondary, 3306, &$errno, &$errstr, $timeout)){ fclose($fp); return $link = mysql_connect($secondary, $username, $password); } return 0; } ?> 这个新改进的函数向我们提供了一个可调的超时特性,这正是mysql_connect函数所缺少的。如果连接 立即失败,这种情况如机器"活"着,但mysqld"当"掉了,函数立即移到第二个服务器。上面的函数相当健壮, 在试图进行连接之前先测试一下,查看服务程序是否在指定端口进行监听,让你的脚本在一段可接受的时间 段后超时,允许你适当地对出错情况进行处理。如果你修改了缺省端口3306,请保证对端口号进行修改。 结论和意见 首先,要确定得到了一个完整的数据快照。如果忘记拷贝一个表或数据库将导致备机线程序停止。生成 快照的时刻是很关健的。你应该确保在拷贝数据文件之前二进制日志功能是无效的。如果在得到快照之前就 允许了二进制日志功能,备机的线程可能会停止,原因就是当线程试图导入重要的记录时,可能会由于主键 重复而停止。最好就是接照第二部分所讨论的处理办法来做:关闭-拷贝-允许二进制日志功能重启。 你可能想要按照最初的一种方式来配制复制处理,并且在合适的时间关注备机,确保备机与主机保持同 步。 我没有测试过一个使用了复制特性的系统的负载平衡处理性能,但是我会灵活地使用这样系统来平衡插 入和更新。例如,如果在两台服务器上两条记录都给出了同一个auto_increment值,这种情况备机线程会在 哪一条记录上停掉呢?象这样的问题将会让负载平衡作为只读的处理,一台服务器处理所有的插入和更新, 同时一组备机(是的,你可以有多个与主机分离的备机)处理所有的选择。 我非常高兴,MySQL已经具备了复制系统的某些功能,并且配置很简单。使用它,你就可以开始针对失 控的事件提供额外的安全措施了。我仅仅涉及了复制特性,这个我已经测试并且使用了,但是在MySQL的在 线文档中的第11部分有中更详细的说明。 -------------------------------------------------------------------------------- 译者的话: 由于我原来使用的是3.22版的MySQL,所以为了测试一下我只好下载了3.23.24版的最新程序。而且因为 只有一台机器,我只是增加了二进制日志的设置。不过,正如本文所说,的确有文件生成。如果大家对此感 兴趣只好请自行测试了。另外,在最新的MySQL的使用手册中,我发现这个复制功能是在3.23.15版以后才有 的,请大家检查自已的MySQL的版本。同时,文中关于二进制日志的设置是说在my.cnf中设置的。在我使用的 3.23.24版本中,手册上说可以有三个文件进行参数设置,分别为windows目录下的my.ini文件,c:\my.cnf和 c:\mysql\data\my.cnf中可以设置。我在设置'log-bin'时(不需要先设log参数)是使用mysql自带的 WinMySQLadmin软件进行设置的,并且在my.ini中设定的,与文中不同,请大家自行测试。 |
发表评论
-
几种常用数据库比较
2010-09-08 08:08 1097目前,商品化的数据库 ... -
MySQL出错代码列表
2010-02-03 12:44 5261005:创建表失败 ... -
linux下如何导入导出MySQL数据库
2009-12-23 11:27 5183一、导出: 用mysqldump命令行 命令格 ... -
SQL操作全集
2009-12-03 18:04 630SQL操作全集 下 ... -
MySQL导入导出.sql文件步骤如下
2009-12-01 16:11 1142一.MySQL的命令行模式 ... -
java调用mysql命令 导入导出数据库
2009-11-25 17:05 1885具体的相关类 及 驱动文件 见 附件 package ... -
SQL命令导入导出大全
2009-11-22 14:39 1484EXEC master..xp_cmdshell ’b ... -
MySQL 建表语法
2009-11-20 13:37 16531、最简单的: CREATE TAB ... -
insert into select 复制表
2009-11-05 14:39 1061insert into 目标表 (pw ) select pw ... -
MySQL:MySQL 创建存储过程(MySQL 5.0)
2009-11-04 17:32 1352MySQL 存储过程是从 MySQL ... -
SQL Server 高效分页,没有比这更好的了!
2009-11-04 17:18 2465-- @PageNo : 第几页 -- @PageSize ... -
MySQL中将一个表数据批量导入另一表
2009-11-04 16:50 1787不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将My ... -
MySQL字段类型的选择与MySQL的查询效率
2009-10-21 23:35 2171要选择有助于使查询执 ... -
三种数据库利用SQL语句进行高效果分页
2009-10-21 23:33 889在程序的开发过程中,处理分页是大家接触比较频繁的事件,因为现在 ... -
MySQL查询及删除重复记录的方法
2009-10-21 15:51 1806(一) 1、查找表中多余的重复记录,重复记录是根据单个字段(p ... -
mysql数据库中常见错误提示及解决方法
2009-10-15 18:26 1435mysql数据库中常见错误提示及解决方法 phpma.com ... -
自动增长字段
2009-10-12 16:32 1078Oracle 1、建用户数据表 drop ... -
无法连接 远程IP上的mysql 数据库???
2009-09-09 18:04 2412如果你想连接你的mysql的时候发生这个错误: 以下是引用内 ... -
SQL精华收集
2009-08-24 18:39 1009SQL精华收集 order by 的数值型灵活使用 selec ... -
mysql 5.0存储过程学习总结
2009-05-13 22:18 973一.创建存储过程 1.基本语法: create proce ...
相关推荐
此外,本书还详细描述了高可用性架构的设计与实现,包括MySQL复制的原理和配置方法。 通过阅读本书,读者可以系统地掌握MySQL的性能优化技巧和高可用性架构实践,有效地应对实际应用中可能出现的各种挑战。本书同时...
LVS+Keepalived+MySQL半同步主主复制方案提供了一种高可用性和数据一致性的解决方案,适用于需要高稳定性和容错能力的环境。通过适当的配置和管理,可以实现高效的数据库管理和维护。然而,需要注意的是,该方案可能...
MySQL复制是数据库高可用性和可扩展性解决方案的关键技术之一,尤其在处理大量数据和高并发访问的场景下显得尤为重要。本篇文章将深入探讨MySQL复制的工作原理、配置过程、优势及故障处理策略。 **1. MySQL复制简介...
在现代数据库架构中,MySQL主从复制是一种常用的技术,用于实现数据的高可用性、负载均衡和数据备份。本文将详细介绍MySQL主从复制的原理、配置步骤、不同复制模式以及在实际应用中的策略和优化。 MySQL主从复制是一...
MySQL 8 数据库复制技术介绍 MySQL 8 数据库复制技术是指在一个或多个站点生成和复制多个数据副本的过程。... MySQL 8 数据库复制技术是一种功能强大、灵活的技术,可以帮助提高系统的可用性、可靠性和性能。
【MySQL进阶:优化查询性能与高可用性的实践】 在当今大数据时代,数据库的性能和稳定性对企业至关重要。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其高性能、低成本和易用性,成为了众多企业的首选...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,...通过对MySQL的深度优化,不仅可以提升系统的响应速度,还能确保数据的安全性和可用性。通过学习和实践,你可以更好地管理和维护MySQL数据库,应对各种业务挑战。
本篇文章将基于“高并发高可用MySQL优化”这一主题,深入探讨MySQL的索引优化、查询优化、架构设计以及高可用性策略。 首先,我们来关注MySQL的索引优化。索引是提升查询速度的关键,合理的索引设计能够大幅减少...
PPT可能会探讨垂直分割(按功能分库)和水平分割(如分片)的策略,以及如何使用读写分离和主从复制来提高可用性。 资源调优包括调整MySQL配置参数,如缓冲池大小、连接数限制、查询缓存等。PPT会介绍如何监控MySQL...
MySQL 5.7主从复制是数据库高可用性和负载均衡的一种常见实现方式,它通过将主数据库(Master)上的写操作同步到一个或多个从数据库(Slave)来实现数据的冗余备份和读写分离。在Java开发中,MySQL主从复制常常用于...
6. 集群与云数据库:MySQL集群(如Galera Cluster)提供高可用性和故障切换,云数据库服务(如AWS RDS)则提供了易于管理和扩展的解决方案。 三、监控与调优工具 1. MySQL性能监控:如pt-query-digest、Percona ...
MySQL复制是一种强大的功能,它允许数据在多个服务器之间实时同步,从而实现高可用性、负载均衡和数据备份。以下是该书可能涵盖的一些关键知识点: 1. **复制的基本概念**:书中会介绍复制的基本工作原理,包括主从...
《MySQL高可用性Cookbook》是一本专注于MySQL数据库系统稳定性和高效运行的实践指南,适合数据库管理员、系统架构师以及对MySQL高可用性有需求的技术人员阅读。这本书深入探讨了如何构建和维护高度可靠的MySQL环境,...
MySQL主从复制是一项非常实用的技术,它可以显著提高系统的可用性和性能。通过合理规划和配置,我们可以构建出高效稳定的MySQL主从集群,为企业提供强有力的数据支持。掌握这项技术不仅可以提升数据库管理的能力,还...
MySQL是当前广泛使用的开源数据库管理系统,它通过复制(Replication)技术提供了高可用性和可扩展性的解决方案。本文将详细探讨MySQL半同步复制的数据一致性问题。 首先,MySQL Replication的发展历程至关重要。最...
- **高可用与复制**:了解主从复制、半同步复制、多源复制等技术,提升系统的可用性和数据一致性。 - **资源调度与性能调优**:调整InnoDB引擎参数,如innodb_buffer_pool_size、innodb_log_file_size等,以适应...
- **Galera Cluster**:提供强一致性的分布式MySQL解决方案,适合需要高可用性和读写负载均衡的场景。 8. **性能监控** - **SHOW STATUS** 和 **SHOW VARIABLES**:获取MySQL服务器的运行状态和配置信息。 - **...
总的来说,《MySQL高可用性》是一本全面的指南,不仅适合那些正在寻找提高MySQL服务稳定性的DBA,也对开发者和系统管理员有极大的参考价值,它将帮助读者构建出更加健壮、高可用的MySQL环境。通过阅读这本书,你将...