Centos下 mysql 定时备份设置

Centos下 mysql 定时备份设置

一、使用配置好的bak.sh脚本配合cron定时任务实现每日定时备份到指定文件夹

将mysqlbak文件夹放到home/data 目录下

文件夹包含以下内容

 bak文件夹、backup.log日志输出文件、bak.sh 备份脚本文件

bak.sh内容如下

#!/bin/bash    
    
# MySQL配置    
MYSQL_USER='root'    
MYSQL_PASS='mysql@2024'    
BACKUP_DIR='/home/data/mysqlbak/bak'    
DATE=$(date +"%Y%m%d")    
    
# 确保备份目录存在    
mkdir -p "$BACKUP_DIR"    
    
# 定义备份和压缩文件的函数    
function backup_and_compress {    
    local DB_NAME=$1    
    local BACKUP_FILE="$BACKUP_DIR/mysql_backup_${DB_NAME}_$DATE.sql"    
    local COMPRESSED_FILE="$BACKUP_FILE.gz"    
    local CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")    
    
    # 使用mysqldump备份数据库    
    mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DB_NAME --socket=/var/lib/mysql/mysql.sock > $BACKUP_FILE    
    
    # 检查备份是否成功    
    if [ $? -eq 0 ]; then    
        # 压缩备份文件    
        gzip $BACKUP_FILE    
        echo "Backup and compression for $DB_NAME successful at $CURRENT_TIME: $COMPRESSED_FILE" >> /home/data/mysqlbak/backup.log    
    else    
        echo "Backup failed for $DB_NAME at $CURRENT_TIME" >> /home/data/mysqlbak/backup.log    
    fi    
}    
    
# 调用函数备份每个数据库    
backup_and_compress 'ku1'    
backup_and_compress 'ku2'    
backup_and_compress 'ku3'    
    
echo "All backups completed."    
  
# 删除旧的备份文件(可选)    
# find $BACKUP_DIR -name "mysql_backup_*.gz" -type f -mtime +180 -delete

确保 /home/data/mysqlbak/bak.sh 脚本具有可执行权限。

你可以使用以下命令来设置执行权限

chmod +x /home/data/mysqlbak/bak.sh

--测试

sh  /home/data/mysqlbak/bak.sh

--1、创建定时任务

[root@localhost ~]# crontab -e

no crontab for root - using an empty one

crontab: installing new crontab

--2、设置任务时间及脚本位置  00代表00分钟,22代表小时  说明,

以下命令

00 22 * * * /home/data/mysqlbak/bak.sh

代表在每日的22点00分执行mysqlbak目录下的bak.sh脚本

--3、查看当前计划任务

[root@localhost ~]# crontab -l

00 22 * * * /home/data/mysqlbak/bak.sh

--4、重启定时任务

[root@localhost ~]# service crond restart

Redirecting to /bin/systemctl restart crond.service

--5、查看定时任务的服务状态

[root@localhost ~]# service crond status

--6、查看当前计划任务

[root@localhost ~]# crontab -l

00 22 * * * /home/data/mysqlbak/bak.sh

--执行结果全过程

Connecting to 172.20.50.23:22...

Connection established.

To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Mon Sep  9 12:24:18 2024 from 10.0.255.101

[root@localhost ~]# chmod +x /home/data/mysqlbak/bak.sh

[root@localhost ~]# crontab -l

no crontab for root

[root@localhost ~]# crontab -e

no crontab for root - using an empty one

crontab: installing new crontab

[root@localhost ~]# crontab -l

10 22 * * * /home/data/mysqlbak/bak.sh

[root@localhost ~]# service crond restart

Redirecting to /bin/systemctl restart crond.service

[root@localhost ~]# service crond status

Redirecting to /bin/systemctl status crond.service

● crond.service - Command Scheduler

   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

   Active: active (running) since 三 2024-09-18 10:27:28 CST; 9s ago

 Main PID: 5623 (crond)

    Tasks: 1

   CGroup: /system.slice/crond.service

           └─5623 /usr/sbin/crond -n

9月 18 10:27:28 localhost.localdomain systemd[1]: Started Command Scheduler.

9月 18 10:27:28 localhost.localdomain crond[5623]: (CRON) INFO (Syslog will be used instead of sendmail.)

9月 18 10:27:28 localhost.localdomain crond[5623]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 57% if used.)

9月 18 10:27:28 localhost.localdomain crond[5623]: (CRON) INFO (running with inotify support)

9月 18 10:27:28 localhost.localdomain crond[5623]: (CRON) INFO (@reboot jobs will be run at computer's startup.)

[root@localhost ~]# crontab -l

10 22 * * * /home/data/mysqlbak/bak.sh

[root@localhost ~]# sh  /home/data/mysqlbak/bak.sh

mysqldump: [Warning] Using a password on the command line interface can be insecure.

mysqldump: [Warning] Using a password on the command line interface can be insecure.

mysqldump: [Warning] Using a password on the command line interface can be insecure.

All backups completed.

[root@localhost ~]# cd /home/data/mysqlbak/bak

[root@localhost bak]# ll

总用量 15340

-rw-r--r--. 1 root root 14418218 9月  18 10:29 mysql_backup_ku1_20240918.sql.gz

-rw-r--r--. 1 root root    19247 9月  18 10:29 mysql_backup_ku2_20240918.sql.gz

-rw-r--r--. 1 root root  1262420 9月  18 10:29 mysql_backup_ku3_20240918.sql.gz

[root@localhost bak]#

二、创建rsa密钥实现异机备份—之前xx验证过,但是使用的rsa空密钥,使用真实密钥未经验证

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): RSA@2024

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in RSA@2024

Your public key has been saved in RSA@2024.pub

The key fingerprint is:

SHA256:no0pt/JyKXOKyBNv9vpBEPNqyvrFUZ5mbptl2rIGr5I root@localhost.localdomain

The key's randomart image is:

+---[RSA 3072]----+

|    o            |

|     +           |

|    . o          |

|     = .         |

|    + * S        |

| ..+.* . =       |

|  o+oo= O..      |

| oEo+oO@+.       |

|..+=+*O%+        |

+----[SHA256]-----+

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVeHvjbdXE5kCR2s72KHRAbngm6Bw2K4O6b4zCQWRsiYmUC8Ab4xVCCaGWjVZ0sp2DB35IcX21/KIuLkL+XuRRwL8WOz34c39/17wcud+4WN/RlKbg0h6Gf1VJShIwPhm+AWcNSX2sx+oiLbC5r2Yg+3yie3CPXLAcS9/cHOiMuJwZJZ6BQm9EgDFAtGpKQ+3e5lzjKfFV2ap7ZTdu67qY4zi1ZuSajhYuoj9XOuyvmW/9Y5XCR23D6+qpAfoHcPP7wzFnMdnhkOXIYhOX+ikgU4ag676LCC1F1XgJB8IO6HrFK8YadlaOx0HOpFlcgQ932L79D/RMj1dhKbiS1ugaZF3GP3TzotIoNrphhYwXbTi9CTjcds1RsxyVpcpZiBWmEh6Nt6q6f7BVVud2gf3VMrM/8YDW4ztyV+qOCMWRFBDWG/Lb+Y+2tLML3weQVx0L7JAeDtEQ6WlrtTHjEmWvuyK0fe5mPkZcUQHzFljoL0oHsP9iqoGIlnNG3GOe9us= root@localhost.localdomain

--将创建的rsa密钥上传到109应用服务器,可手动传输并更名

scp ~/.ssh/id_rsa.pub 18.18.18.109:/root/.ssh/authorized_keys

--设置定时任务,每日的23点00分执行同步程序,将数据服务器/data/mysqlbak下数据增量同步到109应用服务器/data/mysqlbak下

00 23 * * * /usr/bin/rsync -avz /data/mysqlbak/ root@18.18.18.109:/data/mysqlbak

--rsa密钥创建后,手动验证增量同步的可用性

rsync -avz /data/mysqlbak/ root@18.18.18.109:/data/mysqlbak

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值