windows下数据库文件使用脚本同步到linux下的mysql数据库中

时间:2021-09-27 04:56:43

1.背景

windows server 2008 下 每天会有 *.sql数据文件

需要上传到linux 中的mysql数据库中

而运维人员是在 windows server 下使用 xshell 连接 linux 下进行导入导出来进行操作

客户要求:1.点击桌面上的程序达成 上传到linux下的mysql数据库中。

2.要解决的问题

1.通过什么来让数据文件 上传到 linux 下

2.怎么才可以点击一下就达成 window下的数据文件 上传到linux下

3.数据文件到达后 怎么做才可以 在window下 让数据同步到数据库中

1.解决第一个问题

1.通过什么来让数据文件 上传到 linux 下

可用方法 FTP samba NFS 文件共享服务

因为问题2 要在window下实行 优先想到 使用ftp 因为 ftp在windows 下可以通过cmd 直接执行

windows下数据库文件使用脚本同步到linux下的mysql数据库中

windows下数据库文件使用脚本同步到linux下的mysql数据库中

2.解决第二个问题

怎么才可以点击一下就达成 window下的数据文件 上传到linux下

问题一、如何才可以 把windows下的数据文件上传到ftp上呢???

windows下数据库文件使用脚本同步到linux下的mysql数据库中

windows下数据库文件使用脚本同步到linux下的mysql数据库中

问题二、我怎么才可以点击一下就可以完成这样的操作呢

我想到了windows下的批处理文件.bat

首先 ftp 客户端是windows下自带的

所以可以直接调用 但是我又需要在ftp下有这么多的操作怎么才可以呢

ftp -s脚本 可以把你在ftp的指令 直接写入文件中 而用-s 直接在ftp下运行

windows下数据库文件使用脚本同步到linux下的mysql数据库中

但是又有了一个新的问题

每次上传一个sql文件都要 yes 一下 ???

这个问题困扰了我很久

直到我发现了这个命令

交互模式:关闭

windows下数据库文件使用脚本同步到linux下的mysql数据库中

windows下数据库文件使用脚本同步到linux下的mysql数据库中

3.解决第三个问题

数据文件到达linux 怎么样才可以 在windows操作同步到数据库中呢???

首先 :在linux下如果同步到库中呢

mysql -uroot -p 库名 < 路径 

就这一个指令 ,我完全可以在linux写的shell脚本中去运行

这样就解决了备份 但是 你怎么 在windows端下 进行操作呢

我首先想到了putty.exe

如果 可以在cmd 直接调用putty 我就直接可以写批处理文件 来达成我要做的事情

windows下数据库文件使用脚本同步到linux下的mysql数据库中

putty登录linux需要什么

ip地址 用户名 密码 端口 我怎么才可以把他们一起 启动呢

putty.exe -ssh -pw 123789456 root@192.168.91.59

但是我们的最终目的是什么???

在windows 下运行 shell 脚本 同步数据库

putty.exe -m 脚本

putty.exe -ssh -pw 123789456 -m 脚本名字 root@192.168.91.59

这样就可以 在windows 下运行 shell 脚本 同步 linux 数据库

下面放成品的代码 代码只是为了功能 完全可以再缩短很多

注意:将这个批处理 与putty.exe 放到有sql的文件夹下运行

@echo off
color 0a
cd /d %~dp0
if exist *.sql (goto next) else (goto baddir)
:next
@Echo Off
color 3E
set /p var=请输入你要配置的IP地址:
set /p pass=请输入root密码:
cls
title 阿姆斯特朗喷气式阿姆斯特朗上传同步工具(2018.4.21)
echo.【功能说明】
echo.通过FTP把当前目录下的.sql文件同步到目标mysql中
echo.一键搭建环境、一键上传、一键同步增加工作效率
echo.
echo.【特别提醒】
echo.1. 如果首次运行,获取秘钥请手动点击确定
echo.2. 工具使用顺序(1)(2)单独使用(2)会无效
echo.3. 需要保证yum源可以正常安装FTP服务
echo 4. window7下完美运行,win10下可能会出现putty启动慢
echo.5. sql文件默认存放在/LT/date下
echo.6. 同步完成默认放进/LT/lajixiang下 默认保存5天
echo.7. 如sql过大,上传时间长属于正常现象,请勿关闭
echo.8. 最终解释权为作者所有
echo. 如果当前服务器安装了FTP服务请谨慎使用 谨防数据丢失!!
echo.
echo.

:on
cd /d %~dp0
choice /c 1234 /m "请输入编号:(1)创建;(2)同步;(3)卸载;(4)关闭;
if %errorlevel%==4 goto guanbi
if %errorlevel%==3 goto xiezai
if %errorlevel%==2 goto tongbu
if %errorlevel%==1 goto dajian

:dajian
@echo off
echo 搭建环境并上传......
echo ^#!/bin/bash^ >linux.sh
echo ^yum -y install vsftpd^ >>linux.sh
echo ^useradd -p 123789456 litong^ >>linux.sh
echo ^echo 'litong:123789456'^|chpasswd^ >>linux.sh
echo ^mkdir /LT/data -p^ >>linux.sh
echo ^mkdir /LT/lajixiang -p^ >>linux.sh
echo ^chmod 777 /LT/data^ >>linux.sh
echo ^chmod 777 /LT/lajixiang^ >>linux.sh
echo ^echo anonymous_enable=YES ^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo write_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo local_umask=022 ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo dirmessage_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo connect_from_port_20=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_std_format=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo listen=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo pam_service_name=vsftpd ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo tcp_wrappers=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_root=/LT/data ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_deny=NO ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo litong ^> /etc/vsftpd/user_list^ >>linux.sh
echo ^service iptables stop^ >>linux.sh
echo ^setenforce 0^ >>linux.sh
echo ^service vsftpd restart^ >>linux.sh
putty.exe -ssh -pw %pass% -m linux.sh root@%var%
del linux.sh
Echo open %var% >up
Echo litong>>up
Echo 123789456>>up
Echo prompt >>up
Echo mput *.sql>>up
Echo bye>>up
FTP -s:up
del up
echo 上传成功
goto on
:tongbu
pause
set /p zhanghu=数据库账户:
set /p mima=数据库密码:
set /p kuming=将要同步的库名:
del
echo 同步到数据库中......
echo #/bin/bash >peizhi.sh
echo mysql -u%zhanghu% -p%mima% %kuming% ^</LT/data/*.sql >>peizhi.sh
echo mv /LT/data/*.sql /LT/lajixiang/ >>peizhi.sh
echo find /lt/lajixiang/*.sql -mtime +5 ^|xargs rm -rf >>peizhi.sh
putty.exe -ssh -pw %pass% -m peizhi.sh root@%var%
del peizhi.sh
echo 同步成功
goto on
:xiezai
echo 卸载环境中......
echo rm -r /LT >xiezaihuanjing.sh
echo userdel -r litong >>xiezaihuanjing.sh
echo yum -y remove vsftpd >>xiezaihuanjing.sh
putty.exe -ssh -pw %pass% -m xiezaihuanjing.sh root@%var%
del xiezaihuanjing.sh
echo 卸载成功
goto on
:baddir
echo.
echo 警告:请将本工具放在要上传的sql文件夹下再运行,否则将出现不可预料的后果!
echo.
echo (例:若sql文件在目录为【D:\date】,则将该工具放在【D:\date】目录下后再执行。)
echo.
pause
echo 退出脚本
exit
:guanbi
exit

以上脚本中有很多可以优化的地方 只是自己不愿在去弄了 有兴趣的可以 优化一下 比如 shell中的查找替换可以用sed来做

转载请标注