Problema con el autoincrement en MySql

Bueno, el problema que voy a explicar es bastante complejo, pero a su vez una sutileza que puede amargarnos el día.
Todo comienza cuando nuestro servidor cae y en medio de una serie de procesos se tiene que reiniciar, intentando no perder datos, hasta aquí todo bien, pero en nuestro sistema tenemos programadas dos tablas que trabajan juntas, una de ellas contiene la información real y la otra es una copia pero con información de modificaciones de la primera, esto significa que si la primera tabla tiene un registro modificado este se pasará a la segunda tabla, con identificador de autoincrement de la primera tabla. Siendo que la aplicación es un portal de reservas y en ningún caso puede haber códigos de reservas duplicados, nos encontramos un problema al ver que cada vez que se cae el servidor nos encontramos en algunas ocasiones 2 reservas con el mismo identificador, en diferentes tablas. Es decir, si la primera tabla tiene un indice con valor 100, y se hace una modificación de su último valor, este ultimo registro pasara a la segunda tabla con el id 100, pero a todo esto el siguiente identificador lógico de la primera tabla sería el 101, ósea que la primera tabla tendría el id 99 y el nuevo 101, el 100 pasaría a la segunda tabla. Todo esto funciona muy bien, excepto cuando en medio de una modificación se cae el servidor, al hacer un mysql_start(); la tabla olvida el último valor de autoincrement por lo que el siguiente valor a agregar será el 100, coincidiendo con el valor de la tabla de histórico, duplicado el identificador.
La primera solución que se pensó fue crear un trigger en la BD, para que cada vez que se quisiese insertar un registro en la primera tabla (datos reales), se mirar el último indice de la segunda tabla (histórico), y de esta manera, si el valor de la segunda tabla fuese mayor se aumentaría el id en la primera, evitando la coincidencia de ids. Hacer esto es posible pero no da resultados para nuestro caso, en el que al hacer el insert de una reserva necesitamos el id de la reserva recién insertada, y mysql interpreta todo lo que esta dentro del trigger como independiente y por algún motivo olvida el ultimo id de la tabla.

De momento existen en vista dos soluciones a esto, la primera es elegante, y la segunda menos ortodoxa, pero con menos mantenimiento. La primera consiste en aplicar un trigger al inicio de mysql, justo después de la llamada a mysql_start();, desde aquí se incrementará el indice de la tabla antes de hacer cualquier insert, pudiendo acceder al id del registro insertado e n su momento.
La segunda opción es agregar un función genérica que haga el insert a la tabla teniendo en cuenta la revisión de la segunda tabla, antes de insertar la reserva, pero esto conlleva muchos otras cosas…