Gaining Wisdom from Setbacks: Aligning Large Language Models via Mistake Analysis