您好,登錄后才能下訂單哦!
下文主要給大家帶來mysql數據庫xtrabackup完全備份恢復后重啟失敗處理方法,希望mysql數據庫xtrabackup完全備份恢復后重啟失敗處理方法能夠帶給大家實際用處,這也是我編輯這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
一. 完全備份恢復說明
xtrabackup二進制文件有一個xtrabackup --copy-back選項,它將備份復制到云服務器的datadir目錄下。下面是通過 --target-dir 指定完全備份文件的目錄,還原到datadir目錄下。
1 | xtrabackup --copy-back --target-dir=/data/backups/ |
可以使用xtrabackup --move-back選項恢復備份。這個選項類似于xtrabackup --copy-back,唯一的區別是它將文件移動到目標位置,而不是復制文件。由于此選項刪除了備份文件,因此必須謹慎使用。
如果您不想使用上述任何一種選項,您可以另外使用rsync或cp來恢復文件。可以用來恢復備份的rsync命令的示例如下:
?
1 | $ rsync -avrp /data/backup/ /var/lib/mysql/ |
在大多數情況下,您需要在啟動數據庫云服務器之前將文件的所有權更改為mysql。最后現有數據已恢復,可以啟動云服務器, 權限設置如下所示:
?
1 | $ chown -r mysql:mysql /var/lib/mysql |
注意:在恢復備份之前,datadir目錄必須為空。另外mysql云服務器在執行恢復之前需要關閉,不能還原到正在運行的mysqld實例的datadir目錄下。
恢復還原工作原理請查看:mysql 開發進階篇系列 44 物理備份與恢復( 熱備份xtrabackup 工具介紹)
二. 完全備份恢復案例
?
1 2 3 4 5 | -- 在恢復之前先刪除下面二個表 -- 刪除一個a 表(myisam) delete from test.a -- 刪除一個testbackup表(innodb) delete from test.`testbackup` |
?
1 2 3 4 | -- 先停掉服務 [root@hsr data]# service mysql stop -- 刪除data目錄下所有數據文件,安全起見可以先保存原有副本 [root@hsr data]# rm -rf /usr/local/mysql/data/* |
1 2 | -- 使用xtrabackup 完全恢復 [root@hsr data]# xtrabackup --defaults-file=/etc/my.cnf --host=127.0.0.1 --user bkpuser --password=123456 --copy-back <br> --target-dir=/data/backups/ |
如下圖所示恢復成功:
?
1 2 | -- 清空mysql錯誤日志內容,方便等下查看 [root@hsr data]# : > /var/log/mariadb/mariadb.log |
--重啟服務失敗,查看錯誤日志顯示:2018-10-09t05:26:19.082347z 0 [error] innodb: the innodb_system data file 'ibdata1' must be writable。2018-10-09t06:03:17.407537z 0 [error] innodb: operating system error number 13 in a file operation。
?
1 2 3 | -- 使用perror查看狀態13 ,提示沒有權限 [root@hsr data]# perror 13 os error code 13: permission denied |
?
1 2 3 4 | -- 改變屬主關系,將data目錄下所有的文件改成mysql用戶和mysql用戶組。 [root@hsr data]# chown -r mysql:mysql ../data [root@hsr data]# service mysql start starting mysql. success! |
最后啟動成功了,刪除的二個表數據都回來了。
三. 錯誤日志中的警告信息
3.1 信息:insecure configuration for --secure-file-priv: location is accessible to all os users。解決方法:secure-file-priv我系統指定的目錄是/tmp。 把該目錄下的用戶和用戶組設置成mysql。
?
1 | [root@hsr tmp]# chown -r mysql.mysql ../tmp |
3.2 信息:insecure configuration for --pid-file: location '/usr/local/mysql/data' in the path is accessible to all os users。意思是目錄不安全,所有用戶都可見。解決方法:將data目錄設置mysql用戶和用戶組權限,以及770權限。
?
1 2 | [root@hsr tmp]# chown -r mysql.mysql /usr/local/mysql/data [root@hsr tmp]# chmod 770 /usr/local/mysql/data |
3.3 信息:failed to set up ssl because of the following ssl library error: ssl context is not usable without certificate and private key。解決:重新安裝ssl。 在mysql的bin目錄下找到mysql_ssl_rsa_setup安裝,如下所示:
?
1 2 3 4 5 6 7 8 9 | [root@hsr bin]# pwd /usr/local/mysql/bin<br>-- 安裝 [root@hsr bin]# mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data --生成后還需將data目錄下的pem文件改用戶組和用戶為mysql [root@hsr data]# chown -r mysql:mysql private_key.pem [root@hsr data]# chown -r mysql:mysql public_key.pem [root@hsr data]# chown -r mysql:mysql server-cert.pem [root@hsr data]# chown -r mysql:mysql server-key.pem ... |
3.4 信息:timestamp with implicit default value is deprecated. please use --explicit_defaults_for_timestamp server option (see documentation for more details)。 默認是off,如下所示:
?
1 2 3 | --解決在my.cnf中加入 explicit_defaults_for_timestamp=1,重啟服務 [mysqld] explicit_defaults_for_timestamp=1 |
總結:關于mysql恢復后,服務啟動報文件權限問題的,所有mysql有關的文件或目錄全部設置成mysql用戶和mysql用戶組。
對于以上關于mysql數據庫xtrabackup完全備份恢復后重啟失敗處理方法,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。