Determining whether a MySQL column is ever used
Mind the Gap

Let me give you a third option if the ids have a lot of gaps...

One significant cause of "running out of id values" is queries that leave gaps in AUTO_INCREMENT values.  An INSERT statements where row is not inserted first allocates an auto-inc value, then fails to use it.  INSERT IGNORE will do this silently.

Sometimes a useful workaround is to change the code such that it does not do the INSERT if it is not going to succeed.  Normalization is perhaps a normal case for this.  Here is a technique for batch normalization that avoids the problem.

(OK, this suggestion is not useful if you can't get to the source code.  But it could be useful to other readers; it has saved me a few times.)

General log

By turning on the "general log" for a period of time, you can collect all queries.  Then you can search for the table or "id", etc.  It will be tedious.  It will not be 100% safe, since some queries may not have been executed during that time.

innodb_autoinc_lock_mode

innodb_autoinc_lock_mode did not exist until 5.5, so that is not an option.

(Again, I mention this for other readers.)