wiindows下資料庫檔案使用指令碼同步到linux下的mysql資料庫中

來源:互聯網
上載者:User

標籤:local   useradd   尋找   alt   rem   注意   最佳化   代碼   hpa   

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 直接執行

2.解決第二個問題

怎麼才可以點擊一下就達成 window下的資料檔案 上傳到linux下

問題一、如何才可以 把windows下的資料檔案上傳到ftp上呢???

 

問題二、我怎麼才可以點擊一下就可以完成這樣的操作呢

我想到了windows下的批次檔.bat

首先 ftp 用戶端是windows下內建的

所以可以直接調用 但是我又需要在ftp下有這麼多的操作怎麼才可以呢

ftp -s指令碼 可以把你在ftp的指令 直接寫入檔案中 而用-s 直接在ftp下運行

 

但是又有了一個新的問題

每次上傳一個sql檔案都要 yes 一下 ???

這個問題困擾了我很久

直到我發現了這個命令

互動模式:關閉

 

3.解決第三個問題

資料檔案到達linux 怎麼樣才可以 在windows操作同步到資料庫中呢???

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

mysql -uroot -p 庫名 < 路徑 

就這一個指令 ,我完全可以在linux寫的shell指令碼中去運行

這樣就解決了備份 但是 你怎麼 在windows端下 進行操作呢

 

 

 

我首先想到了putty.exe

如果 可以在cmd 直接調用putty 我就直接可以寫批次檔 來達成我要做的事情

 

putty登入linux需要什麼

ip地址 使用者名稱 密碼 連接埠 我怎麼才可以把他們一起 啟動呢

putty.exe -ssh -pw 123789456 [email protected]

 

但是我們的最終目的是什嗎???

 

在windows 下運行 shell 指令碼 同步資料庫

putty.exe -m 指令碼

putty.exe -ssh -pw 123789456 -m 指令碼名字 [email protected]

這樣就可以 在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 gotoguanbi
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 [email protected]%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 [email protected]%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 [email protected]%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來做

轉載請標註

 

wiindows下資料庫檔案使用指令碼同步到linux下的mysql資料庫中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.