Selecting rows from one table not in another table
How much RAM do you have?  If you have more than 4GB, set innodb_buffer_pool_size to 70% of available RAM.  This is the most important thing to tune.  With it set to only 8M, you are definitely I/O-bound.  Increasing the size will probably shrink the time to under 10 seconds.

Your second idea should be good (assuming the only new rows have higher ids), but let's get rid of the LEFT and use MAX:

SELECT  *
    FROM  table_a t1
    JOIN  
        ( SELECT  MAX(id) AS max_id
            FROM  table_a_mod ) t2
    WHERE  t1.id &gt; t2.max_id