首先,得有个mysql数据库备份脚本,需要注意的是,openstack的mysql数据库,root账号的密码是随机设置的,其值在/etc/contrail/mysql.token中。
#!/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
然后要将这个备份脚本设置为自动运行,比如设置为每天凌晨三点执行:
echo "0 03 * * * root /usr/bin/sh /opt/backup/shell/backupmysql.sh" >> /etc/crontab
最后,一旦由于异常断点等原因导致数据库文件丢失,mysql服务启动失败,则安装下列步骤进行恢复:
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/文件夹下的文件,把多余的文件都删掉
3. 启动数据库service mysql start
4. 导入数据库文件,恢复数据
# cat /etc/contrail/mysql.token
f0d330d601ce33f1a69f
# mysql -u root -p < /mysql-flexhcs_controller_1-20161221.sql
Enter password: f0d330d601ce33f1a69f