数据库高可用与灾备方案从设计到实现一、数据库高可用的核心概念1.1 高可用的定义与重要性数据库高可用性是指数据库系统在面对各种故障和挑战时能够持续提供服务的能力。高可用对于企业级应用至关重要业务连续性确保核心业务系统持续运行数据安全防止数据丢失和损坏用户体验避免服务中断影响用户合规要求满足行业法规对系统可用性的要求业务价值减少停机带来的经济损失1.2 高可用指标指标定义计算公式目标值可用性系统正常运行时间占总时间的比例(总时间 - 停机时间) / 总时间99.99% (4个9)RTO (恢复时间目标)故障后恢复服务的目标时间- 15分钟RPO (恢复点目标)故障后允许丢失的数据量- 10秒MTBF (平均故障间隔时间)两次故障之间的平均时间总运行时间 / 故障次数 10000小时MTTR (平均修复时间)从故障到恢复的平均时间总修复时间 / 故障次数 30分钟二、数据库高可用架构设计2.1 主从复制架构主从复制是最基础的高可用架构通过数据同步实现故障转移-- MySQL主从复制配置 -- 主库配置 (my.cnf) [mysqld] server-id 1 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW -- 从库配置 (my.cnf) [mysqld] server-id 2 relay_log /var/log/mysql/relay-bin.log read_only 1 -- 在主库上创建复制用户 CREATE USER repl% IDENTIFIED BY password; GRANT REPLICATION SLAVE ON *.* TO repl%; -- 在主库上查看二进制日志位置 SHOW MASTER STATUS; -- 在从库上配置复制 CHANGE MASTER TO MASTER_HOSTmaster_host, MASTER_USERrepl, MASTER_PASSWORDpassword, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS107; -- 启动复制 START SLAVE; -- 查看复制状态 SHOW SLAVE STATUS\G;2.2 主主复制架构主主复制提供了更高的可用性两个节点都可以处理写操作-- 主主复制配置 -- 节点1配置 [mysqld] server-id 1 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW auto_increment_offset 1 auto_increment_increment 2 -- 节点2配置 [mysqld] server-id 2 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW auto_increment_offset 2 auto_increment_increment 2 -- 互相配置复制 -- 在节点2上执行 CHANGE MASTER TO MASTER_HOSTnode1_host, MASTER_USERrepl, MASTER_PASSWORDpassword, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS107; -- 在节点1上执行 CHANGE MASTER TO MASTER_HOSTnode2_host, MASTER_USERrepl, MASTER_PASSWORDpassword, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS107; -- 启动复制 START SLAVE;2.3 集群架构