Debian 上 MariaDB 故障排查步骤
一 快速定位故障
sudo systemctl status mariadb 或 sudo service mariadb statussudo journalctl -u mariadb -xe 查看本次启动的详细错误与上下文/var/log/mariadb/error.log、/var/log/mysql/error.loggrep -n log_error /etc/mysql/*.cnf /etc/my.cnfsudo tail -n50 /var/log/mariadb/error.logsudo grep -i "failed\|error\|access denied" /var/log/mariadb/error.logsudo mysqld --verbose --help(检查配置语法)sudo mysqld_safe --datadir=/var/lib/mysql(前台运行,观察实时报错)二 常见故障与修复
sudo mysqld --verbose --help 或 sudo mariadb-check-syntax(若可用)sudo mkdir -p /var/log/mysql /var/run/mysqld && sudo chown -R mysql:mysql /var/log/mysql /var/run/mysqldss -tulnp | grep 3306 或 netstat -tulnp | grep 3306/etc/mysql/mariadb.conf.d/50-server.cnf 中修改 port,然后重启sudo chown -R mysql:mysql /var/lib/mysql/etc/apparmor.d/usr.sbin.mysqld 是否放行相关路径df -hmysqld --tc-heuristic-recover=ROLLBACK 启动以回滚未完成事务,再正常重启myisamchk -c -r /var/lib/mysql/mysql/proc.MYIapt download mariadb-server-<version>dpkg-deb --extract mariadb-server-<version>.deb /tmp/mariadbsudo cp /tmp/mariadb/etc/mysql/debian-start /etc/mysql/sudo systemctl start mariadbERROR 2002 (HY000): Can’t connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)systemctl status mariadb),若仍失败,检查 /var/run/mysqld 目录权限与存在性,再查看错误日志定位具体原因三 登录与权限问题
systemctl status mariadbsudo mysql -u root -p -h localhost--skip-grant-tables 启动后修改)SHOW DATABASES;SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='mysql';sudo mysql_upgrade,然后重启:sudo systemctl restart mariadbsudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止远程 root 登录、删除测试库等)四 性能与运行监控
systemctl status mariadbmysqladmin -u root -p statusSHOW PROCESSLIST;、SHOW STATUS;top/htop、iostatss -tulnp | grep mariadbslow_query_log=1、long_query_time=1(示例值)、log_output=TABLE,FILEmysqldumpslow -s at -t 10 /var/log/mysql/slow-query.logmytop(实时查看 QPS、慢查询、线程与命令分布,支持交互式诊断)五 最小可用排障清单
systemctl status mariadb、journalctl -u mariadb -xetail -n100 /var/log/mariadb/error.logss -tulnp | grep 3306df -hls -ld /var/lib/mysql /var/run/mysqld /var/log/mysql && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld /var/log/mysqlmysqld_safe --datadir=/var/lib/mysqlmysql_upgrade && systemctl restart mariadb