]> git.p6c8.net - psmysqlbackup.git/blobdiff - psmysqlbackup.ps1
Added comments, especially for config
[psmysqlbackup.git] / psmysqlbackup.ps1
index 7e870ea347ab50e52f4dfd556e92dc07af29a8b1..e7b2f5fbfd43e416beeb9397a207656a7df4dbf2 100644 (file)
@@ -8,19 +8,30 @@
 
 # Config
 
+# MySQL host
 $configMysqlHost = "localhost"
+# Port of MySQL host
 $configMysqlPort = 3306
+# MySQL user using to connect to MySQL
 $configMysqlUser = "backup"
+# Password for MySQL user
 $configMysqlPassword = "backup"
 
+# Path to MySQL CLI program
 $configMysqlCli = "C:\Program Files\MariaDB 10.5\bin\mysql.exe"
+# Path to mysqldump CLI program
 $configMysqldumpCli = "C:\Program Files\MariaDB 10.5\bin\mysqldump.exe"
 
+# Directory where to store the backups
 $configBackupDir = "backup"
+# Number of backups to keep, set to 0 to keep all backups
 $configRotate = 7
 
+# Databases to backup, leave empty to backup all databases
 $configDbBackup = @()
+# If $configDbBackup is empty, don't backup the databases defined here
 $configDbExclude = @("test")
+# If $configDbBackup is empty, don't backup the databases matching these patterns
 $configDbExcludePattern = @()
 
 # End of config
@@ -69,6 +80,7 @@ $defaultDbExclude = @("information_schema", "performance_schema")
 
 $currDaytime = Get-Date -format "yyyyMMdd-HHmmss"
 
+# Get a list of all databases
 try {
     $databases = Get-Databases | Where-Object {!($_ -in $defaultDbExclude)}
 }
@@ -78,6 +90,8 @@ catch {
     exit 1
 }
 
+# Create a list of databases to backup
+
 $databasesToBackup = @()
 
 if($configDbBackup -and $configDbBackup.count -gt 0) {
@@ -91,7 +105,8 @@ if($configDbBackup -and $configDbBackup.count -gt 0) {
     }
 }
 else {
-    :excludeOuter foreach($rDb in $databases) {
+    :excludeOuter
+    foreach($rDb in $databases) {
         if($rDb -in $configDbExclude) {
             continue;
         }
@@ -106,11 +121,19 @@ else {
     }
 }
 
+# Iterate over the list of databases and back them up and rotate the backups
 foreach($d in $databasesToBackup) {
     $databaseBackupDir = Join-Path -Path $configBackupDir -ChildPath $d
 
     if(!(Test-Path $databaseBackupDir)) {
-        New-Item -ItemType directory -Path $databaseBackupDir -ErrorAction Stop | Out-Null
+        try {
+            New-Item -ItemType directory -Path "$databaseBackupDir" -ErrorAction Stop | Out-Null
+        }
+        catch {
+            Write-Output "Failed to create directory $databaseBackupDir"
+            Write-Output $_
+            exit 1
+        }
     }
 
     $databaseBackupFile = Join-Path -Path $databaseBackupDir -ChildPath "backup-$d-$currDaytime.sql"

patrick-canterino.de