MySQL数据库备份一般使用phpMyAdmin,但是对于数据量比较大的时候,使用phpMyAdmin就不合适了。一般推荐使用命令行中的dump进行,而且在Linux环境下,可以使用crontab进行定期备份,减少人工的操作。 1、备份所有的数据库,可以使用以下语句 /usr/local/webserver/mysql/bin/mysqldump -uroot -p123456 –all-databases >/data/mysql_backup/data/data.sql –default-character-set=utf8 如果要自动按照日期备份可以把文件名稍作修改,变为 /usr/local/webserver/mysql/bin/mysqldump -uroot -p123456 –all-databases >/data/mysql_backup/data/$(date -d “yesterday” +”%Y%m%d”).sql –default-character-set=utf8 就可以生成昨天的备份,这样就可以配合crontab使用。 2、备份单个数据库 /usr/local/webserver/mysql/bin/mysqldump -udumpmysql -pdumpmysqlpeak123 shopping >shop.sql –default-character-set=utf8 3、备份单个表 /usr/local/webserver/mysql/bin/mysqldump -uroot -p123456 shopping peak_users >user.sql –default-character-set=utf8
MySQL出现No space left on device导致的无法启动
昨天,在服务器拷贝一个目录的备份后,发现:MySQL无法使用,重启后,也无法启动,出现以下错误: [root@localhost data]# 091011 10:35:27 mysqld_safe mysqld process hanging, pid 14736 – killed /usr/local/webserver/mysql/bin/mysqld_safe: line 137: 14736 已杀死 nohup /usr/local/webserver/mysql/libexec/mysqld –defaults-file=/data/mysql/3306/my.cnf –basedir=/usr/local/webserver/mysql –datadir=/data/mysql/3306/data –user=mysql –log-error=/data/mysql/3306/data/localhost.localdomain.err –pid-file=/data/mysql/3306/data/localhost.localdomain.pid –socket=/tmp/mysql.sock –port=3306 < /dev/null >> /data/mysql/3306/data/localhost.localdomain.err 2>&1 查看一下localhost.localdomain.err,发现 Can’t start server: can’t create PID file: No space left on device 目录下的localhost.localdomain.pid也没出现。 但是free查看了一下,该分区的空间还很大。不应该出现这个情况。 网上搜索了一下资料,可能是因为inode不足,于是df之后发现,果然,该分区使用了100%,删除一些文件后,重启下MySQL,搞定! 一般情况下,如果硬盘空间还很大,系统却提示不能创建文件和目录,那可能就是因为该分区有很多小文件。 inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是 Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。 inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 除了删除部分没用的文件,网上还有一种操作方法是,链接到其他有空余inode分区 ln [...]
