它創建了一個.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