您的位置:首页 > 运维架构 > Linux

Linux上定时备份MySQL数据库

2016-07-06 14:52 411 查看
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



正确信息如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息