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