代码之家  ›  专栏  ›  技术社区  ›  mseifert

mysqldump停止了转换为MariaDB的工作-设置gtid PUBLEED=关闭问题?

  •  2
  • mseifert  · 技术社区  · 7 年前

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

    $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 参数和备份“似乎”已起作用(我尚未验证数据,但文件现在有数据)。

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

    如果能帮我确定等效值,我将不胜感激 mysqldump 的命令 马里亚布 数据库以及导入到本地主机时要注意的事项 mysql 数据库

    谢谢

    1 回复  |  直到 7 年前
        1
  •  5
  •   elenst    7 年前

    实施 GTID-based replication in MariaDB 与MySQL完全不同,因此在诸如 mysqldump 也不兼容。 set-gtid-purged MySQL版本中的选项 mysqldump 设置一个不存在且在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 控制人: 清除设置gtid ,可以有更多)。在这种情况下,可能需要手动编辑转储。