大家好,又见面了,我是你们的朋友全栈君。
最近要写mysql数据库备份,把自己所得记录下来,防止以后忘了,哈哈哈哈
(注 这是远程备份,备份到指定服务器)
使用环境
- centos 7
- mysql 5.7
- 远程连接主机免密码登录 ,
在运行服务器上执行 ssh-keygen
一路回车,还是不要添加密码的好,这时候可以注意一下公钥,秘钥保存位置
把公钥放到备份的服务器上 ssh-copy-id root@192.168.1.1
(注意:这两台linux必须能ping通)
msyql自带的mysqldump和xtrabackup工具,两种方法备份,今天先介绍一下mysqldump
一.使用mysqldump备份
一般使用备份,都是备份到远程服务器上,别问我为什么,备份到本地,服务器崩了,一切都瞎了啊,哈哈哈,所以一下是备份到远程,但是可以在本地测试啊!
在运行服务器上执行:
1.创建脚本,并添加内容 ps一步到位,脚本位置,自己意愿
cd /home (我的是在home目录下)
vim mysql_data.sh
2.添加下面的内容
#!/bin/sh
DUMP=/usr/bin/mysqldump #mysqldump的路径,不知道的可以全局搜索一下 find / -name mysqldump
OUT_DIR=/home/longlong #备份文件的目录,没有提前建好
DB_NAME=database #要备份的数据库名字
DB_USER=root #数据库登录名
DB_PASS=root #数据库登陆密码
HOST=192.168.1.1 #远程备份ip
USE=root #远程备份用户
DATE=`date +%Y%m%d%H%M` #当前时间
OUT_SQL="mysqldata_bak_$DATE.sql.gz" #备份出来的sql文件名
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME | gzip -c | ssh $USE@$HOST "cat >$OUT_DIR/$OUT_SQL"
3.将脚本设置成可执行的文件类型
chmod +x /home/mysql_data.sh
这时候就可以测试一下脚本,看是否正确,这里有两种方法
1 cd /home.
./mysql_data.sh
2. bash -x /home/mysql_data.sh
都可以查看脚本是否执行成功
4.添加定时任务 crontab
crontab -e
添加如下命令 (每天的一点三十分执行)
30 1 * * * /home/mysql_data.sh
5 重启定时任务
service crond restart
在备份服务器上执行:
1.在备份服务器上创建备份目录 (此测试生成目录放在home下)
cd /home
mkdir mysql_data 住:此目录应与上面脚本mysql_data.sh中的备份目录一致
2.创建脚本,用来保存最近五天的备份
vim dele.sh
复制以下内容
DAYS=5
BACKUP_DIR=/home/longlong #(这个文件和上面备份的文件一致)
#删除过期的文件
find $BACKUP_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \; #删>除5天前的备份文件(注意:{} \;中间有空格)
3.将脚本文件设置成可执行文件类型
chmod +x /home/dele.sh
4.添加计划任务
crontab -e
输入如下命令
30 1 * * * /home/dele.sh
5.重启定时任务
service crond restart
二.mysqldump数据库备份还原
在备份服务器上执行
1.解压缩
gunzip 备份文件名
2.还原数据库
mysql -u root -p datapase < 备份文件名
一些ok,剩下测试.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133225.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...