网站的关键词,河北邢台市的快递能收吗,世界知名外贸网站,装潢设计与制作Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1#xff1a;配置过程 2、编写自动备份sh脚本文件3#xff1a;设置定时自动执行 前言
此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件#xff0c;然后将文件同步到另一… Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1配置过程 2、编写自动备份sh脚本文件3设置定时自动执行 前言
此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件然后将文件同步到另一台服务器上可以作为一个简单的数据容灾。
1、配置服务器通信
作用是可以使备份好的sql可以通过scp复制到目标服务器
A服务器数据库所在服务器B服务器需要备份的服务器(即目标服务器)
1.1配置过程
A和B服务器执行如下命令一直敲回车
ssh-keygen -t rsa会在/root/.ssh目录下生成两个文件(id_rsa,id_rsa.pub) 把A服务器的 id_rsa.pub 里的内容全选复制到B服务器的相同目录创建新文件authorized_keys把内容复制到此文件创建新文件命令
cd /root/.ssh/
vim authorized_keysB服务器目录文件如图 A服务器目录文件如图 这样两台服务器SSH链接就建立好了使用SCP命令就不需要输入密码了 B服务器创建文件夹用于存放备份文件
mkdir -p /data/mysqlAutoBackupFrom162、编写自动备份sh脚本文件
A服务器创建存放脚本文件目录和备份目录,进入mysqlAutoBackupTo24
mkdir -p /data/mysqlAutoBackupTo24/backup
cd /data/mysqlAutoBackupTo24创建脚本文件
vim AutoBackup.sh粘贴AutoBackup.sh 里面的内容
#下面生成的sql在本服务器存放的文件夹就是我上面建立的
BACKUP/data/mysqlAutoBackupTo16/backup/
#当前时间用来命名sql文件
DATETIME$(date %Y-%m-%d)
echo 备份开始
echo 备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql
#生成sql文件命名
DATABASEdbBackup
echo $DATABASE-$DATETIME
#mysqldump -h localhost -u${DB_USER} -p${DB_PW} --all-databases ${BACKUP}/$DATABASE-$DATETIME.sql
mysqldump -h 192.168.90.16 -uroot -pWuyuanDev001 --databases xxl_job xxl_job_hf_test ${BACKUP}/$DATABASE-$DATETIME.sql
echo 导出成功开始传输
#将sql文件从服务器16备份到服务器24自己建立的文件夹/data/mysqlAutoBackupFrom16下面
scp -P 22 $BACKUP$DATABASE-$DATETIME.sql root192.168.90.24:/data/mysqlAutoBackupFrom16
#删除备份目录
#rm -rf ${BACKUP}/$DATETIME
#删除7天前备份的数据自行更改
#find $BACKUP -mtime 7 -name *.sql -exec rm -rf {} \;
echo 数据库备份到服务器成功4. 文件关键代码解释 mysqldump 的 -h 后面写当前服务器的 IP也就是192.168.90.16不要写 localhost因为如果是离线安装的 mysql 可能没有 mysqld.socket 导致连接失败。
--databases xxl_job xxl_job_hf_test 的意思是指定备份 xxl_job 和 xxl_job_hf_test 这个两个数据库指定多个数据库要加 --databases 数据库用空格隔开上面一句注释掉的是 --all-databases 意思是备份全部数据库。scp -P 22 是指定 ssh 端口不指定默认为 22root 是目标服务器192.168.90.24 的用户名下面我们运行一下这个 sh 看看效果cd 到你的 sh 存放的文件夹 sh AutoBackup.sh首次进行 ssh 连接要输入一个 yes 回车然后去目标服务器 24 查看sql 文件已经同步过去。执行测试 成功截图
3设置定时自动执行
上面的测试没有问题下面我们设定一个每天 0 点自动执行 sh 脚本就可以失效每天的自动同步。首先赋予要执行的 shell 脚本权限给高一点不然没法自动执行
chmod 777 /data/mysqlAutoBackupTo24/AutoBackup.sh输入下面语句vim 会打开一个文件
crontab -e里面这样写保存前面的 02 00 * * * 是 cron 表达式代表每天 00:02 执行 /data/mysqlAutoBackupTo24/AutoBackup.sh之所以设置 00:02 是因为避免服务器在 0 点的时候有其他数据同步任务所以晚一点。cron 表达式的语法你们可以学一下。
02 00 * * * sh /data/mysqlAutoBackupTo24/AutoBackup.sh保险起见再刷新一下配置
service crond reload