Thank you for those clarifications.
About using Cloud Pub/Sub with App Engine, there would only be a single push subscription endpoint per service of your application, not one per instance. That is because unless you are using manually scaled instances in the standard environment, you cannot define an endpoint that would target a specific instance. This means that sequential Pub/Sub messages sent to a service with several instances but one single push endpoint could be received by different instances of the same service which would render them unable to properly keep track of the full sequence.
To alleviate this issue you might want to have a single instance from a dedicated service receive and process the messages in sequence to update the micro service's database. This should not be an issue unless you intend for every single instance to hold a local copy of the data.
If you do opt to replicate the database’s state using messages and the order of the messages matters then Task Queues would be limited to running one task at a time as there is no mechanism for ensuring concurrent tasks are executed in a certain order. This being said if you simply intend for the message to kick off a synchronization job between two databases then it could work just fine.
If it’s suitable to the type of data your new service needs to access you might also want to simply replicate the data Cloud Datastore from the same source that would update Cloud SQL. You could make use of transactions to make sure that you only commit changes to Datastore if they also went through on Cloud SQL. This would be equivalent to your “caching the data” solution.