Table ‘.\Tablename\posts’ is marked as crashed and should be repaired

昨天好好的突然服务器挂了,死活访问不了,马上重启一下。还是不能访问,查看tomcat日志文件,很多Table ‘.\Tablename\posts’ is marked as crashed and should be repaired这个错误。这是第一次遇到这个问题。首先排除改动代码引起的,因为最近没有更新过程序。

当时第一想法是先让服务跑起来再说,免得造成用户流失,然而不是那么顺利,死活都访问不了。网上搜索资料都是说数据库中表损坏之类的答案,可是服务器应该硬件是安全的不可能突然断电之类的问题。网上有很多修复的方法,暂时不敢用,问题的原因没找到如果乱搞数据库可能会引起更多的问题。搞不好数据丢失就麻烦了。我那个数据库资源有限没有做什么备份之类的,突然想起前段时间看到服务器硬盘空间好像不是很大了。会不会是硬盘满了呢,马上df -h查看,果然剩余空间0,马上清掉一些文件。重启机器,重启后还是不能访问,使用Navicat Premium的repaired fast修复已经,重启tomcat。oooo起来了

–每天一点点

druid使用

Druid是阿里开源的一个为监控而生的数据库连接池,如果项目需要查看性能使用这个将可以非常清晰的看到大部分监控项目。项目地址是https://github.com/alibaba/druid

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。首先编写druid的配置文件
[code lang=”js”]
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bobodb?createDatabaseIfNotExist=true&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
username=xxxx
password=xxxxxxxx
filters=stat
initialSize=2
maxActive=300
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
connectionProperties=druid.stat.mergeSql\=true
[/code]

然后创建连接池
[code lang=”js”]
static {
try {
Properties properties = new Properties();
properties.load(DBConnection.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
logger.error("初始化数据库连接异常:{}", e.getMessage()); //$NON-NLS-1$
e.printStackTrace();
}
}
[/code]

获取连接
[code lang=”js”]
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (Exception e) {
logger.error("获取Mysql数据库连接异常:{}", e.getMessage()); //$NON-NLS-1$
e.printStackTrace();
}
[/code]

配置url监控(web.xml)
[code lang=”js”]
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>

<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
[/code]
其他更详细的配置可以参照官网文档
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

打开http://localhost:8080/QLBoboService/druid/sql.html可以看到效果

–每天一点点