首页 > 数据库 >Ubuntu18.04定时备份MySQL、PostgreSQL数据库

Ubuntu18.04定时备份MySQL、PostgreSQL数据库

时间:2024-02-06 16:34:04浏览次数:45  
标签:PostgreSQL LOG MySQL DB SQL DATE Ubuntu18.04 backup OUT

1、备份MySQL数据库脚本

LOG_DATE=`date +'%Y-%m-%d %H:%M:%S'`
LOG_PATH=/home/dbserver/script_data/backup.log
echo "$LOG_DATE=======>开始备份以下mysql数据库:" >> ${LOG_PATH}

DUMP=/usr/bin/mysqldump
OUT_DIR=/home/dbserver/backup/mysql_backup
LINUX_USER=root
DB_NAME="er giteadb em_hgh"
DB_USER=root
DB_PASS=root
# 指定要删除多少天前的文件
DAYS=7
cd $OUT_DIR
echo "$DB_NAME"
DATE=`date +%Y-%m-%d`
OUT_SQL="$DATE-backup".sql
TAR_SQL="$DATE-backup.tar.gz"
$DUMP -u$DB_USER -p$DB_PASS --databases $DB_NAME --opt -Q -R --skip-lock-tables>$OUT_SQL

echo "$LOG_DATE=======>数据库 $DB_NAME 备份完成" >> ${LOG_PATH}
# 压缩打包备份文件
tar -czf $TAR_SQL $OUT_SQL
# 删除源备份文件
rm $OUT_SQL
# 删除指定天数前的文件
find $OUT_DIR -type f -mtime +$DAYS -delete

2、备份PostgreSQL数据库脚本

LOG_DATE=`date +'%Y-%m-%d %H:%M:%S'`
LOG_PATH=/home/dbserver/script_data/backup.log
echo "$LOG_DATE=======>开始执行 PostgreSql 数据库备份操作......" >> ${LOG_PATH}

OUT_DIR=/home/dbserver/backup/pgsql_backup
DB_NAME='em_hgh'
DB_user='postgres'
# 指定要删除多少天前的文件
DAYS=7
cd $OUT_DIR
DATE=`date +%Y-%m-%d`
OUT_SQL="$DATE-$DB_NAME-backup".sql
TAR_SQL="$DATE-backup.tar.gz"
# 导出PGPASSWORD环境变量,避免每次执行都需要输入密码
export PGPASSWORD='root'
pg_dump -h localhost -U postgres -d $DB_NAME -F c -b -f /home/dbserver/backup/pgsql_backup/$OUT_SQL --encoding UTF8

echo "$LOG_DATE=======>数据库 $DB_NAME 备份完成" >> ${LOG_PATH}
# 压缩打包备份文件
tar -czf $TAR_SQL $OUT_SQL
# 删除源备份文件
rm $OUT_SQL
# 删除指定天数前的文件
find $OUT_DIR -type f -mtime +$DAYS -delete

3、定时任务设置

定时任务创建

首先可以使用 crontab -l 命令来查看一下系统内的定时任务。
系统内置定时任务

接下来就可以创建定时任务了
使用 crontab -e 命令编辑定时任务,添加我们写好的脚本文件路径即可, Cron表达式不懂的话可以找个在线网站生成一下即可。

0 1 * * * /bin/bash /home/dbserver/script_data/mysql_databackup.sh
30 1 * * * /bin/bash /home/dbserver/script_data/pgsql_databackup.sh

定时任务添加

4、遇到的问题汇总

定时任务执行 No MTA installed, discarding output错误处理

当发现定时任务没有执行时,我们可以使用下面的命令查看定时任务相关日志:

tail -f -n 100  /var/log/syslog | grep CRON

发现提示 No MTA installed, discarding output,可以参考No MTA installed, discarding output错误排查与处理,写的挺详细了。

发现没有按照设置的时间执行

可能是因为系统内置的时间不准确,导致的,可以参考 Ubuntu系统设置时区和日期时间 设置后再观察一下。

参考链接:
Ubuntu下mysql数据库自动备份脚本
mysqldump命令详解

标签:PostgreSQL,LOG,MySQL,DB,SQL,DATE,Ubuntu18.04,backup,OUT
From: https://www.cnblogs.com/Snowclod/p/18007648

相关文章

  • ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'mysql&
    转自https://www.cnblogs.com/jiangfeilong/p/10560754.html 关键要授予 WITHGRANTOPTION;#原因:修改数据库账号时删除了默认的localhostroot, 新建了%root 但没有赋予全部权限;解决方法:1.关闭数据库#mysqldstop2.在my.cnf里加入skip-grant-tables3.停止服务器......
  • CentOS安装配置MySQL详细教程
    CentOS安装配置MySQL详细教程一、卸载系统中自带的MariaDB#检查MariaDBrpm-qa|grepmariadb#卸载MariaDBrpm-e--nodepsmariadb-libs二、下载MySQL安装包下载地址https://downloads.mysql.com/archives/community/三、将MySQL压缩包上传至/opt目录四、解压MyS......
  • SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka
    (之前写了一个flink-cdc同步数据的博客,发布在某N,最近代码开源了,直接复制过来了,懒得重新写了,将就着看下吧)最近做的一个项目,使用的是pg数据库,公司没有成熟的DCD组件,为了实现数据变更消息发布的功能,我使用SpringBoot集成Flink-CDC采集PostgreSQL变更数据发布到Kafka。 一、业务......
  • navicat连接mysql服务遇到的问题
    问题现象及描述:navicat连接数据库提示:2003-Can'tconnecttoMySqlserveron'192.168.245.131',(unkownerror)问题可能出现的原因:1、数据库连接ip、端口、用户名、密码信息输入错误(数据库连接四要素)2、该用户不可远程连接3、linux防火墙未开放解决方式数据库连接ip问题:......
  • MySQL-进阶
    一、MySQL体系结构1.连接层:一些客户端和连接服务,完成连接处理、授权认证及相关操作2.服务层:完成大多数核心服务的功能,比如SQL的分析和优化3.引擎层:负责MySQL中数据的存储和提取4.存储层:数据存储层,将数据存储在文件系统上,并完成与存储引擎的交互二、存储引擎(MySQL的核心)1.定......
  • java实现导出mysql数据库表信息
    java实现导出mysql数据库表信息,导出信息包含:数据库用户名,表英文名,表中文名,表业务描述,字段数量等等packagesrc.main.biz.ucenter.utils;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;impor......
  • 【转帖】解决Java/MySQL性能问题的思路
    plantegg.github.io/2023/08/28/解决问题思路/ 10年前写的,重新发一下系统性能问题CPU(基本上WEB服务器没有多少IO,主要是CPU有瓶颈)top/vmstat观察CPU使用率,Load负载,r/b线程数量等;IO(数据库大多数时候瓶颈是IO,主要是索引没建好;如果数据库CPU紧张的话,检查一下是不是orderb......
  • 安装mysql
    见原文:https://blog.csdn.net/bugu_hhh/article/details/130625482 二、navicat访问不让连接的问题:授权问题如果你想允许任何主机连接到你的MySQL服务器,你可以创建一个用户并为其授予全局访问权限。以下是如何完成的CREATEUSER'your_username'@'%'IDENTIFIEDBY'your......
  • MySQL中复制表(创建表的副本、备份表)
    1.第一种复制表结构和数据--复制表的结构和数据,但是不会复制表的约束、外键、触发器、索引等createtabletest_duplicationasselect*fromtest;--此处的as可以省略2.第二种只复制表的结构createtabletest_duplicationasselect*fromtestwhere1=0;--此......
  • MySQL存储引擎-InnoDB行格式
    MySQL存储引擎-InnoDB行格式mysql作为一款主流的关系型数据库,是以记录为单位向表中插入数据的。目前为止,Innodb共支持COMPACT、REDUNDANT、DYNAMIC、和COMMPRESSED四种行格式。在MySQL5.7及以上版本,默认采用DYNAMIC格式。DYNAMIC与COMPACT格式基本一致,下文中我们会介绍区别。因......