Php mysqldump停止转换为MariaDB的工作-设置gtid清除=关闭问题?
我在一个共享服务器(webhostinghub)上,每天晚上运行一个CRON作业来备份我的mySQl InnoDB数据库。CRON作业运行一个php脚本,该脚本依次通过Php mysqldump停止转换为MariaDB的工作-设置gtid清除=关闭问题?,php,mysql,mariadb,Php,Mysql,Mariadb,我在一个共享服务器(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_datab
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
命令,以及导入我的localhostmysql
数据库时需要注意的事项,我将不胜感激
感谢的实现与MySQL完全不同,因此在mysqldump
等工具中支持它的逻辑也不兼容<在MySQL版本的mysqldump
中,code>set-gtid-purged选项设置了一个不存在且在MariaDB中没有意义的变量,因此该选项也不存在。如果您一般不使用复制,特别是不使用GTID,那么您可以从命令行中删除该选项,其余选项的工作方式应该相同。它应该对主键没有影响,如果这就是主ID的意思的话
MariaDB和MySQL在选项/语法级别上的“几乎完全兼容”适用于5.5及以下版本的发行版。从MariaDB 10.0和MySQL 5.6开始,有明显的区别
这是一本书。它可能不完整,但应该涵盖大部分内容
将MySQL服务器的转储加载到MariaDB服务器应该可以工作,除非MySQL服务器使用了MariaDB没有或以不同形式使用的某些语法或功能。将MySQL版本的
mysqldump
生成的转储加载到MariaDB服务器可能会导致问题,例如,如果它设置了MariaDB没有的变量(例如@@global.gtid\u pulled
由控制的设置gtid pulled
,可能会有更多)。在这种情况下,可能需要手动编辑转储。@Mike-感谢您提供文档链接。这有助于清楚地表明,这是一个我并不真正需要的选项,因为我没有复制。我可能(几年前)在一个SO示例中使用了这个开关。由于我不完全理解基于GTID的复制。感谢您验证不兼容性并解释为什么我不需要它。(是的,我指的是主键)。我添加了一个指向已知不兼容列表的链接,以供参考。在很大程度上,它是基于社区的投入进行维护的,我们非常感谢添加内容。