!!怎么用shell脚本来实现对数据库备份!
请教一个各位大侠,我想在linux下通过一个shell脚本来实现对postgres数据库的定时备份,不知道这个脚本怎么写!我自己试了几次,总不成功!
我还是个初学者正在努力学习,请大家多指教!!!
知道的请提供个实例参考一下!
谢谢!!!!!!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
mysql的小例子,应该差不多吧
BACKUP
#!/bin/bash
cd /new/owl
echo "OWL Backup start...."
mysqldump --opt intranet >; backup.sql
sed "/INSERT INTO groups VALUES/ s/(0,'Administrators'),//" backup.sql >; backup1.sql
sed "/INSERT INTO groups VALUES/ i\
INSERT INTO groups VALUES (0,'Administrators');\
update groups SET id = 0 WHERE name = 'Administrators';" backup1.sql >; backup2.sql
tar zcf owl.`date +%F-%H-%M`.tar.gz backup2.sql
cp -arf /var/www/html/intranet/Documents ./
tar zcf data.`date +%F-%H-%M`.tar.gz Documents >; /dev/null 2>;&1
echo "OWL Backup Finished!"
echo "Egroup Backup start...."
cd /new/egroup
mysqldump --opt egroupware >; backup.sql
tar zcf egroupware.`date +%F-%H-%M`.tar.gz backup.sql
cp -arf /outside/webserver/docroot ./
tar zcf data.`date +%F-%H-%M`.tar.gz docroot >; /dev/null 2>;&1
echo "Egroup Backup Finished!"
echo "Tutos Backup start...."
cd /new/tutos
mysqldump --opt tutos >; backup.sql
tar zcf egroupware.`date +%F-%H-%M`.tar.gz backup.sql
echo "Tutos Backup Finished!"
RESTORE
#!/bin/bash
cd /new/owl
echo "OWL Restore start...."
mysqladmin drop intranet -f >; /dev/null 2>;&1
mysqladmin create intranet
mysql intranet < backup2.sql
rm -rf /var/www/html/intranet/Documents/*
cp -arf Documents/* /var/www/html/intranet/Documents/
echo "OWL Restore Finished!"
echo "Egroup Restore start...."
cd /new/egroup
mysqladmin drop egroupware -f >; /dev/null 2>;&1
mysqladmin create egroupware
mysql egroupware < backup.sql
rm -rf /outside/webserver/docroot/*
cp -arf docroot/* /outside/webserver/docroot/
echo "OWL Restore Finished!"
echo "Tutos Restore start...."
cd /new/tutos
mysqladmin drop tutos -f >; /dev/null 2>;&1
mysqladmin create tutos
mysql tutos < backup.sql
echo "Tutos Restore Finished!"
好象是这样的:
1、建立一個shell文件,名叫backupdb.sh,放到bin目錄下(有的放到其他目录下也可以的,只要列出其绝对路径就可以的,但我试了几次不好用),內容如下
#!/bin/sh
td =`date "+%Y%m%d%H%M%S"`
su postgres -c "/usr/local/pgsql/bin/pg_dump dbname >; /home/dbbackup/"$td.dbname.dump
将数据库dbname备份到 /home/dbackup目录下,备份后的文件名将是 备份时间.dbname.dump
注意:执行上面操作的最终是postgres用户,他对/home/dbbackup没有写的权限要改变一下权限
2、在/var/spool/cron/root文件中(没有该文件就建立一个)增加下面一行指令
*/30 * * * * /bin/backupdb.sh
每半小时行一次backupdb shell文件
3、重启一下crontab
/etc/rc.d/init.d/crond restart
如果以后还要假如crontab直接用crontab -e就可以了!!!
本人是在 阿弟 前辈的指教下成功的!
再此再次谢过!!!!
好东西到家一起分享!!!!!