PG定时备份数据

编写备份脚本

新建目录

用于存放当前用户下的自定义定时任务脚本

# 新建定时任务脚本存放目录
mkdir -p /home/myCron;

新建文件

touch /home/myCron/backup_pg.sh;

授予可执行权限

chmod +x /home/myCron/backup_pg.sh;

编写删除脚本

vim /home/myCron/backup_pg.sh

键入键盘的 i 键 ,粘贴 脚本,然后键入以下内容,键入的 esc 键,shift+: ,输入 wq 后 回车保存。

# 定时备份 pg 库数据,每次备份前先删除指定大于指定间隔的备份
# 获取本机ip
host_ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`

# pg 备份文件的存放位置,不存咋则会新建
pg_backup_data_path=/data/backup_db/pg;

# pg dump执行命令所在目录
pg_dump_sh_path=/usr/pgsql-11/bin/pg_dump;

# pg 数据库 主机名称或ip(若在本地请使用127.0.0.1)
pg_database_host=$host_ip;
echo 'pg_database_host is '$pg_database_host;
# pg 数据库端口
pg_database_port=5432;

# pg 用户权限
pg_database_role=postgres;
# pg 用户名
pg_database_user=postgres;
# pg 密码,根据实际清空填写
pg_database_password=password@dba;

# pg 备份的数据库名称,根据实际情况填写
backup_database_name=db_name

# 备份文件的后缀名
backup_file_suffix=.backup;

# 删除备份数据与当前时间的间隔天数,根据实际情况填写
delete_backup_data_interval=15;

# 当天的时间
now_date=`date +%Y-%m-%d`;

declare -a not_delete_file_arr;

# 获得间隔时间内的备份文件名称
for ((i=0; i<$delete_backup_data_interval; i++))
do
    not_delete_file_arr[$i]=$pg_backup_data_path'/'`date -d "-$i day " +%Y-%m-%d`'_'$backup_database_name'_'$host_ip''$backup_file_suffix;
done
# 当前目录下的所有文件
exist_backup_file_str=`find $pg_backup_data_path -name *$backup_database_name*$backup_file_suffix`;

#要将$a分割开,可以这样:
OLD_IFS="$IFS"
IFS=","
exist_backup_file_str_arr=($exist_backup_file_str)
IFS="$OLD_IFS"
# 查找备份文件信息
for exist_name in ${exist_backup_file_str_arr[@]}
do
   isNeedDelete=1;
    for not_delete_name in ${not_delete_file_arr[@]}
    do 
    # 删除备份
      if [ $exist_name = $not_delete_name ]; then 
           isNeedDelete=0;
        break;
      fi;
    done;
    if [ $isNeedDelete = 1 ]; then 
        echo ''$exist_name' 备份需要删除';
        rm -rf $exist_name;
      fi;
done;

# 新建备份目录(若不存在)
if [ ! -d $pg_backup_data_path ]; then 
 mkdir -p $pg_backup_data_path;
 echo $pg_backup_data_path' 备份文件存放目录不存在,已经自动创建';
fi;

# 最新的备份文件名称:日期_数据库名称(数据库ip)+备份文件后缀,示例:2022-06-15_test_127.0.0.1.backup
now_backup_file_path=$pg_backup_data_path/$now_date'_'$backup_database_name'_'$host_ip''$backup_file_suffix;

# 备份文件至当前服务器
echo '开始备份【'$backup_database_name'】数据至本地服务器'
$pg_dump_sh_path  "host=$pg_database_host port=$pg_database_port user=$pg_database_user password=$pg_database_password dbname=$backup_database_name" --role "$pg_database_role"  --format custom --blobs --encoding UTF8 --verbose --file "$now_backup_file_path"
echo '结束备份【'$backup_database_name'】数据至本地服务器,备份位置'$now_backup_file_path;

# 若文件需要同时备份至其他服务器,可以只有scp命令。
# 备份文件至 192.168.1.13 centOs 服务器
echo '开始备份【'$backup_database_name'】数据至【192.168.1.13     centOs 】服务器'
# 示例,当前备份文件同步复制至 192.168.1.13 服务器的 /data/backup_database/postgresql 目录
file_server_backup_path=/data/backup_database/postgresql;
# 注意,服务器之间需要配置免密登录,scp 复制目录时需要添加 -r 参数
scp $now_backup_file_path  root@192.168.1.13:$file_server_backup_path
echo '结束备份【'$backup_database_name'】数据至【192.168.1.13     centOs 】服务器'

vim 用法参考:https://www.runoob.com/linux/linux-vim.html

脚本添加至定时任务

crontab -e
# 添加以下脚本并保存(时间可自行调整),并删除记录日志
0 12 * * * /home/myCron/backup_pg.sh >> /home/myCron/backup_pg.log 2>&1;
# 若定时任务没有生效,重载定时任务
systemctl restart crond;
# 查看编写的定时任务
crontab -l;
0 12 * * * /home/myCron/backup_pg.sh >> /home/myCron/backup_pg.log 2>&1;

注意:Linux crontab 命令参考:https://www.runoob.com/linux/linux-comm-crontab.html

Linux Crontab 定时任务参考: https://www.runoob.com/w3cnote/linux-crontab-tasks.html

免密登录配置

服务器

当前服务器目标服务器备注
192.168.1.12192.168.1.13

生成授权密匙

# 生成密匙,一致点击回车直至结束,密匙默认存放位置/root/.ssh/
ssh-keygen;

复制密匙至目标服务器

方式一

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.13;
# 输入目标服务器密码回车即可

方式二

cat /root/.ssh/id_rsa.pub | ssh  root@192.168.1.13 'cat >> /root/.ssh/authorized_keys';
# 输入目标服务器密码回车即可
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇