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

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

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 30
 start-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所在的目录去决定

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

运行脚本

以上脚本里面执行的cmd命令为了验证其效果,可以将每个cmd所需要执行的命令

在cmd中单独执行下进行测试,看看有没有依次导出了sql,能不能将sql进行还原到数据库。

然后

 -RepetitionInterval ’00:03:00′ -RepetitionDuration ([System.TimeSpan]::MaxValue)

这个代表每三分钟执行一次,持续时间无限长,即一直执行。

在测试的时候可以修改时间进行测试。

比如将后面的持续时间为

 -RepetitionInterval ’00:03:00′ -RepetitionDuration ’00:09:00′

那么就会三分钟执行一次,一直到九分钟。

在Windows中使用管理员打开PowerShell

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

然后进入到该脚本所在的目录

首先更改执行策略

set-executionpolicy remotesigned

不然的话直接执行脚本会报错

无法加载文件 某.ps1,因为在此系统上禁止运行脚本。

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

执行上面的更改执行策略后,输入Yes

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

然后直接

./taskSyncData.ps1

后面跟的是脚本名

然后打开电脑的任务计划程序库,并找到

\Microsoft\Windows\PowerShell\ScheduledJobs

就可以看到新增了一个任务计划

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

然后等一段时间就可以验证在执行的目录下是不是生成了sql文件。

并且修改一个数据库数据和结构,另一个数据库是不是也会同步过去。

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

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136311.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!