通化县住房和城乡建设局网站,定制网站收费,企业信息公示系统全国官网,品牌设计需要多少钱场景#xff1a;将A机器MySQL数据库部分表每日定时备份到B机器上 #xff08;只适用于Linux#xff09; 实现方式算是比简单了#xff0c;就是用mysqldump生成文件#xff0c;使用scp命令传输到另一台机器上。
1. 编写备份shell脚本
在A机器新建脚本 (当然没有vim的话vi…场景将A机器MySQL数据库部分表每日定时备份到B机器上 只适用于Linux 实现方式算是比简单了就是用mysqldump生成文件使用scp命令传输到另一台机器上。
1. 编写备份shell脚本
在A机器新建脚本 (当然没有vim的话vi命令也可以
vim backupAndUpload.sh#!/bin/bash# 定义变量见名知意不做解释
SOURCE_DB_USERroot
SOURCE_DB_PASSWORD123
SOURCE_DB_NAMEaaa
TABLES(tb1 tb2 tb3 tb4 tb5 tb6)
BACKUP_FILE/home/app/data-backup/aaa.sql
REMOTE_USERroot
REMOTE_PORT22
REMOTE_HOST192.168.2.222
REMOTE_PATH/home/app/data-backup
LOG_FILE/home/app/data-backup/out.log# 记录日志函数
log() {local message$1echo $(date %Y-%m-%d %H:%M:%S) - $message | tee -a $LOG_FILE
}# 生成备份文件
log 开始备份数据库...
mysqldump -u${SOURCE_DB_USER} -p${SOURCE_DB_PASSWORD} ${SOURCE_DB_NAME} ${TABLES[]} --single-transaction ${BACKUP_FILE}# 检查备份是否成功
if [ $? -eq 0 ]; thenlog 备份成功开始上传文件...# 使用scp上传备份文件scp -P ${REMOTE_PORT} ${BACKUP_FILE} ${REMOTE_USER}${REMOTE_HOST}:${REMOTE_PATH}# 检查上传是否成功if [ $? -eq 0 ]; thenlog 文件上传成功elselog 文件上传失败fi
elselog 备份失败
fi解析
定义变量脚本中定义了数据库用户、密码、数据库名称、表名列表、备份文件名、远程用户、远程主机和远程路径。生成备份文件使用 mysqldump 命令生成备份文件并将指定的表导出到 BACKUP_FILE 文件中。检查备份是否成功通过检查 mysqldump 命令的返回值来判断备份是否成功。上传备份文件如果备份成功则使用 scp 命令将备份文件上传到远程服务器的指定路径。检查上传是否成功通过检查 scp 命令的返回值来判断文件上传是否成功。
2.生成ssh密钥
由于scp需要交互输入密码才能传输所以下面使用SSH 密钥认证方式
在A机器上执行以下命令生成密钥
ssh-keygen -t rsa三次回车 密钥会生成在/root/.ssh/目录下以下都是以root用户操作的所以家目录就是/root)
将A机器上的公钥id_rsa.pub复制到B机器/root/.ssh目录
在B机器执行以下命令将公钥追加到authorized_keys文件
cat id_rsa.pub ~/.ssh/authorized_keys如果提示没有该文件就在家目录建一个.ssh目录
mkdir -p ~/.ssh3. 手动执行
上面设置好之后可以手动执行脚本看是否成功 在A机器执行
赋予脚本执行权限
chmod x backupAndUpload.sh./backupAndUpload.sh4.设置定时执行
当然还是在A机器执行输入下面命令进入crontab编辑
crontab -e最后一行加入以下内容每日凌晨01:20执行一次 写给小白其实就是vi编辑器 按i键输入后在按ESC键最后后输入:wq保存
20 1 * * * /home/app/backupAndUpload.sh最后用下面命令查询是否保存成功
crontab -l然后就坐等自动备份了