Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步
場景
Windows服務器,需要同步其他數據庫的指定表的數據到自己的數據庫。
通過PowerShell腳本的方式在Windows的任務計劃程序中添加一個任務計劃。
并在任務計劃中間隔一定的時間執行某些命令。
在命令中,打開cmd,借助mysqldump將數據庫進行備份到sql。
然后再使用mysql的命令將sql導入到數據庫中。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先新建一個后綴名為ps1的文件,然后修改內容為
## 添加計劃 $job_name="sync_data" Unregister-ScheduledJob -Name $job_name -Force Register-ScheduledJob -Name $job_name -ScriptBlock? {start-process -FilePath 'cmd.exe' -ArgumentList ' /c "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -h 127.0.0.1 -P 3306 -uroot -p123456 --databases badao --tables user > D:\bak.sql'Start-Sleep -s 30start-process -FilePath 'cmd.exe' -ArgumentList ' /c cd C:\Program Files\MySQL\MySQL Server 5.6\bin & mysql -uroot -p123456 -e "create database if not exists badao "'?start-process -FilePath 'cmd.exe' -ArgumentList ' /c cd C:\Program Files\MySQL\MySQL Server 5.6\bin & mysql -uroot -p123456 --database badao? < D:\bak.sql'? } ### 創建觸發器 $job_trigger=New-JobTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval '00:03:00' -RepetitionDuration ([System.TimeSpan]::MaxValue) ### 添加觸發器到計劃 $job=Get-ScheduledJob -Name $job_name $job | Add-JobTrigger -Trigger $job_trigger ### 啟用 $job | Enable-ScheduledJob上面腳本參數說明:
$job_name
計劃名字變量
Unregister-ScheduledJob -Name $job_name -Force
刪除任務名字的計劃任務
第一次是沒有這個任務的,但是再運行一次就會有了,根據自己需要決定是否加這句
Register-ScheduledJob -Name $job_name -ScriptBlock
注冊以任務名字的計劃任務腳本塊
$job_trigger
創建觸發器
-RepetitionInterval
重復間隔
-RepetitionDuration
重復間隔
-RepetitionDuration
持續時間
([System.TimeSpan]::MaxValue)
無限長時間
$job | Add-JobTrigger -Trigger $job_trigger
添加觸發器到計劃
$job | Enable-ScheduledJob
啟用計劃
以上是Power Shell腳本的相關參數說明。
主要是在Windows的任務計劃程序中添加一個任務并讓其在制定的間隔內一直執行某些cmd命令
cmd命令參數說明:
start-process -FilePath 'cmd.exe'
啟用cmd窗口
-ArgumentList
后面接執行命令
Start-Sleep -s
休眠30S
為了防止導出sql執行不完,這個時間具體根據數據量的大小去決定
在cmd中利用myqldump和mysql的命令執行備份數據庫和還原數據庫的操作
msyql參數說明:
mysqldump
Mysql備份工具
--databases
后面接數據庫名稱
--tables
后面接表名稱(多個表用空格隔開)
> D:\bak.sql
輸出至D盤下名字為bak.sql文件
create database if not exists badao
如果沒有該數據庫就創建
--database badao? < D:\bak.sql'?
將該文件恢復至指定數據庫中
注意:如果配置了環境變量的話可以直接調用此命令。
不然的話可以通過給全路徑添加引號的方式去執行
?"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump"
外面是單引號,則里面是雙引號。
或者執行兩個命令,先cd到mysqldump所在的目錄
' /c cd C:\Program Files\MySQL\MySQL Server 5.6\bin & mysql -uroot -p123456 -e "create database if not exists badao "'
通過使用&來連接兩個要執行的命令。
然后這個路徑根據自己的mysqldump.exe和mysql.exe所在的目錄去決定
運行腳本
以上腳本里面執行的cmd命令為了驗證其效果,可以將每個cmd所需要執行的命令
在cmd中單獨執行下進行測試,看看有沒有依次導出了sql,能不能將sql進行還原到數據庫。
然后
?-RepetitionInterval '00:03:00' -RepetitionDuration ([System.TimeSpan]::MaxValue)
這個代表每三分鐘執行一次,持續時間無限長,即一直執行。
在測試的時候可以修改時間進行測試。
比如將后面的持續時間為
?-RepetitionInterval '00:03:00' -RepetitionDuration '00:09:00'
那么就會三分鐘執行一次,一直到九分鐘。
在Windows中使用管理員打開PowerShell
然后進入到該腳本所在的目錄
首先更改執行策略
set-executionpolicy remotesigned
不然的話直接執行腳本會報錯
無法加載文件 某.ps1,因為在此系統上禁止運行腳本。
執行上面的更改執行策略后,輸入Yes
然后直接
./taskSyncData.ps1后面跟的是腳本名
然后打開電腦的任務計劃程序庫,并找到
\Microsoft\Windows\PowerShell\ScheduledJobs就可以看到新增了一個任務計劃
然后等一段時間就可以驗證在執行的目錄下是不是生成了sql文件。
并且修改一個數據庫數據和結構,另一個數據庫是不是也會同步過去。
?
?
?
總結
以上是生活随笔為你收集整理的Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙HarmonyOS环境搭建与Hell
- 下一篇: 信息系统项目管理师-项目集、项目组合管理