首先,得有個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