Mysql实例详细讲解安全升级MySQL的方法

Mysql实例详细讲解安全升级MySQL的方法,第1张

概述介绍《Mysql实例详细讲解安全升级MySQL的方法》开发教程,希望对您有用。

《MysqL实例详细讲解安全升级MysqL的方法》要点:
本文介绍了MysqL实例详细讲解安全升级MysqL的方法,希望对您有用。如果有疑问,可以联系我们。

MysqL必读MysqL升级是非常必要的. 我们在Percona Support上列出了关于MysqL升级最佳实践的各种问题.这篇文章推荐了一些不同情况下升级MysqL的方法.

MysqL必读为什么MysqL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量,修复的BUG. 但是在没有充分的测试以前就应用到你的应用中是非常危险的,因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外,我建议你关注MysqL的发布信息和Percona Server - 看看最近的版本有什么变化. 也许在在最新的版本中已修复了某个你正在烦恼的问题.

MysqL必读通过sql Dump升级主版本:

MysqL必读把Percona Server从5.1升级到5.5版本或者是从5.5升级到5.6版本的升级模式同样适用于Oracle MysqL.

MysqL必读首先,主版本升级并不是说可以不做任何准备,或者没有任何风险. 在升级之前你需要阅读相关的“升级”文档,比如:MysqL5.1到MysqL5.5的升级文档,MysqL5.5到MysqL5.6的升级文档.在这些文档里面你需要特别注意“Incompatible Change”部分,并检查你是否会受到这些变化的影响.它们可能是配置参数名字变更,去掉旧的参数,引入新的参数等- 你需要根据这些变化在my.cnf文件做相应的变更.Percona Server 5.5需要特别注意的文档在这里,Percona Server 5.6需要特别注意的文档在这里.

MysqL必读现在,你有几种可行的方式升级,其中一种较灵活,另一种则依赖你当前系统的拓扑结构和数据库数据大小 - 这种方法比前一种更安全.我们看个例子从 Percona Server 5.5 升级到 Percona Server 5.6,来具体看一下彼此的升级过程.

MysqL必读通常情况下,有两中升级方式:

    直接升级:安装好新版本数据库后,利用已经存在的数据文件夹,同时运行MysqL_upgrade脚本来升级.     sql 导出: 从一个较老版本的MysqL把数据导出,然后恢复到新版本的数据库中.(利用MysqLdump工具).

MysqL必读相比之下,第二种方式更安全些,但是这也会使得升级的过程要慢一些.

MysqL必读理论上讲,最安全的方式是:

    导出所有用户的权限     导出所有数据并恢复到新版本数据库中     恢复用户权限到新数据库中

MysqL必读
下面是基本的 *** 作步骤(在开始之前最好停止有关数据库 *** 作的应用).

MysqL必读1) 获取用户和权限信息. 该 *** 作会备份所有用户的权限.
 

MysqL必读$ wget percona.com/get/pt-show-grants;$ perl pt-show-grants --user=root --ask-pass --flush > /root/grants.sql

MysqL必读2) dump 5.5数据库实例的所有信息(除去MysqL,information_schema 和performance_schema数据库).
 

MysqL必读$ MysqL -BNe "SELECT SCHEMA_name FROM informatION_SCHEMA.SCHEMATA WHERE SCHEMA_name NOT IN ('MysqL','performance_schema','information_schema')" | tr 'n' ' ' > /root/dbs-to-dump.sql$ MysqLdump --routines --events --single-transaction --databases $(cat /root/dbs-to-dump.sql) > /root/full-data-dump.sql

MysqL必读3) 停止数据库

MysqL必读 

MysqL必读$ service MysqL stop

MysqL必读or

MysqL必读$ /etc/init.d/MysqL stop

MysqL必读4) 移动旧数据库(5.5版本)的数据目录(假设是/var/lib/MysqL,此处应该改为你自己的数据目录)
 

MysqL必读$ mv /var/lib/MysqL/ /var/lib/MysqL-55

MysqL必读5) 安装5.6版本(按照正常安装流程). 如果你不是用的yum/apt-get方式安装的,你需要执行 MysqL_install_db 和MysqL_upgrade两个命令.

MysqL必读6) 将在1) *** 作中导出的用户信息导入到新数据库中.

MysqL必读 MysqL -uroot < /root/grants.sql

MysqL必读7) 将2)导出的数据导入到新数据库.
 

MysqL必读$ MysqL -e "SET GLOBAL max_allowed_packet=1024*1024*1024";$ MysqL -uroot -p --max-allowed-packet=1G < /root/full-data-dump.sql;

MysqL必读此时,所有的表都在MysqL 5.6中重建及重新加载完成,所以所有的二进制文件对MysqL 5.6可用. 同时也你完成了最干净/最稳定的升级过程,你可以恢复你的应用- 这个升级过程和valina MysqL与Percona Server的升级过程是一样的.甚至你可以把Oracle MysqL升级到Percona Server. 比如: 把Oracle MysqL 5.5升级到Percona Server 5.6. 再次强调: MysqL的升级过程和Percona Server的升级过程是一样的,只需要将Percona Server 替换成Oracle MysqL即可.

MysqL必读"sql dump" 也可以称为逻辑备份.用升级后的MysqL二进制文件来重建所有的表基本没有兼容问题,从这一方面来说"sql dump"更安全. 但是对于TB,GB级的大数据来说,这种方法非常的耗时. 另一方面,备份/重新加载如此大的数据集,比如重建InnoDB表,你需要恢复很多的空闲磁盘,这样会引起的磁盘碎片整理优化.对于常更新或者删除的数据来说,这么做是有益的.

MysqL必读用In-Place升级小版本:

MysqL必读这种升级方式是在一个主版本内做小版本升级,比如把MysqL 5.5.35升级到MysqL 5.5.38或者是把Percona Server 5.6.14升级到最新的Percona Server 5.6.20

MysqL必读这被称为一个就地升级,你只安装一个新的二进制包,然后运行MysqL_upgrade脚本,如果必要的话,检查和更新系统表.仍然,就地升级我们强烈推荐检查新功能的发布说明,BUG修复等.Percona Server 5.5 和 Percona Server 5.6 发行说明可以分别在这儿和那儿找到.

MysqL必读当我们需要升级Percona服务器时,针对它的Percona-specific的一些特性,对于Percona服务器我们有额外的文档描述一些细节,可以在这儿和那儿找到.这也包括完成就地升级过程的和yum/apt的包管理器.

MysqL必读同时,在安全方面你可以升级那些使用较早描述的逻辑转储程序,MysqLdump或mydumper程序――前者并行备份和恢复和逻辑备份,升级是最安全的方法.

MysqL必读直接升级到最新版本:

MysqL必读跳过5.1版本直接把MysqL从5.0版本升级到5.5版本,或者跳过5.5版本直接从MysqL 5.1升级到5.6.甚至,可以直接从MysqL 5.0升级到MysqL 5.6虽然现在只有少数人还在使用MysqL 5.0版本. 这种同样使用于Percona Server.

MysqL必读在这里我们假设跳过5.5版本,把Oracle MysqL或者Percona Server直接从5.1版本升级到5.6版本.

MysqL必读
在开始之前,你要意识到这是一个很慎重的 *** 作,将一步跨过一个重要的MysqL版本.也就是说,这是有风险的.用二进制文件升级是不建议的,而且这样直接跨越一个重要版本也是不安全的,所以你绝不能这样5.0->5.5,5.1->5.6,或者5.0->5.6做.有一个问题是,MysqL版本不是所有改变都前向兼容的.新版本中介绍的一些改变可能不仅会影响数据如何处理,还会影响服务器行为包括SQL语句和MysqL服务器和内部存储引擎(此处不知标准否).另一个问题是MysqL5.0与5.6版本之间的变化,一些默认的设置变量被改变了,这可能会导致结果完全不一样或者行为完全不同.例如:MysqL5.5的默认存储引擎是InnoDB,MysqL5.6的存储引擎InnoDB将可以为每个数据库表创建单独表空间(separate tablespace),还有GTID复制(GTID replication)也被引入.有太多细节这里就不一一列举了,所有这些改变都被描述在MysqL的“升级文档”中,详情可以查看升级文档.

MysqL必读
这里重点提一下,极不推荐跳过一个重要版本来升级.从MysqL5.1升级到5.6不应该一步完成,我建议先从5.1升级到5.5,再从5.5升级到5.6,每步都要运行MysqL自动升级(MysqL_upgrade).这将比较有效处理手册上所说的升级改变.

MysqL必读MysqL的升级预防措施:

MysqL必读MysqL的升级预防措施是升级的一个基本部分.在你升级之前,确保你在新的MysqL版本中彻底测试了所有的应用功能.这对重要版本之间的升级尤为重要,对重要版本之间的跨越升级也很重要(例如,从MysqL5.1升级到MysqL5.6).

MysqL必读确保你认真阅读了发行说明,并且你清楚所有改变.你可以从以下链接中获取Oracle MysqL 5.5和5.6的发行说明:

MysqL必读http://dev.MysqL.com/doc/relnotes/MysqL/5.5/en/

MysqL必读http://dev.MysqL.com/doc/relnotes/MysqL/5.6/en/

MysqL必读Percona Server有单独的发行说明,按上面说的顺序可以参看以下链接:

MysqL必读http://www.percona.com/doc/percona-server/5.5/release-notes/release-notes_index.HTML
http://www.percona.com/doc/percona-server/5.6/release-notes/release-notes_index.HTML

MysqL必读如果你计划升级到 Oracle MysqL 5.6 或者 Percona Server 5.6,我建议你首先检查以下已经存在的关键BUGs.以下是你需要注意的一些BUGs:

MysqL必读http://BUGs.MysqL.com/BUG.PHP?ID=66546
http://BUGs.MysqL.com/BUG.PHP?ID=68953
http://BUGs.MysqL.com/BUG.PHP?ID=69444
http://BUGs.MysqL.com/BUG.PHP?ID=70922
http://BUGs.MysqL.com/BUG.PHP?ID=72794
http://BUGs.MysqL.com/BUG.PHP?ID=73820

MysqL必读
升级的层次结构:

MysqL必读这也是每一次MysqL升级的关键.你需要根据一个升级层次结构来做你的每次升级.建议的次序结构是:首先升级 dev/QA servers,然后升级 staging server,最后升级到 production servers上.实际上,你可以缩小升级的步伐,一步一步升级到你想要的版本,每步都可以充分地测试原来的应用.

MysqL必读一旦你对在test servers,staging servers等上运行的升级感到满意后,你就可以在你的production servers上进行升级了.在副本环境下,我建议你先升级MysqL slaves(一个接一个的)最后升级MysqL master.实际上,你可以先升级一个slaves,让它在安全环境下运行几天,同时观察仔细观察它的运行情况.如果你的服务器中没有副本环境的设置,那么还是值得建立一个副本环境来测试新版的MysqL的.一旦你对升级结果感到满意,你可以升级其他的slaves,最后升级master.

MysqL必读Percona软件包帮助你MysqL升级:

MysqL必读在MysqL升级中,Percona Toolkit 都能帮助你.Percona Toolkit 的一些工具将会起到很大的作用.

MysqL必读pt-upgrade 是其中的一个工具.它使你能测试新版MysqL实例是否能够达到像老版本处理一些特定查询的时候一样的速度.新版本可能有一些本质上的改变,因为MysqL的查询优化器从5.1到5.6已经有了重大改变,还有数据统计可能刷新,因此查询计划会改变.你可以在手册中看到更多优化器的改变.

MysqL必读pt-query-digest 是另一个能给你极大帮助的工具.你可以多次运行你的slow query log,以比较确认在现在的版本和新版本之间的表现差别.

MysqL必读你也可以从MysqL的Percona Cloud Tools中获得帮助,这是一个托管服务,可以为所有MysqL的使用提供查询性能分析.现在你可以免费注册这个服务,因为现在这项服务在进行公开测试.Percona Cloud Tools在许多同类产品中,能让你可视化的观察到每次MysqL升级后的查询表现.

MysqL必读再次重申,强烈建议你每次更新MysqL前备份数据.Percona XtraBackup就是一款免费、开源的(就像所有Percona软件一样).这是一个热备份工具,它允许你在线备份数据而不影响你对数据库的读写 *** 作,而且它备份数据时产生很小的影响. 
结论:

MysqL必读一次MysqL升级看起来是个简单的任务,但实际上并没有那么简单.我试图在这篇文章中最大限度覆盖所有有关MysqL升级中你可能遇到的情况.再次强调,我建议你在应用更新的版本之前,先测试一下你的应用在新版本中的效果.否则,可能会使你的应用崩溃,或者得到的不是提高查询效率而是降低查询效率.最后,我建议你准备一个降级计划或措施,以防你升级之后出现不可预料的错误.在问题出现的时候,有一个规划好的降级程序将会极大的减少你的应用停工期.期待你在下面发表评论和提问.

总结

以上是内存溢出为你收集整理的Mysql实例详细讲解安全升级MySQL的方法全部内容,希望文章能够帮你解决Mysql实例详细讲解安全升级MySQL的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存