Exception in Saga compensation and multiple retries even though retry count is 1

I didn’t understand how to restart workflow? By downloading history and using it with worker?

You can terminate the previous run and start it again.
Another option is to use tctl (cli) to reset the workflow to its first workflow task.
You can also use ResetWorkflowExecutionRequest as shown in this forum post to reset to a particular event id.

I assume there is a way to download history in JSON format from web UI and can be replayed using worker.replayHistory(…).

Yes, use tctl, for example:

tctl wf show -w <workflow_id> -r <run_id> --output_filename myhistory.json

(note you should use java sdk 1.4.0 or greater in order for the tctl json output to be replayable with WorkflowReplayer)