Создайте отдельную таблицу (SYNC): [TIMESTAMP], [UPDATED_ID]
Каждый раз, когда добавляете или изменяете значение в основной базе данных, добавляйте новую запись в SYNC-таблицу.
UPDATED_ID - это id изменённой/добавленной записи в основной базе.
TIMESTAMP - текущее серверное время.
SYNC-базу можно сделать на Redis или аналогичном in-memory хранилище, а не только на SQL.
На клиенте (в приложении) храните время последней синхронизации с сервером (просто long).
лучше, чтобы сервер сам формировал timestamp (текущее серверное время) и отдавал клиенту
Когда клиенту потребуется синхронизироваться, отправляете эту временную метку серверу. На сервере из SYNC таблицы вытаскиваете id всех новых и обновлённых записей после полученной от клиента timestamp. Убираете дубли (они могут быть для обновлённых записей). Осталось только по этим id прочитать данные из основной базы и отправить их клиенту.
Плюсы по сравнению с тем, что уже предложено
- не трогаете свою базу, не вставляете новые колонки
- в приложении просто храните временную метку последней синхронизации
- в приложении для синхронизации не требуется предварительно вычитать и обработать всю локальную базу
PS. и как уже сказали, вы пишите аналог Firebase realtime database. Она делает ровно тоже самое. Можно попробовать поискать как реализовано там.