几个月前将mysql升级到5.7表单后,我忘记了mysql_upgrade
。
面临一些问题.. mysql
,sys
,performance_schema
数据库丢失,root权限被破坏。当我尝试做一些mysql用户权限时,会弹出很多Access denied for user 'root'...
个消息。
This stack answer必须解决我的问题。但我需要知道它不会影响任何模式,数据......等等。
因为我的数据库非常庞大。它相当于10 GB,包含大约50个表。我担心会发生一些不好的事情。我知道答案是mysqldump
。
但完整备份将花费很长时间,也许一个小时。而且企业不会接受这种停机时间。
那么mysql_upgrade
没有mysqldump
的风险是什么?
答案 0 :(得分:2)
在没有备份的情况下对数据库进行任何管理的风险是不可接受的......不是因为MySQL 本身的任何限制,而是因为我们正在谈论关于对您的业务至关重要的事情您应该支持它的频率不低于您愿意丢失的数据的时间间隔。
如果您正在使用InnoDB,那么使用--single-transaction
的{{1}}选项,并且应该没有锁定,因为MVCC处理一致性。如果您不使用InnoDB,这本身就是一个问题,但使用mysqldump
应该最大限度地减少锁定。
请注意,应该非常安全如果您发现它正在导致问题,请终止正在进行的--skip-lock-tables
- 使用mysqldump
查找转储的线程ID然后SHOW PROCESSLIST;
其中KILL QUERY #;
是进程列表中转储连接的ID。
您引用的答案的潜在问题是5.1> 5.5是受支持的升级路径,因为这两个版本是顺序的。 5.5> 5.7不是。您应该已经升级到5.6然后5.7,在每个步骤之前和之后运行 #
的{{1>} <适当的版本(适当的意思是与在运行的服务器版本匹配的实用程序的版本)力矩)。
你可能处于比你想象的更微妙的境地......或者你可能没有。
鉴于类似情况,我不想做任何事情,只需完全停止服务器,通过将所有文件复制到新机器来克隆它,并针对克隆测试修复步骤。
如果此系统对业务至关重要,则应该有一个实时运行的副本服务器,可以在发生故障时将其提升为主服务器并永久替换此计算机。在这种情况下,您可以将修复程序应用于副本并进行升级。
mysql_upgrade
可能与模式不兼容有关,也可能没有。