gpt4 book ai didi

php - mysqldump 停止转换为 MariaDB - set-gtid-purged=OFF 问题?

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:15 26 4
gpt4 key购买 nike

我在共享服务器 (webhostinghub) 上运行每晚 CRON 作业来备份我的 mySQl InnoDB 数据库。 CRON 作业运行一个 php 脚本,该脚本又通过 passthrough() 发出一个 mysqldump 命令,如下所示;

$return = -1;
$command = "mysqldump -h localhost -u server_user -ppassword --add-drop-table --quick --set-gtid-purged=OFF server_database > ./backup/backup-2018-02-19.sql";

passthrough($command, $return); // note: I just added the $return parameter to see what it is returning which is `7` => non zero tells me there is some error but there is no further info I can find.

该脚本多年来一直没有出错,最近开始创建零字节文件。

我从 phpMyAdmin 注意到:

Server type: MariaDB
Server version: 10.2.11-MariaDB-log - MariaDB Server
Protocol version: 10

我不记得在 MariaDB 上,很明显我的提供商在没有提及的情况下将我转过来(感谢 webhostinghub),这就是问题所在。我知道它们应该是 99% 兼容的,但这是 1% 吗?

我删除了 --set-gtid-purged=OFF 参数,备份“似乎”有效(我没有验证数据,但文件现在有数据)。

我不记得为什么我添加了 --set-gtid-purged=OFF 参数,它的作用对我来说并不完全清楚。我知道它用于全局事务标识符 (GTID),但不确定我是否使用这些。我不“复制”,但希望我的导出和导入保留唯一的主 ID。我导入到本地主机上的 mysql 数据库中。

如果能帮助我确定 MariaDB 数据库的等效 mysqldump 命令,以及导入本地主机 mysql 时需要注意什么,我将不胜感激> 数据库

谢谢

最佳答案

实现GTID-based replication in MariaDB与MySQL完全不同,所以mysqldump等工具支持它的逻辑也不兼容。 MySQL 版本的 mysqldump 中的 set-gtid-purged 选项设置了一个不存在且在 MariaDB 中没有意义的变量,因此该选项也不存在。如果你一般不使用复制,特别是 GTID,你可以从命令行中删除该选项,其余的应该相同。它应该对主键没有影响,如果这就是主 ID 的意思。

MariaDB 和 MySQL 之间选项/语法级别的“几乎完全兼容”适用于 5.5 及之前的版本。从 MariaDB 10.0 和 MySQL 5.6 开始,存在明显差异。

这是一个list of known incompatibilities between MariaDB and MySQL .可能不完整,但应该涵盖了大部分内容。

将 MySQL 服务器的转储加载到 MariaDB 服务器应该可行,除非 MySQL 服务器使用 MariaDB 没有或以不同形式具有的某些语法或功能。将由 MySQL 版本的 mysqldump 生成的转储加载到 MariaDB 服务器中可能会导致问题,例如,如果它设置了 MariaDB 没有的变量(例如 @@global.gtid_purged 控制通过 set-gtid-purged,可以有更多)。在这种情况下,可能需要手动编辑转储。

关于php - mysqldump 停止转换为 MariaDB - set-gtid-purged=OFF 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com