日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步

發布時間:2025/3/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据之间的同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。