我正在从 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) 我在 Amazon EC2 上配置了一个新的 MySQL 服务器,并决定将我的数据存储在 EBS RAID0 阵列上。到目前为止一切顺利,我已经测试了使用 ec2-consistent-snapshot 拍摄这些设备的快照,很棒。
现在,您如何根据这些快照在新实例上快速重建阵列?
当您使用 ec2-consistent-snapshot 创建多个卷的快照时,您无法知道 RAID 中的每个设备使用了哪个卷。我可能完全错了,但是由于您要跨卷对数据进行条带化,因此您必须将每个新卷放在 RAID 上与创建快照的卷相同的位置是合理的。
一个例子:
您创建一个EC2的快照:ec2-consistent-snapshot <options> vol-1 vol-2 vol-3
。
您现在有 3 个快照,追溯它们是哪个设备的唯一方法是查看源卷 id,然后查看源卷 id 安装在哪个设备上,然后检查 RAID 的详细信息源卷的实例上的配置。
这显然是令人难以置信的手动......而且速度不快(如果另一个实例失败,这显然很难快速启动一个新的mysql实例。更不用说,你必须在RAID上记录设备位置快照,因为如果源卷实例崩溃,您将无法进入 RAID 配置)。
所以,总结一下:
我希望这很清楚,感谢您的帮助!
tl; dr:复制在特定的二进制日志和位置上停滞,我不知道为什么
我有 MySQL 5.5 的 MySQL 复制设置。
这种复制设置没有落后的历史,而且一直很可靠。
今天早上,我注意到奴隶比主人晚了 17 个小时。
做更多的研究,它看起来是 SQL_Thread 的问题。
根据从站(via SLAVE STATUS
),当前的主日志文件是mysql-bin.001306
@position 20520499
。这与MASTER STATUS
master的输出一致。
但是,SLAVE STATUS
显示Relay_Master_Log_File
当前mysql-bin.001302
具有Exec_Master_Log_Pos
的36573336
。今天早上我一直在监视它们时,Relay_Master_Log_File
也Exec_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) 我只是花了几个小时构建一个新的数据库服务器来替换mysqldump
一个月前创建的文件中的2 个失败的服务器,然后使用我的服务器的 bin-logs 将其mysqldump
更新。现在我有这个新的数据库服务器在线,并且已经运行了几天,我需要完成服务器设置并重新实施备份策略。
我需要将(至少)一个 MySQL Replication Slave 联机以供新服务器使用,并开始创建可用备份以备再次失败时使用。
在我进一步行动之前:
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