linux下备份mysql数据库,并ftp到远程linux服务器上

时间:2021-07-03 17:09:45

一、检查FTP服务是否安装
1.架设mysql数据库装在172.22.1.77上,如何安装mysql略,简称为77。
2.作为备份机IP为172.22.1.150上,简称为150;
3.为150按照ftp命令,首先XSHELL远程连接到150上,确认ftp服务是否安装。
service vsftpd status
linux下备份mysql数据库,并ftp到远程linux服务器上
显示vsftpd已停,说明服务停止,输入:service vsftpd start可启动服务。
如果显示:-bash vsftpd :command not find,说明服务未安装。
二、安装FTP服务
1.安装使用yum,如果linux上没有安装yum工具,前先安装yum,此处不赘述。
2.输入命令:yum install vsftpd ,如图所示安装。在is this ok [y/N] 后输入y
3.安装完毕后先创建一个ftp专用账号,该用户的登陆文件夹将作为以后远程备份的sql文件位置。
在此我们创建一个 /opt/user 这个文件夹作为上传路径。以及一个user用户,密码也为user
输入命令:useradd –d /opt/user user
查看确认一下目录所有者权限,user是否可以写入:
在/opt目录下输入命令:ls –l
user目录所有者为user,权限为rwx
修改用户名密码
输入:passwd user
三、测试FTP服务
1.打开cmd命令,输入ftp命令,
open 172.22.1.150
输入账号密码user,成功登陆。表明ftp服务可用。
linux下备份mysql数据库,并ftp到远程linux服务器上
四、编写sh脚本
在77上/home下新建mysql_data作为备份文件存放路径,并在该目录下新建bak.sh,拷贝以下内容至该文件中。
修改完成后,保存并推出。修改文件可执行权限,
chmod +x bak.sh
测试该脚本是否运行正常:
sh bak.sh
这里请忽略语法和格式错误,该错误不影响备份。
linux下备份mysql数据库,并ftp到远程linux服务器上
到150目录/opt/user和77目录/home/mysql_data下可以看到2015_12_31_15_14.sql的文件,远程备份成功。
linux下备份mysql数据库,并ftp到远程linux服务器上
五、设置定时任务
shell到77上,输入crontab -l查看用户的定时任务,
输入crontab -e 编辑某个用户的cron服务
输入:
30 01 * * * /home/mysql_data/bak.sh
设置在凌晨1:30分运行bak脚本;
最后输入:/etc/init.d/crond restart
重启crond,让其生效。
六、还原mysql备份
xshell到150上,输入:mysql -uroot -p123456登陆到mysql;
linux下备份mysql数据库,并ftp到远程linux服务器上
输入命令”show databases;”,回车,看看有些什么数据库;切换到要还原的数据库,输入”use funing_wms;”,回车;导入数据,
输入”source /opt/user/fn_wms_bak_2015_12_31_16_05.sql;”,回车,开始导入,再次出现”mysql>”并且没有提示错误即还原成功。

附sh脚本:

#!/bin/sh
DUMP=/usr/bin/mysqldump #mysqldump备份文件执行路径
OUT_DIR=/home/mysql_data #备份存放路径
LINUX_USER=root #系统用户名
DB_NAME=funing_wms #要备份的数据库名字
DB_USER=root #数据库账号 注意:非root用户要用备份参数 --skip-lock-tables,否则可能会报错
DB_PASS=123456 #数据库密码
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
cd $OUT_DIR #进入备份存放目录
DATE=`date +%Y_%m_%d_%H_%M` #获取当前系统时间
OUT_SQL="$DATE.sql" #备份数据库的文件名
TAR_SQL="fn_wms_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #备份
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$OUT_SQL #更改备份数据库文件的所有者
find $OUT_DIR -name "fn_wms_bak_*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件
ftp -n<<!
open 172.22.1.150
type binary
user user user
prompt
put $OUT_SQL fn_wms_bak_$OUT_SQL
close
bye
!