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表,拆分导入流程:- 从Master单独导出该表:
mysqldump --single-transaction --master-data=2 d_xxxx_db d_xxxx_yyy > /mnt/sqlbackup/table_dump.sql - 在Slave上先导入全量dump(跳过该表):
mysql -u root -p --ignore-table=d_xxxx_db.d_xxxx_yyy < /mnt/sqlbackup/mysqldump.sql - 再导入单独导出的表文件:
mysql -u root -p d_xxxx_db < /mnt/sqlbackup/table_dump.sql
- 从Master单独导出该表:
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
相关产品推荐
相关产品推荐

