是否有执行 mysql 维护的脚本?
或者
我如何使用 cron tab 手动完成此操作?
和
良好的 mysql 维护应执行哪些步骤?
(MyISAM)
答案1
mysqlcheck
在 crontab 中运行良好。定期查看日志。
文档中有一个重要的警告:
每个表都被锁定,因此在处理时其他会话无法访问它,但对于检查操作,该表仅使用 READ 锁锁定READ 锁
以下是我的使用方法:
mysqlcheck -u $DB_USER -p"$DB_PASS" --all-databases > /root/mysql_backups/check_errors-${DATESTAMP}.log
答案2
到目前为止,最好的开源和使用过的代码是这个用于简单备份的代码 自动mysql备份
它可以进行简单的完整备份并为您自动轮换它们。
您还可以考虑在 mysql 目录上使用 LVM 并动态进行备份,而无需锁定表。
MyISAM 表是表锁定,而不是行锁定,因此在 mysql 备份期间某些表是不可写的。
除非您的吞吐量非常高,否则只需使用我给您的链接即可:D
答案3
除非你使用 FULLTEXT 索引,否则你真的应该转换为 InnoDB。MyISAM 已经过时了,将要以最轻微的理由破坏您的数据,更不用说它很慢了。转换非常简单:
- 确保您正在运行 MySQL 5.1 或更新版本。
ALTER TABLE (tablename) ENGINE=InnoDB
每张桌子都发行。- (如果运行您自己的 MySQLd)更改您的 my.cnf 以将空间分配给 innodb_buffer_pool;您可以交换专用于 key_buffer 的任何空间,因为 InnoDB 不使用它。
如果您坚持使用 MyISAM,简单的“mysqlcheck -A --optimize”或类似的命令应该可以完成您想要的操作。