关注「WeiyiGeek」公众号
将我设为「特别关注」,每天带你玩转网络安全运维、应用开发、物联网IOT学习!
测试环境: Server 2008 R2
所需软件:
- MySQLdump.exe
- msvcp120.dll x64/x86
- msvcr120.dll x64/x86
- powershell
- 7z
设置PowerShell策略:
PS C:\Users\Administrator> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
执行策略更改
执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies
帮助主题中所述的安全风险。是否要更改执行策略?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y
注册 mysqldump 依赖的dll
regsvr32 msvcr120.dll
regsvr32 msvcp120.dll
数据库相关信息查看:
# 1.版本
SELECT @@version;
# 2.指定数据库的表与表数据行统计查看
select table_name,table_rows from information_schema.tables where TABLE_SCHEMA = 'authcenter' order by table_rows desc;
备份脚本:
# ------------------------------- #
# Author:WeiyiGeek #
# PS: 数据库备份 & 应用备份 #
# Create: 2020年6月11日 21:34:40 #
# ------------------------------- #
# ----------------------------------------------------------------- #
# 全局变量
$GD=Get-Date
$TIME=$GD.ToString('yyyy-MM-dd_HHmmss')
$DATE=$GD.ToString('yyyy-MM-dd')
$global:BACKUP_SQLFILE = ""
# MySQL 备份程序
$MYSQL_DUMP="D:\mysql\bin\mysqldump.exe"
# 压缩SQL文件
$7Zfile = "C:\7-Zip\7z.exe"
$7ZPASS = "WwW.WeiyiGeek.top"
# 指定备份文件存放目录
$BACKUP_DIR = "D:/mysql/SQL-${DATE}"
$BACKUP_7ZDIR = "D:/mysql/7Z-${DATE}"
# FTP 上传
$FTP_IP = "192.168.12.31"
$FTP_PORT = "21212"
$FTP_USER = "User"
$FTP_PASS = "Pass"
# ----------------------------------------------------------------- #
# 验证备份文件夹是否创建
$FLAG=Test-Path -Path "$BACKUP_DIR"
if (!$FLAG ){
#New-Item -ItemType Directory -Path $BACKUP_DIR/ -Force
mkdir "$BACKUP_DIR"
}
# MySQL数据库备份链接
function dumpMysql {
param (
[string] $APP_HOST="",
[string] $APP_DBNAME="",
[string] $APP_DBU="",
[string] $APP_DBP="",
[int] $APP_PORT=3306
)
if([String]::IsNullOrEmpty($APP_HOST) -or [String]::IsNullOrEmpty($APP_DBNAME) -or [String]::IsNullOrEmpty($APP_DBU) -or [String]::IsNullOrEmpty($APP_DBP)){
Write-Host "# 备份 $APP_DBNAME 数据库错误 " -ForegroundColor red
[Environment]::Exit(127)
} else {
Write-Host "# 正在备份 $APP_DBNAME 数据库 " -ForegroundColor Green
$global:BACKUP_SQLFILE = "${APP_DBNAME}_${TIME}.sql"
Invoke-Expression "${MYSQL_DUMP} -h $APP_HOST -P $APP_PORT --default-character-set=UTF8 -u$APP_DBU -p$APP_DBP -B --databases $APP_DBNAME --hex-blob --result-file=$BACKUP_DIR/$BACKUP_SQLFILE"
}
}
# 7Z 压缩SQL文件
function Compress7Z {
# 判断压缩备份目录是否存在
$flag = Test-Path -Path "${BACKUP_7ZDIR}"
if (!$flag){
Write-Host "正在建立 $Dstdir 备份目录 " -ForegroundColor Green
New-Item -ItemType Directory -Path $BACKUP_7ZDIR -Force
}
Start-Process -FilePath $7Zfile -ArgumentList "a -p${7ZPASS} ${BACKUP_7ZDIR}\${BACKUP_SQLFILE}.7z $BACKUP_DIR\*_${TIME}.sql" -WindowStyle hidden
}
# 备份文件上传方式
function uploadBack {
param (
[string] $FLAG=""
)
# ftp 方式
if ( $FLAG -eq "ftp" ){
"open ${FTP_IP} ${FTP_PORT}" | Out-File ftp.tmp
"${FTP_USER}" | Out-File -Append ftp.tmp
"${FTP_PASS}" | Out-File -Append ftp.tmp
"bin" | Out-File -Append ftp.tmp
"mkdir ${DATE}" | Out-File -Append ftp.tmp
"cd ${DATE}" | Out-File -Append ftp.tmp
"put ${BACKUP_7ZDIR}\${BACKUP_SQLFILE}.7z" | Out-File -Append ftp.tmp
"quit" | Out-File -Append ftp.tmp
Start-Process ftp -ArgumentList "-i -s:ftp.tmp"
Remove-Item -Path ftp.tmp
}
}
# 调用MysqlDump函数执行下载(指定数据库拉取)
dumpMysql -APP_HOST 127.0.0.1 -APP_PORT 8066 -APP_DBNAME "AuthCenterschema" -APP_DBU "root" -APP_DBP "123456"
# 调用压缩
Compress7Z
# 调用上传
uploadBack -FLAG "ftp"
#Write-Host "# 正在输出备份数据库路径: $BACKUP_DIR" -ForegroundColor Green
#Get-ChildItem $BACKUP_DIR\*.sql
#Write-Host "# 正在输出压缩文件备份数据库路径: ${BACKUP_7ZDIR}" -ForegroundColor Green
#Get-ChildItem ${BACKUP_7ZDIR}\*.7z
exit
定时任务设置:
# 每周5的一点进行备份同步(不管用户是否登陆)
schtasks /create /TN mysql-backup /SC WEEKLY /D FRI /ST 01:00 /TR "powershell.exe d:\mysql\backup.ps1" /NP
备份测试:
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog 个人博客 - 为了能到远方,脚下的每一步都不能少 】
个人主页: 【 https://weiyigeek.top】
博客地址: 【 https://blog.weiyigeek.top 】
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情),这将对我的肯定,谢谢!。
-
echo "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"
-
printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")
-
fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")
-
console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")
-
System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")
-
cout << "【留个言】,文章写得好不好、有没有错误,一定要留言哟,亲! " << endl;
往期相关文章
1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
2.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(下)
8.Jenkins进阶之流水线pipeline基础使用实践(1)
9.Jenkins进阶之流水线pipeline基础使用实践(2)
11.Jenkins进阶之kubernetes集群搭建分布式架构基础环境
13.Jenkins进阶之自定义工作节点jnlp容器模板(附DockerFile)更新相关软件下载
更多网络安全、系统运维、应用开发、全栈文章,尽在【个人博客 - https://blog.weiyigeek.top】站点,谢谢支持!