Data Recovery After Node goes down?

Say I want to build a ceramic data explorer(data indexer) for my app. I could access the live update of data throughout my application by subscribing to the relevant libp2p topics.

But what if my subscribing node goes down and recover? Is there a way for me to read historical messages before continuing to listening to the new updates? How does ceramic node itself handle down time and recovery? How to scale my node if the app got some traction?

Not at the moment but this is something we are currently working on and planning to release for the coming ComposeDB beta.
Nodes will have the ability to index streams based on the anchor contract, so having a global visibility of streams present on the network.
The upcoming hard fork of Ceramic is necessary to support this feature, see HistorySync Hard Fork: Upgrade Your Node by Feb 15 for more information.