You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB Slave集群恢复导入dump遇COMMIT权限错误求助

解决MariaDB Slave导入dump时COMMIT报错1180的问题

可能原因及对应解决方法

1. 文件系统权限问题

  • 检查Slave服务器上/mnt/sqlbackup/目录及dump文件的权限,确保MariaDB进程用户(通常是mysql)有读写权限:
    chown -R mysql:mysql /mnt/sqlbackup/
    chmod -R 750 /mnt/sqlbackup/
    
  • 若使用tmpfs或特殊挂载分区,确认分区未设置noexec/nosuid等限制,必要时重新挂载:
    mount -o remount,rw,exec /mnt/sqlbackup
    

2. 表级权限或特殊属性问题

  • 单独导出出错的d_xxxx_yyy表,拆分导入流程:
    1. 从Master单独导出该表:
      mysqldump --single-transaction --master-data=2 d_xxxx_db d_xxxx_yyy > /mnt/sqlbackup/table_dump.sql
      
    2. 在Slave上先导入全量dump(跳过该表):
      mysql -u root -p --ignore-table=d_xxxx_db.d_xxxx_yyy < /mnt/sqlbackup/mysqldump.sql
      
    3. 再导入单独导出的表文件:
      mysql -u root -p d_xxxx_db < /mnt/sqlbackup/table_dump.sql
      

3. 存储引擎或事务配置问题

  • 若d_xxxx_yyy表为MyISAM(不支持事务),修改导出命令重新导出该表后导入:
    mysqldump --lock-tables --master-data=2 d_xxxx_db d_xxxx_yyy > /mnt/sqlbackup/table_dump_myisam.sql
    
  • 临时关闭Slave的InnoDB严格模式,导入后恢复:
    SET GLOBAL innodb_strict_mode = OFF;
    -- 执行dump导入操作
    SET GLOBAL innodb_strict_mode = ON;
    

4. SELinux/AppArmor限制

  • 若开启SELinux,调整备份目录的安全上下文:
    chcon -t mysqld_db_t /mnt/sqlbackup/
    
  • 若使用AppArmor,编辑/etc/apparmor.d/usr.sbin.mysqld,添加/mnt/sqlbackup/** rw,后重启服务:
    systemctl restart apparmor
    

内容的提问来源于stack exchange,提问作者Skuld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:42:04