【原創】centos下openstack的mysql數據庫備份與恢復

首先,得有個mysql數據庫備份腳本,須要注意的是,openstack的mysql數據庫,root帳號的密碼是隨機設置的,其值在/etc/contrail/mysql.token中。mysql

#!/bin/bash

backup_dir="/opt/backup/mysql"

if [ ! -d "$backup_dir" ]; then
  mkdir -p "$backup_dir"
fi

# Dump the entire mysql
/bin/nice -n 19 /usr/bin/mysqldump -uroot -p`cat /etc/contrail/mysql.token` --opt --flush-logs --single-transaction --ignore-table=mysql.event --ignore-table=mysql.gtid_slave_pos --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats --all-databases > ${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql
/bin/nice -n 19 tar zPcf ${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.tar.gz ${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql
rm -rf $backup_dir/*.sql

 

而後要將這個備份腳本設置爲自動運行,好比設置爲天天凌晨三點執行:sql

echo "0 03 * * * root /usr/bin/sh /opt/backup/shell/backupmysql.sh" >> /etc/crontab

 

最後,一旦因爲異常斷點等緣由致使數據庫文件丟失,mysql服務啓動失敗,則安裝下列步驟進行恢復:shell

1. 正常狀況下,一個剛yum裝完的數據庫目錄下有這些文件數據庫

[root@test mysql]# ll
total 28
-rw-rw---- 4 mysql mysql 16384 Aug 29 13:35 aria_log.00000001
-rw-rw---- 4 mysql mysql    52 Aug 29 13:35 aria_log_control
drwx--x--x 2 mysql mysql  4096 Dec 21 14:33 mysql
drwx------ 2 mysql mysql  4096 Dec 21 14:33 performance_schema
drwxr-xr-x 2 mysql mysql     6 Aug 29 13:35 test

2. 對比當前的/var/lib/mysql/文件夾下的文件,把多餘的文件都刪掉bash

3. 啓動數據庫service mysql startflex

4. 導入數據庫文件,恢復數據code

# cat /etc/contrail/mysql.token
f0d330d601ce33f1a69f
# mysql -u root -p < /mysql-flexhcs_controller_1-20161221.sql
Enter password: f0d330d601ce33f1a69f
相關文章
相關標籤/搜索