面试题答案
一键面试网络方面
- 思路:
- 检查网络连通性,确保主从节点之间网络稳定,无丢包或高延迟。
- 确认网络带宽是否足够,避免因带宽不足导致数据传输缓慢。
- 工具及命令:
ping
:用于检查节点之间的网络连通性和延迟。例如ping <目标IP>
,通过观察丢包率和平均延迟判断网络状态。traceroute
:可以查看数据包从源到目标所经过的路由,找出可能存在问题的节点。例如traceroute <目标IP>
。iperf
:测量网络带宽。在源节点启动服务端iperf -s
,在目标节点启动客户端iperf -c <源IP>
,可获取带宽数据。
系统资源方面
- 思路:
- 查看CPU使用率,过高的CPU负载可能导致复制线程处理缓慢。
- 检查内存使用情况,确保有足够内存供数据库运行,避免频繁的磁盘交换。
- 查看磁盘I/O情况,若磁盘读写过慢,会影响数据持久化和复制。
- 工具及命令:
- CPU:
top
:实时显示系统资源使用情况,重点关注%CPU
列,查看哪些进程占用大量CPU资源。htop
:比top
更直观的进程查看工具,可方便查看各线程CPU占用。
- 内存:
free -h
:查看系统内存使用情况,包括已用、空闲和缓存内存。关注free
和buff/cache
字段,判断内存是否紧张。vmstat
:可以显示虚拟内存、进程、CPU等的统计信息,通过观察si
(从磁盘交换到内存的数据量)和so
(从内存交换到磁盘的数据量)判断是否存在内存交换。
- 磁盘I/O:
iostat -x
:查看磁盘I/O统计信息,包括每秒读写次数(r/s
,w/s
)、每秒读写数据量(rkB/s
,wkB/s
)、磁盘使用率(%util
)等。iotop
:实时显示每个进程的磁盘I/O使用情况,便于找出I/O占用高的进程。
- CPU:
数据库配置方面
- 思路:
- 调整复制相关参数,如增加复制线程数。
- 检查日志相关配置,确保日志写入和传输效率。
- 优化数据库查询性能,避免长事务等影响复制。
- 工具及命令:
- 复制参数:
- 登录MariaDB,使用
SHOW VARIABLES LIKE '%slave_parallel%';
查看当前复制线程相关参数,可考虑增加slave_parallel_workers
参数值,以并行处理复制任务,但需根据服务器性能合理调整。修改配置文件(如/etc/my.cnf
)后重启MariaDB服务使参数生效。
- 登录MariaDB,使用
- 日志配置:
SHOW VARIABLES LIKE '%log_bin%';
查看二进制日志相关配置,合理设置binlog_cache_size
等参数,避免日志缓存过小导致频繁写入磁盘。修改配置文件并重启服务。SHOW STATUS LIKE 'Binlog_cache_disk_use';
查看使用磁盘缓存的二进制日志次数,若该值较高,可能需增大binlog_cache_size
。
- 查询优化:
- 使用
SHOW FULL PROCESSLIST;
查看当前数据库中正在执行的查询,找出长事务或慢查询。 - 对慢查询使用
EXPLAIN
关键字分析查询执行计划,优化SQL语句,如添加合适的索引等。例如EXPLAIN SELECT * FROM your_table WHERE some_column = 'value';
- 使用
- 复制参数:
其他方面
- 思路:
- 检查主库负载,主库压力过大也可能导致从库复制延迟。
- 查看从库复制状态,确认是否存在复制错误。
- 工具及命令:
- 主库负载:使用与系统资源检查相同的工具(如
top
,iostat
等)查看主库服务器资源使用情况。 - 从库复制状态:在从库MariaDB中执行
SHOW SLAVE STATUS \G;
,重点关注Seconds_Behind_Master
字段,该值表示从库落后主库的秒数。若存在错误,查看Last_Error
字段获取具体错误信息进行排查。
- 主库负载:使用与系统资源检查相同的工具(如