Debian MariaDB故障排查技巧
日志是故障排查的核心线索来源。通过以下命令获取MariaDB相关错误信息:
sudo tail -f /var/log/syslog 或 journalctl -u mariadb -xe(实时查看MariaDB服务日志);sudo tail -f /var/log/mysql/error.log(部分Debian版本将MariaDB日志单独存放)。使用systemctl命令确认服务运行状态:
sudo systemctl status mariadb
sudo systemctl restart mariadb。MariaDB的配置文件错误(如my.cnf或50-server.cnf)可能导致服务无法启动。
mysqld --validate-config命令验证配置文件语法(需root权限);grep -i "socket\|port\|datadir" /etc/mysql/mariadb.conf.d/*.cnf查找socket文件、端口、数据目录的配置,确保客户端与服务端的路径一致(如socket文件默认路径为/run/mysqld/mysqld.sock,若客户端配置不同会导致“Can’t connect through socket”错误)。MariaDB默认使用3306端口,端口冲突或防火墙限制会导致连接失败。
sudo netstat -tulnp | grep 3306 或 ss -tulnp | grep 3306,若端口被占用,需停止冲突进程或修改MariaDB端口;telnet localhost 3306(若无法连接,可能是防火墙阻止,使用sudo ufw allow 3306开放端口)。MariaDB的数据目录(通常为/var/lib/mysql)权限错误会导致服务无法启动或数据无法访问。
sudo chown -R mysql:mysql /var/lib/mysql(确保数据目录属主为mysql用户);ib_logfile*、aria_log*),可尝试删除这些文件(删除前备份数据),然后重启服务(MariaDB会自动重建日志文件)。若需远程连接MariaDB,需检查以下配置:
/etc/mysql/mariadb.conf.d/50-server.cnf,将bind-address = 127.0.0.1改为bind-address = 0.0.0.0(允许所有IP访问);GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;,然后刷新权限:FLUSH PRIVILEGES;;性能问题可通过以下技巧排查:
top(查看CPU、内存使用)、iostat(查看磁盘I/O)、vmstat(查看内存与交换分区使用);50-server.cnf中添加slow_query_log = 1、long_query_time = 2),使用mysqldumpslow工具分析慢查询;innodb_buffer_pool_size(建议设置为物理内存的50%-80%)、key_buffer_size(MyISAM表索引缓存)等参数。