Linux上定时备份MySQL数据库

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



正确信息如下:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值