!!怎么用shell脚本来实现对数据库备份!

发布于 2022-10-03 11:11:23 字数 142 浏览 18 评论 0

请教一个各位大侠,我想在linux下通过一个shell脚本来实现对postgres数据库的定时备份,不知道这个脚本怎么写!我自己试了几次,总不成功!
我还是个初学者正在努力学习,请大家多指教!!!
知道的请提供个实例参考一下!
谢谢!!!!!!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷乱花海 2022-10-10 11:11:23

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!"

黯然#的苍凉 2022-10-10 11:11:23

好象是这样的:
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就可以了!!!
本人是在 阿弟 前辈的指教下成功的!
再此再次谢过!!!!
好东西到家一起分享!!!!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文