Linux分区只读导致数据库停止写入数据怎么办
通常我们利用数据库存储数据和需要时候读取。但是有网友在Linux服务器中,出现Linux分区只读的现象,导致数据库无法输入数据,遇到这种情况要如何处理呢?下面小编就给大家介绍下Linux分区只读导致数据库停止写入数据的解决方法。
Linux分区只读导致数据库停止写入数据怎么办?
升级操作系统至SUSE Linux 11SP2版本。
服务器挂载的远端分区(从存储上划分的卷),一开始是直接就扫描不到PV/VG/LV等信息,必须要手工执行PVSCAN/VGSCAN/LVSCAN命令才可以看到信息,后来不能随系统自动挂载,无论怎么修改fstab文件都没反应。
xxx-db:~ # more /etc/fstab
/dev/disk/by-id/cciss-3600508b1001c2b630be086f93f71f626-part1 swap swap defaults 0 0
/dev/disk/by-id/cciss-3600508b1001c230b6be086f39f71f626-part2 / ext3 acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
#/dev/oraclevg/oraclelv /oradata ext3 acl,user_xattr 1 2
/dev/oraclevg/oraclelv /oradata ext3 defaults 0 0
#/dev/mapper/36001438009b03d620000500000f90000 /oradata ext3 defaults 0 0
1、怀疑是文件分区表最后的校验参数过于严格,于是由原来的“1 2”直接修改为“0 0”,结果依然未能解决问题。
2、添加如下脚本
xxx-db:/etc/init.d # more /etc/init.d/after.local
pvscan
vgscan
lvscan
mount /dev/mapper/oraclevg-oraclelv /oradata
解决了文件系统自动挂载问题,这个应该是SUSE系统升级过程中的BUG。
3、之后,没有再次出现分区只读问题,说明系统升级已经解决分区只读问题,后续如果还有问题,我打算再找硬件工程师更新光纤卡驱动和服务器固件。
补充:MySQL 数据库常用命令
create database name; 创建数据库
use databasename; 进入数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 查看表的结构
select 中加上distinct去除重复字段
mysqladmin drop databasename 删除数据库前,有提示。
显示当前mysql版本和当前日期
select version(),current_date;
数据库维护方法
在MySQL使用的过程中,在系统运行一段时间后,可能会产生碎片,造成空间的浪费,所以有必要定期的对MySQL进行碎片整理。
当删除id=2的记录时候,发生的现象
这个时候发现磁盘的空间并没有减少。这种现象就叫做碎片化(有一部分的磁盘空间在数据删除以后(空),还是无法被操作系统所使用。)
常见的优化:
# alter table xxx engine myisam;
# optimize table t1;
注意: 在实际开发的过程中,上面两个语句尽量少使用,因为在使用的过程中,MySQL的表的结构会整体全部重新整理,需要消耗很多的资源,建议在凌晨两三点钟的时候执行。(在linux下有定时器脚本可以执行,crontab)