博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux上定时备份MySQL数据库
阅读量:4289 次
发布时间:2019-05-27

本文共 2519 字,大约阅读时间需要 8 分钟。

1、查看磁盘空间情况:

既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败.

查看磁盘空间情况:df -h

2、创建备份目录:

上面我们使用命令看出/home下空间比较充足,所以可以考虑在/home保存备份文件;

cd /home

mkdir backup
cd backup

3、创建备份Shell脚本:

注意把以下命令中的DatabaseName换为实际的数据库名称; 

当然,你也可以使用其它的命名规则!

vi bkDatabaseName.sh

输入/粘贴以下内容:

mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

输入上面的内容就可以了,下面绿色部分的是另一种方式,和上面的二选一即可,可以不考虑:

[对备份进行压缩:

mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

]

注意: 

username 替换为实际数据库的用户名; 
password 替换为实际的数据库密码; 
DatabaseName替换为实际的数据库名;

退出编辑页:点击ESC推出,然后点击":wq"w写入write q推出quit

4、添加可执行权限:

chmod u+x bkDatabaseName.sh

添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;

./bkDatabaseName.sh

如果出现下面如图中红框所示,则表示可以正常使用

错误解决方案:

[

在执行了上面的代码./bkDatabaseName.sh,有可能会报如下错误:

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

解决方式如下:

添加-h192.168.1.14
如:/usr/bin/mysqldump -h192.168.1.14 -uroot -p654321 bkcare | gzip > $backupdir/bkcare-db-$time.sql.gz
]

5添加计划任务

A、检测或安装 crontab

确认crontab是否安装:

执行 crontab 命令如果报 command not found,就表明没有安装

# crontab-bash: crontab: command not found

如果在执行完所有的步骤自动备份功能仍然不起作用,也有可能是没有安装crontab

如时没有安装 crontab,需要先安装它,具体步骤请参考:

1)检测是否安装crontab,并安装

rpm -q vixie-cron   

2)安装:

B、修改/etc/crontab

#vi /etc/crontab

1),在下面添加

01   3 * * * root/home/backup/bkDatabaseName.sh

表示每天3点钟执行备份

退出编辑页:点击ESC推出,然后点击":wq"w写入write q推出quit

执行以上操作时,有时会报一下错误:

vim模式下报错E37: No write since last change (add ! to override)

故障现象:

使用vim修改文件报错,系统提示如下:

E37: No write since last change (add ! to override)

 

故障原因:

文件为只读文件,无法修改。

 

解决办法:

使用命令:w!强制存盘即可,在vim模式下,键入以下命令:

:w!

存盘后在使用vim命令检查是否保存,如未保存,编辑后重复以上操作。

 

或者报出linux中vi保存文件时的“Can't open file for writing”

E212: Can't open file for writing

Press ENTER or type command to continue

   出现这个错误的原因可能有两个:一是当前用户的权限不足,二是此文件可能正被其他程序或用户使用。这里的错误原因是前者,解决方案是在使用vi命令打开文件时,前面加上sudo来临时提供管理员权限,即使用命令“sudo vi grub.cfg”打开编辑文件。由此看来,sudo命令是很有用的,当我们执行某种操作系统提示诸如“operation not permitted”等权限不足信息时,我们很多时候都可以在命令前面加上sudo来解决权限不足问题

 

下面绿色这个是另一种备份时间的方式,和上面的二选一即可:

[2)如果1中不起作用,请使用crontab -e执行

执行命令:

crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。,输入以下内容并保存:

*/1 * * * * /home/backup/bkDatabaseName.sh

意思是每一分钟执行一次shell脚本  “/home/backup/bkDatabaseName.sh”。

]

6、重新启动crond

# /etc/rc.d/init.d/crond restart 

如果如上图所示,则表示执行正确

7、测试任务是否执行

如果任务执行失败了,可以通过以下命令查看任务日志:

# tail -f /var/log/cron

错误输出类似如下:

Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2503]: starting 0anacron

Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2512]: finished 0anacron

正确信息如下:

你可能感兴趣的文章
jsessionid问题解决方案
查看>>
MySQL和Oracle的delete,truncate
查看>>
idea使用心得(2)-安装设置与创建web项目
查看>>
将项目放到服务器tomcat上运行
查看>>
JS几种变量交换方式以及性能分析对比
查看>>
Android面试一天一题(6)——如何进行技术选型
查看>>
Velocity笔记--使用Velocity获取动态Web项目名的问题
查看>>
安卓学习:如何将一个Activity设置成窗口的样式
查看>>
Android: 自定义 View
查看>>
MySQL-99语法:外连接与内连接-(左内连接多表和查询)
查看>>
Struts2之Struts2-2.5.5 Interceptor
查看>>
Java基础-21总结字符流,IO流编码问题,实用案例
查看>>
Zookeeper请求处理
查看>>
当Java遇见了Html--Jsp……
查看>>
什么是分布式数据存储
查看>>
Java 进阶——类成员初始化顺序
查看>>
厉害了我滴哥,原来验证码是这么造出来的!
查看>>
Oracle数据库中几种非常有用的函数(with……as等)
查看>>
简单学习Nginx之:动静分离
查看>>
JQUERY 选择器的用法
查看>>