它创建了一个.tar.gz文件,但打开文件时只包含一个backup-my.cnf ..?!
您必须使用tar的-i
选项来提取或查看由Percona XtraBackup创建的tar文件的内容。这是记录在案,并提醒在该innobackupex过程结束时输出:
. . .
130630 10:40:23 innobackupex: Connection to database server closed
innobackupex: You must use -i (--ignore-zeros) option for extraction of the tar stream.
130630 10:40:23 innobackupex: completed OK!
忽略在你看到的行为-i
选项的结果:只有在tar归档的第一个文件是可见的。
然后我试图从网络服务器上运行的第一个工作日命令不创建文件... PHP已经可以访问到目标目录
的innobackupex过程必须有读取MySQL数据目录下的数据和日志文件的权限,以及写入权限以保存备份的输出。
你应该看到象这样的错误:
130630 10:36:20 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Error in opening ./ibdata1
但它可能是失去了,因为PHP的exec()
呼叫discards stderr output。
重新您的评论8/4:
好吧我最近XtraBackup和最近的Percona服务器尝试这样做我自己。
我需要从shell中测试,所以我可以看到错误输出。当你只从你的PHP脚本运行它时,你没有看到错误发生。一旦你得到它的工作,你应该能够将gid更改为www-data并使其继续工作。
我通过将所有文件的组所有权更改为我自己用户的gid进行测试。
$ cd /var/lib/mysql # use your datadir if it is different
$ chgrp -R billkarwin .
不需要chmod默认安装上的任何东西。但是,你的文件权限可能是不对的,在这一点上,所以你需要将它们恢复到东西的作品:
$ cd /var/lib/mysql # use your datadir if it is different
$ chmod -R 660 .
$ chmod 770 . */.
$ chmod 777 mysql.sock
然后我可以运行innobackupex,但我必须指定MySQL的凭据:
$ innobackupex --user=root --password=XXXX /tmp
130804 08:56:33 innobackupex: Connecting to MySQL server with DSN
'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root' (using password: YES).
130804 08:56:33 innobackupex: Connected to MySQL server
. . .
130804 09:53:46 innobackupex: Connection to database server closed
130804 09:53:46 innobackupex: completed OK!
请注意,您还可以将[xtrabackup]组添加到用户自己的$ HOME/.my.cnf中,以便不必将凭据放在命令行上。
$ cat > ~/.my.cnf
[xtrabackup]
user=root
password=XXXX
^D
$ innobackupex /tmp
你怎么能打开和提取窗口中的文件? – clarkk
你可以安装[Cygwin](http://cygwin.org)工具来在Windows上获得GNU tar,所以你可以使用'-i'选项。 –
抱歉离开一段时间..你如何给innobackupex进程读取权限,以便它可以从PHP运行? – clarkk