Ubuntu MariaDB使用心得分享
导读:Ubuntu 上 MariaDB 使用心得与实操要点 一 安装与初始化 在 Ubuntu 24.04 上可直接用系统源安装,省去额外仓库管理: 更新并安装:sudo apt update && sudo apt inst...
Ubuntu 上 MariaDB 使用心得与实操要点
一 安装与初始化
- 在 Ubuntu 24.04 上可直接用系统源安装,省去额外仓库管理:
- 更新并安装:sudo apt update & & sudo apt install mariadb-server mariadb-client -y
- 启动与自启:sudo systemctl start mariadb & & sudo systemctl enable mariadb
- 状态检查:sudo systemctl status mariadb
- 安全加固建议运行:sudo mariadb_secure_installation,按需选择:
- 是否启用 unix_socket 认证(本地免密便捷,远程访问建议关闭)
- 设置 root 强密码
- 删除匿名用户、禁止 root 远程登录、移除测试库并刷新权限
- 登录验证:本地可用 sudo mariadb(socket 认证),或 mysql -u root -p(密码认证);验证版本:SELECT VERSION(); 。
二 配置与目录结构
- 配置入口与包含关系:主配置 /etc/mysql/mariadb.cnf 会包含 /etc/mysql/conf.d/ 与 /etc/mysql/mariadb.conf.d/ 目录下的配置片段;服务器常用参数在 /etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 段。
- 常见基础项:
- 绑定地址:本地仅本机访问可用 bind-address = 127.0.0.1;需要远程访问改为 0.0.0.0(务必配合防火墙与访问控制)
- 连接与会话:max_connections、skip-name-resolve(减少 DNS 解析开销)
- 日志与诊断:slow_query_log = 1、slow_query_log_file、long_query_time = 2
- 修改配置后重启生效:sudo systemctl restart mariadb。
三 性能优化要点
- InnoDB 缓冲池:将 innodb_buffer_pool_size 设为物理内存的约 50%–70%(写多或内存充足可更高),如 4G/8G 等具体值,能显著减少磁盘 I/O。
- 日志与提交策略:innodb_log_file_size = 256M 提升批量写入吞吐;innodb_flush_log_at_trx_commit = 2 可提升性能(在宕机场景下相较 1 有数据丢失风险,权衡取舍)。
- 并发与连接:max_connections 结合业务峰值与内存评估,避免过大导致线程争用与内存压力。
- 临时表与内存:适当提升 tmp_table_size 与 max_heap_table_size(如各 256M),减少磁盘临时表。
- 查询与索引:
- 使用 EXPLAIN 分析执行计划,避免 **SELECT ***,合理构造 JOIN 与复合索引
- 控制结果集与分页,减少大偏移量的开销
- 维护与监控:
- 定期 OPTIMIZE TABLE 整理碎片,清理过期日志
- 启用慢查询日志定位问题 SQL,配合 SHOW PROCESSLIST、SHOW STATUS 做现场诊断
- 生产建议接入 Prometheus + Grafana 或 Zabbix 做长期可视化监控。
四 备份恢复与高可用
- 逻辑备份与恢复(轻量、跨版本友好):
- 备份:mysqldump -u root -p --single-transaction --routines --triggers --databases your_db > backup.sql
- 恢复:mysql -u root -p < backup.sql
- 建议将备份文件纳入版本管理与定期校验(如校验和/还原演练)
- 高可用思路(按场景选型):
- 主从复制:提升读扩展与故障切换能力
- Galera Cluster:多主同步,强一致,适合对可用性要求高的场景
- 云上可用托管数据库服务(如 RDS/Aurora 兼容 MariaDB),降低运维复杂度
五 常见问题与排障清单
- root 无法用密码登录但 sudo mariadb 可进:这是 unix_socket 认证生效。若需密码远程/本地登录,可切换为密码插件:
- 在 MariaDB 中执行:ALTER USER ‘root’@‘localhost’ IDENTIFIED VIA mysql_native_password USING PASSWORD(‘YourStrongP@ssw0rd’); FLUSH PRIVILEGES;
- 远程连不上:
- 确认 bind-address = 0.0.0.0 且服务重启
- 检查云安全组/本机防火墙放行 3306/tcp
- 确保用户主机为 ‘user’@‘%’ 而非仅 ‘user’@‘localhost’
- 忘记 root 密码(维护窗口内操作):
- 停止服务:sudo systemctl stop mariadb
- 安全模式启动:sudo mysqld_safe --skip-grant-tables &
- 登录并重置:mysql -u root,执行 ALTER USER 修改密码并 FLUSH PRIVILEGES;
- 重启服务:sudo systemctl restart mariadb
- 性能抖动或连接堆积:
- 现场查看:SHOW PROCESSLIST; 、SHOW STATUS LIKE ‘Threads_connected’;
- 检查慢查询日志与锁等待,必要时临时扩容 max_connections 或优化长事务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB使用心得分享
本文地址: https://pptw.com/jishu/748903.html
