Fault-tolerance is an essential aspect of network resilience. Fault-tolerance mechanisms are required to ensure high availability and high reliability in systems. The advent of software-defined networking (SDN) has both presented new challenges and opened new paths to develop novel strategies, architectures, and standards to support fault-tolerance. In this survey, we address SDN fault-tolerance and discuss the OpenFlow fault-tolerance support for failure recovery. We highlight the mechanism used for failure recovery in Carrier-grade networks that includes detection and recovery phases. Furthermore, we highlight SDN-specific fault-tolerance issues and provide a comprehensive overview of the state-of-the-art SDN fault-tolerance research efforts. We then discuss and structure SDN fault-tolerance research according to three distinct SDN planes (i.e., data, control, and application). Finally, we conclude enumerating future research directions for SDN fault-tolerance development.