标签: Backup

About mysqldump of MySQL 5.5 backup information_schema & performance_schema databases

MySQL 5.5多出了两个新数据库 information_schema &–all-databases–all-databases performance_schema

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test |
+——————–+

但是用mysqldump去备份这两个数据库的时候都会报错

mysqldump: Got error: 1044: Access denied for user ‘root’@’localhost’ to database ‘information_schema’ when using LOCK TABLES

mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user ‘root’@’localhost’ for table ‘cond_instances’ when using LOCK TABLES

用–all-databases备份时也不会备份这两个数据库
官方文档里解释到:
http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

总结一下,如果一定要用mysqldump去备份这两个数据库不是不可以,但是得disable lock tables。 我用的是:
–database information_schema –lock-tables=0

也可以把所有的数据库都列出在一个文件中,去掉information_schema和performance_schema。

以上内容转自http://www.blogjava.net/miaoyachun/archive/2012/05/11/377894.html

附备份脚本中的相关语句,摘自《猫大的最新版vps备份脚本
例如

/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs > mysqldata
sed -i 's/information_schema //g' mysqldata
sed -i 's/performance_schema //g' mysqldata
sed -i 's/mysql //g' mysqldata
for db in `cat mysqldata`; do
    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --databases ${db}> ${db}.sql)
done

使my-visitors通过Gmail发送数据库备份

在my-visitors.php文件中查找$phpmailer = new PHPMailer();

在上面这句下面加上如下代码:

$phpmailer->IsSMTP();
$phpmailer->SMTPAuth = true;         
//打开SMTP验证
$phpmailer->SMTPSecure = "ssl";       
//利用SSL连接
$phpmailer->Host = "smtp.gmail.com";      
//设置主机为Gmail
$phpmailer->Port = 465;                   
//指定SMTP端口
$phpmailer->Username = "yourname@gmail.com";  
//Gmail账号
$phpmailer->Password = "123456";             
//Gmail密码

即在$phpmailer = new PHPMailer();
………………
$phpmailer->AddAddress(get_bloginfo(‘admin_email’));
中加入设定SMTP的代码。

保存后上传就可以通过Gmail发送数据库备份了。测试方法参考willin大师的注释:)
即:在ftp上把今天的数据备份删除,在后台选择“将数据备份邮寄给管理者”,按下“保存更改”,再转换到其他任何一页,就会产生备份和邮寄,马上看到有没有收到邮件。

PS:在删除过程中有一个小插曲。由于使用的是kloxo面板,用ftp的admin权限不够,需要使用apache权限或者root权限。因为创建的文件拥有者是apache。

解决自动备份脚本不执行

我是直接在VPS上创建.sh文件的,复制内容进去以后保存,不管用,提示-bash: ./AutoBackupToFtp.sh: /bin/bash^M: bad interpreter: No such file or directory
查了一下,出错原因如下:
此文件是在window下写的,所以在每行后面会加个ctrl+m就是^M,所以后面的sh就变成sh^M当然是没有这个命令的,所以脚本就不能运行了,把^M去掉就应该没问题了。(觉得可能是自己创建的方法问题,或者说是linux为了安全,故意这么设定)

输入命令:dos2unix AutoBackupToFtp.sh 把它转化成linux文件。

会提示dos2unix: converting file AutoBackupToFtp.sh to UNIX format …

如果没有dos2unix此命令,可用此方法:

cat ./AutoBackupToFtp.sh | tr -d ‘\r’ > temp.sh
mv temp.sh AutoBackupToFtp.sh