This depends a lot on the databases used and flexibility of the code that's accessing the data.
One method is to deploy in multiple stages and to use views. In pre-deploy you create a view with schema/data needed for the release. In deploy stage you roll-out the canary code. In post-deploy stage remove either the old data/schema on success or new data/schema on failure.
It's quite an overhead to implement and maintain this process.