面试题答案
一键面试RDB在脚本复制过程中的作用
- 数据快照:RDB持久化会定期创建整个数据集的快照。在脚本复制时,当从节点初次连接主节点进行全量复制,主节点发送的RDB文件可作为从节点数据初始化的基础。这确保了从节点在开始复制时能快速拥有与主节点某一时刻相同的数据状态,为后续基于AOF重放增量数据打下基础,保障了脚本在从节点执行环境的数据一致性前提。
- 恢复速度:由于RDB是一个紧凑的二进制文件,从节点加载RDB文件恢复数据相对快速,对于脚本复制来说,能尽快让从节点进入可执行脚本的状态,减少因长时间恢复数据而导致的复制延迟,从而提升脚本复制的稳定性。
AOF在脚本复制过程中的作用
- 增量记录:AOF持久化以日志形式记录每次写操作。在脚本复制过程中,主节点执行脚本产生的写命令会同步记录到AOF日志,然后通过复制链路发送给从节点。从节点重放这些AOF日志来保持与主节点的数据一致性,确保脚本在主从节点执行结果相同,这对于脚本复制中持续保持数据状态一致至关重要。
- 数据完整性:相比RDB可能因快照间隔丢失部分数据,AOF通过不断追加写操作日志,能更完整地记录脚本执行所带来的数据变化,即使发生故障,也可通过重放AOF日志恢复到故障前尽可能近的状态,保障了脚本复制过程中数据的完整性和一致性,进而提升稳定性。
配置建议以保障稳定性
- RDB配置
- 快照频率:合理设置
save
参数,避免过于频繁或过于稀疏的快照。例如,save 900 1
表示900秒内如果有1次写操作就进行快照,可根据实际业务写操作频率进行调整。过于频繁的快照会增加I/O负担,影响主节点性能进而影响脚本复制;过于稀疏则可能导致从节点全量复制时数据差距较大。 - 文件保存路径:确保
dir
参数指定的路径有足够的磁盘空间,避免因磁盘空间不足导致RDB文件生成失败,影响从节点全量复制初始化。 - RDB文件压缩:开启
rdbcompression yes
,在不影响性能的前提下,压缩RDB文件大小,减少主从节点之间传输数据量,提升全量复制速度,保障脚本复制稳定性。
- 快照频率:合理设置
- AOF配置
- 同步策略:
appendfsync
参数可设置为everysec
,表示每秒将AOF缓冲区数据同步到磁盘。这种策略在性能和数据安全性之间取得平衡,既不会因频繁同步影响性能,又能在故障时只丢失1秒的数据,保证脚本执行日志的完整性,从而保障脚本复制稳定性。若设置为always
,虽然数据安全性最高,但频繁I/O可能影响主节点性能;设置为no
,则数据安全性最差。 - AOF重写:合理设置
auto - aof - rewrite - min - size
和auto - aof - rewrite - percentage
参数。例如,auto - aof - rewrite - min - size 64mb
表示AOF文件大小超过64MB时可能触发重写,auto - aof - rewrite - percentage 100
表示当前AOF文件大小比上次重写后增长100%时触发重写。通过重写可压缩AOF文件,减少文件体积,加快从节点重放速度,保障脚本复制的稳定性。同时,可在业务低峰期手动执行BGREWRITEAOF
命令进行重写,避免影响正常业务和脚本复制。
- 同步策略: