zabbix数据库备份问题

今早来公司发现zabbix监控没有数据,然后登陆server端,发现如下:

[root@1-199-HP~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/cciss/c0d0p1     9.5G  461M  8.6G   6% /

/dev/cciss/c0d0p7      91G  188M   86G   1% /data0

/dev/cciss/c0d1p1     133G  227M  126G   1% /data1

/dev/cciss/c0d2p1     133G  188M  126G   1% /data2

/dev/cciss/c0d3p1     133G  188M  126G   1% /data3

/dev/cciss/c0d0p6     7.6G  7.2G     0 100% /var

/dev/cciss/c0d0p5     7.6G  177M  7.1G   3% /tmp

/dev/cciss/c0d0p2     9.5G  4.3G  4.8G  48% /usr

tmpfs                 2.0G     0  2.0G   0% /dev/shm

[root@153-199-HP08020033 ~]# find /var -size +104857600c -exec ls -lh {} \;

-rw-rw---- 1 mysql mysql  Mar 27 09:54 /var/lib/mysql/ibdata1

判断:/var目录被写满

vim /etc/my.cnf 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

判断:数据库默认储存在/var/lob/mysql下,而/var 整个目录只有7.6G大小,很容易就被写满,

通过上网查 “/var/lib/mysql/ibdata1”了解到 ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。
这个文件有的时候会变得很大,并且在你删除数据的时候,文件也不减小。
解决方案:
下面是处理超大ibddata1文件的步骤:
1. 对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件

[mysqld]

innodb_file_per_table

目的很明确,我们可以单独删除每个文件

2. 导出所有的数据,重建数据库,然后恢复数据:

# /usr/bin/mysqldump -R -q --all-databases > /tmp/all.sql

# service mysqld stop

# rm -fr /var/lib/mysql/*

# /usr/bin/mysql_install_db

# service mysqld restart

# mysql < /tmp/all.sql

按照网上参考资料,由于经验不足,我在没有完全搞清楚的情况下进行了以上操作,结果下午数据一致在导入,而没有发现之前导出做备份的数据并不完全,有很多表没有导出,原本有3个多G的数据,只导出1.4G,最后导致数据库无法恢复,造成一个礼拜的数据就这样没了。。而且只能重新添加监控项。。
现在分析出现以上原因,目前已知我可以这样处理:
1、以后安装数据库,记得修改/etc/my.cnf配置文件如下:
[mysqld]

innodb_file_per_table=1

datadir=/data1/mysql  #修改数据库存储路径

socket=/var/lib/mysql/mysql.sock

user=mysql

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;

# to do so, uncomment this line:

# symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

2、或者像今天早上出现这样的情况直接做个软连接,将数据库存储路径连接到/data1目录下就可以解决
如以上可以:ln -s /data1/var  /var   ???
解释:
ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录
如上面的示例,当我们执行命令   cd /var/的时候  实际上是进入了 /data1/var/
值得注意的是执行命令的时候,应该是a目录已经建立,目录b没有建立。我最开始操作的是也把b目录给建立了,结果就不对了
也就是所执行ln -s /data1/var  /var 是不行的!



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值