首页 > 代码库 > mysql数据库每日一备

mysql数据库每日一备

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比较好。

#!/bin/bash
mysqldump -uroot -p123456 --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

 

mysql数据库每日一备