据库自动备份MySQL数

自动备份其实就是定时执行数据导出的操作。所谓天有不测风云,我们辛苦经营的网站数据哪天弄丢了的话结果是非常尴尬的。所以我们应该定时或者不定时的备份数据库,视网站项目情况,可以每隔几分钟、几小时、1天会几天备份一次数据库。

1、创建数据库

1CREATE DATABASE demo;

2、选择数据库

1use demo;

3、新建表

1234567CREATE TABLE IF NOT EXISTS `runoob_tbl`(       `runoob_id` INT UNSIGNED AUTO_INCREMENT,       `runoob_title` VARCHAR(100) NOT NULL,       `runoob_author` VARCHAR(40) NOT NULL,       `submission_date` DATE,       PRIMARY KEY ( `runoob_id` )    )ENGINE=InnoDB DEFAULT CHARSET=utf8;

4、插入数据

123INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 PHP""菜鸟教程", NOW());INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 PHP2""菜鸟教程2", NOW());INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 PHP3""菜鸟教程3", NOW());

5、新写一段脚本 mysqlback.sh:

1234567891011121314[root@localhost /]# vim mysqlback.sh###编辑内容#!/bin/bashday1=`date -d '-1 days' +%Y%m%d`day3=`date -d '-3 days' +%Y%m%d`db1=/db-$day1.sqldb3=/db-$day3.sqlif [ -f $db3 ]; then    rm -f $db3fi/usr/local/mysql/bin/mysqldump -uroot -p123456  demo > $db1

以上脚本的意思是执行导出数据库,导出的文件名按日期格式命名,如果发现sql文件名是3天前的,则删除该文件,即删除3天前的备份文件,这样也可以节省空间。

这里,为了方便测试,可以简便的修改上述脚本为:

123456789#!/bin/bashday1=`date -d "1 minute ago" +"%Y-%m-%d"`day3=`date -d "3 minute ago" +"%Y-%m-%d"`db1=/db-$day1.sqldb3=/db-$day3.sqlif [ -f $db3 ]; then    rm -f $db3fi/usr/local/mysql/bin/mysqldump -uroot -p123456  demo > $db1

这样的话,生成的脚本其实只生成了 db-2019-01-31.sql 文件,直接覆盖 该文件,我们可以实时的新插入一条数据,以此来简要的查看是否成功备份了数据库。

6、设置为可执行权限:

1[root@localhost /]# chmod +x mysqlback.sh

7、最后我们使用crontab来定时执行脚本。

1234[root@localhost /]# crontab -e####编辑内容:*/1 * * * *  /mysqlback.sh >> /dev/null 2>&1

8、重新启动定时任务

12[root@localhost home]# systemctl restart crond.service  [root@localhost home]# systemctl status crond.service

9、查看定时任务

1[root@localhost home]# cat /var/spool/cron/root

10、查看Crontab的日志信息

1234[root@localhost home]# tail -f /var/log/cronJan 31 18:20:01 localhost CROND[4677]: (root) CMD (/mysqlback.sh >> /dev/null 2>&1)Jan 31 18:21:01 localhost CROND[4709]: (root) CMD (/mysqlback.sh >> /dev/null 2>&1)Jan 31 18:22:01 localhost CROND[4773]: (root) CMD (/mysqlback.sh >> /dev/null 2>&1)

11、当执行一次之后,我们可以往表里新添加一条数据

1INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("学习 PHP4""菜鸟教程4", NOW());

之后,再查看  上述  $db1 文件,即生成的该日期 db-2019-01-31.sql 文件内容。

1548934043577046

上一篇:40年腌咸鸭蛋老配方,100%出油起沙,方法简单,看完了就会
下一篇:通过查看源代码一键复制粘贴网页上禁止复制的内容