1,数据库目录
/var/lib/mysql
测试库
/var/lib/mysql/ambari
2,创建备份目录
cd /home
mkdir mysqlbackup
cd mysqlbackup
3, 查看系统支持的存储引擎
show engines;
查看表使用的存储引擎
两种方法:
a、show table status from db_name where name='table_name';
b、show create table table_name;
如果显示的格式不好看,可以用\g代替行尾分号
有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后默认用MyISAM引擎,导致Innodb表数据无法被正确读取。
修改表引擎方法
alter table table_name engine=innodb;
关闭Innodb引擎方法
关闭mysql服务
找到/etc目录下的my.cnf文件:
找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM
4,创建shell脚本
vi backupmysqldaily.sh
写入一下内容
如果引擎是myisam 加上--lock-tables=false参数,如果是innodb,则加上--single-transcation比较好。
需要注意的是命令要用绝对路径命令,否则因为环境变量的问题,会导致备份脚本运行后失败,备份下来的数据库大小为0
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uroot -p123456 -R --lock-tables=false ambari | gzip > /home/mysqlbackup/ambari_$(date +%Y%m%d_%H%M%S).sql.gz
5,添加可执行权限
chmod u+x backupmysqldaily.sh
添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;
./backupmysqldaily.sh
6,添加计划任务
检测或安装 crontab
确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
crontab
添加计划任务
执行命令:
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。
输入以下内容并保存:
*/1 * * * * /home/mysqlbackup/backupmysqldaily.sh
具体是什么意思呢?
意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseName.sh”。
7,测试计划任务是否执行
很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!
如果任务执行失败了,可以通过以下命令查看任务日志:
# tail -f /var/log/cron
每天执行任务
59 23 * * * /home/mysqlbackup/backupmysqldaily.sh