小编Jim*_*ein的帖子

`mysql_upgrade` 失败,没有给出真正的原因

我正在从 MySQL 5.1 升级到 5.5,运行mysql_upgrade并获得以下输出:

# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
Run Code Online (Sandbox Code Playgroud)

关于在哪里寻找正在发生的事情(或没有发生?)的任何想法,以便我可以修复任何错误并实际运行mysql_upgrade

谢谢!

更多输出:

# mysql_upgrade --verbose
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-check --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed …
Run Code Online (Sandbox Code Playgroud)

mysql mysql5.5

72
推荐指数
6
解决办法
13万
查看次数

从使用 ec2-consistent-snapshot 拍摄的快照恢复 Amazon EBS RAID0 阵列

我在 Amazon EC2 上配置了一个新的 MySQL 服务器,并决定将我的数据存储在 EBS RAID0 阵列上。到目前为止一切顺利,我已经测试了使用 ec2-consistent-snapshot 拍摄这些设备的快照,很棒。

现在,您如何根据这些快照在新实例上快速重建阵列?

当您使用 ec2-consistent-snapshot 创建多个卷的快照时,您无法知道 RAID 中的每个设备使用了哪个卷。我可能完全错了,但是由于您要跨卷对数据进行条带化,因此您必须将每个新卷放在 RAID 上与创建快照的卷相同的位置是合理的。

一个例子:

  • RAID0 配置中的 3x200gb 卷。
  • vol-1 是 RAID 中的 /dev/sdh 设备 0
  • vol-2 是 RAID 中的 /dev/sdh1 设备 1
  • vol-3 是 RAID 中的 /dev/sdh2 设备 2

您创建一个EC2的快照:ec2-consistent-snapshot <options> vol-1 vol-2 vol-3

您现在有 3 个快照,追溯它们是哪个设备的唯一方法是查看源卷 id,然后查看源卷 id 安装在哪个设备上,然后检查 RAID 的详细信息源卷的实例上的配置。

这显然是令人难以置信的手动......而且速度不快(如果另一个实例失败,这显然很难快速启动一个新的mysql实例。更不用说,你必须在RAID上记录设备位置快照,因为如果源卷实例崩溃,您将无法进入 RAID 配置)。

所以,总结一下:

  • 我是否遗漏了 ec2-consistent-snapshot 和软件 RAID0 阵列的工作方式?
  • 如果没有,是否有任何已知的解决方案/最佳实践来解决不知道快照属于 RAID 阵列中哪个设备/位置的问题?

我希望这很清楚,感谢您的帮助!

mysql raid amazon-ec2 amazon-ebs

8
推荐指数
1
解决办法
3056
查看次数

MySQL Slave 停留在单个 bin log + bin log 位置超过 17 小时

tl; dr:复制在特定的二进制日志和位置上停滞,我不知道为什么


我有 MySQL 5.5 的 MySQL 复制设置。

这种复制设置没有落后的历史,而且一直很可靠。

今天早上,我注意到奴隶比主人晚了 17 个小时。

做更多的研究,它看起来是 SQL_Thread 的问题。

根据从站(via SLAVE STATUS),当前的主日志文件是mysql-bin.001306@position 20520499。这与MASTER STATUSmaster的输出一致。

但是,SLAVE STATUS显示Relay_Master_Log_File当前mysql-bin.001302具有Exec_Master_Log_Pos36573336。今天早上我一直在监视它们时,Relay_Master_Log_FileExec_Master_Log_Pos完全没有进展。

查看 master 上的二进制日志,这是位于以下位置的语句mysql-bin.001302@3657336

# at 36573053
#170221 14:33:48 server id 1  end_log_pos 36573130      Query   thread_id=96205677      exec_time=0     error_code=0
SET TIMESTAMP=1487716428/*!*/;
BEGIN
/*!*/;
# at 36573130
# at 36573213
#170221 14:33:48 server id 1  end_log_pos 36573213      Table_map: `database-name`.`table-name` …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-replication mysql5.5

7
推荐指数
1
解决办法
3423
查看次数

使用 InnoDB 和 MyISAM 表创建*一致* *在线* MySQL 备份

我只是花了几个小时构建一个新的数据库服务器来替换mysqldump一个月前创建的文件中的2 个失败的服务器,然后使用我的服务器的 bin-logs 将其mysqldump更新。现在我有这个新的数据库服务器在线,并且已经运行了几天,我需要完成服务器设置并重新实施备份策略。

我需要将(至少)一个 MySQL Replication Slave 联机以供新服务器使用,并开始创建可用备份以备再次失败时使用。

在我进一步行动之前:

  • 在导入旧的逻辑备份并执行旧的 bin 日志之前,我忘记 (eep) 在新的 MySQL 服务器上启用 bin-log(我猜这归咎于当时醒着 24 小时)。

  • 我的数据由几个数据库组成,所有数据库都混合了 MyISAM 表和 InnoDB 表。

  • 此外,与在新服务器上启用 bin 日志相同,我忘记在导入所有数据之前打开该innodb-file-per-table选项my.cnf。二进制日志现在在新的 MySQL 服务器上启用,但 inno file per table 选项几乎是一个非修复,直到我可以导入另一个逻辑备份(我可能最终会启动第二个从站,并提升第一个从站掌握并放弃当前的主人 - 因为配置不是我需要的地方)。

所以,问题是:
我需要备份 MySQL 服务器,但我不能让新的 MySQL 服务器脱机。我需要继续进行写入,并在几乎没有停机时间的情况下提供读取服务。这种“几乎没有停机时间”的要求被定义为少于 10 分钟。我的数据目前在服务器上使用了大约 100GB 的空间(mysql 数据文件),逻辑备份大约是 50GB(这是很多索引......哈哈)。我不关心这个备份是合乎逻辑的,还是从 MySQL 数据目录中复制一份数据文件。在线后,我可以从从属设备创建逻辑备份。

而且,问题是:
您将如何创建这个所需的备份?我知道这并不容易,很多人会说这是不可能的。但我拒绝相信这是不可能的,必须有办法完成它。

关于服务器的说明:它运行的是 Ubuntu 10.04、MySQL 5.1.41,并且存储数据的文件系统是 ext3。服务器在 Rackspace Cloud 上运行,所以文件系统几乎“就是它本来的样子”,除非我可以重新分区根设备并使用另一个 FS(可能是 XFS?)重新分区来做快照。

我读过Perconas XtraBackup Tool,但它只适用于 InnoDB 表。他们有一个 MyISAM …

mysql backup mysql-replication incremental-backup database-backup

6
推荐指数
1
解决办法
2267
查看次数