MySQL/MariaDB已被锁表运行中热复制为副本/innodb表错误Table xx doesn’t exist in engine处理
从数据表热复制说起。
在执行特别慢的语句时,mysql经常会锁表。这时如果想并行执行另一个语句,但表被锁而该语句只能排队。这种情况下,希望能将被锁的表复制个副本,就可以“假”并行执行;然而杀死前语句又太可惜。所以,运行中热复制的技巧(奇技淫巧)还是有用的。
对于MyISAM表,直接复制三个文件到另一数据库中,即时生效,很方便。为了稳妥起见,最好先检查表看是否有异常;有时会因为写入而提醒表损坏,repair table 修复一下就好。
但对于InnoDB表,就要复杂一些。首先,
step-0) 确保已通过MySQL服务的匹配文件,启用单文件选项 innodb_file_p[……]