翻譯|使用教程|編輯:莫成敏|2020-01-02 15:30:03.120|閱讀 339 次
概述:在本文中,我們旨在提供一個工作示例,該工作示例備份由列表指定的數據庫,并對所有數據庫進行批量備份。該任務將通過dbForge Studio for MySQL來執行,該工具允許在命令提示符和PowerShell中執行常規任務。在本文中,我們將介紹這兩種變體。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
dbForge Studio for MySQL是一個在Windows平臺被廣泛使用的MySQL客戶端,它能夠使MySQL開發人員和管理人員在一個方便的環境中與他人一起完成創建和執行查詢,開發和調試MySQL程序,自動化管理MySQL數據庫對象等工作。
如果只需要管理幾個數據庫,則可以借助一些簡單的腳本或配置一個將自動執行備份的SQL Server代理,輕松、無縫地完成常規備份操作。但是有時候情況更加復雜。例如,當有數百個數據庫時,手動備份每個數據庫可能會非常耗時。
因此,對于開發人員和DBA而言,找到一種解決方案以允許備份所有數據庫或僅備份必需的數據庫而不影響服務器性能,這一點非常重要。
在本文中,我們旨在提供一個工作示例,該工作示例備份由列表指定的數據庫,并對所有數據庫進行批量備份。該任務將通過dbForge Studio for MySQL來執行,該工具允許在命令提示符和PowerShell中執行常規任務。在本文中,我們將介紹這兩種變體。
備份選定連接的所有數據庫
為了完成任務,我們需要創建一個腳本。
1、打開純文本編輯器,例如記事本。
2、輸入以下代碼:
Set-Location -Path "C:\Program Files\MySQL\MySQL Server 5.7\bin\" -PassThru .\mysql.exe --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN (' mysql', 'information_schema', 'sys', 'performance_schema')" | Out-File "D:\backup\all_databases_backup\PowerShell\alldatabases.txt" foreach($DBname in Get-Content "D:\backup\all_databases_backup\PowerShell\alldatabases.txt") {Write-Host $DBname &"C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:$DBname /outputfile:"D:\backup\all_databases_backup\PowerShell\all_DB_backup\$DBname.sql"}
Where:
C:\ Program Files \ MySQL \ MySQL Server 5.7 \ bin \ – MySQL服務器路徑。
D:\ backup \ all_databases_backup \ PowerShell \ all_DB_backup –計算機上用于存儲輸出文件的位置。
C:\ Program Files \ Devart \ dbForge Studio for MySQL \ dbforgemysql.com – dbForge Studio for MySQL路徑。
3、將自己的值分配給用戶ID、密碼、主機和端口參數。
4、保存文件擴展名為.PS1的文件(例如all_DB_backup.ps1)。
請注意,我們不打算在本文中解釋命令行語法的所有方面。
腳本執行
成功完成備份后,將創建一個包含SQL文件的文件夾all_DB_backup 。
從列表備份數據庫
為了完成任務,我們將需要以下文件集:
1、一個名為DB_list.txt的TXT文件,其中包含要備份的數據庫列表。
2、帶有腳本的PS文件。
首先,讓我們指定要備份的數據庫。
1、打開一個新的記事本文檔,并列出數據庫。
2、將新的TXT文件另存為DB_list.txt 。
請注意,數據庫列表應以列形式編寫,沒有任何分隔符,每個數據庫都換行。
然后,我們需要在PS1文件中創建一個腳本。
1、打開純文本編輯器,例如記事本。
2、輸入以下代碼:
foreach($DBname in Get-Content "D:\backup\all_databases_backup\PowerShell\DB_list.txt") {Write-Host $DBname &"C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:$DBname /outputfile:"D:\backup\DB_databases_backup\PowerShell\DB_list_backup\$DBname.sql"}
Where:
D:\ backup \ DB_databases_backup \ PowerShell \ DB_list_backup –計算機上用于存儲輸出文件的位置。
C:\ Program Files \ Devart \ dbForge Studio for MySQL \ dbforgemysql.com – dbForge Studio for MySQL路徑。
3、將自己的值分配給用戶ID、密碼、主機和端口參數。
4、保存文件擴展名為.PS1的文件(例如,DB_list_backup.ps1)。
腳本執行
成功完成備份后,將創建一個包含SQL文件的文件夾DB_list_backup 。
通過掩碼備份數據庫
為了完成任務,我們需要創建一個腳本。
1、打開純文本編輯器,例如記事本。
2、輸入以下代碼:
Set-Location -Path "C:\Program Files\MySQL\MySQL Server 5.7\bin\" -PassThru .\mysql.exe --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema') and s.SCHEMA_NAME like '%$args%' " | Out-File "D:\backup\all_databases_backup\PowerShell\DB_by_mask.txt" foreach($DBname in Get-Content "D:\backup\all_databases_backup\PowerShell\DB_by_mask.txt") {Write-Host $DBname &"C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:$DBname /outputfile:"D:\backup\all_databases_backup\PowerShell\DB_by_mask_backup\$DBname.sql"}
Where:
C:\ Program Files \ MySQL \ MySQL Server 5.7 \ bin \ –服務器路徑。
D:\ backup \ all_databases_backup \ PowerShell \ DB_by_mask_backup –計算機上用于存儲輸出文件的位置。
C:\ Program Files \ Devart \ dbForge Studio for MySQL \ dbforgemysql.com – dbForge Studio for MySQL路徑。
3、將自己的值分配給用戶ID、密碼、主機和端口參數。
4、保存文件擴展名為.PS1的文件(例如,DB_by_mask_backup.ps1)。
腳本執行
您需要使用額外的參數來執行腳本。例如,DB_by_mask_backup.ps1 test_DB_name。成功完成備份后,將創建一個包含SQL文件的文件夾DB_by_mask_backup 。
BAT文件
您還可以創建可執行的BAT文件,以通過命令行界面運行首要任務。
要創建BAT文件:
1、打開純文本編輯器,例如記事本。
2、輸入以下代碼:
SetLocal EnableExtensions EnableDelayedExpansion Set Backup="C:\Program Files\Devart\dbForge Studio for MySQL\dbforgemysql.com" goto DB_backup%1 rem backup of all databases :DB_backup :DB_backup1 "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema')" > "D:\backup\all_databases_backup\alldatabases.txt" FOR /F "eol=; tokens=1,2* delims=, " %%e in (alldatabases.txt) do ( %backup% /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:%%e /outputfile:"D:\backup\all_databases_backup\all_DB_backup\%%e.sql" ) goto finish rem backup databases from the list :DB_backup2 FOR /F "eol=; tokens=1,2* delims=, " %%e in (DB_list.txt) do ( %backup% /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:%%e /outputfile:"D:\backup\all_databases_backup\DB_list_backup\%%e.sql" ) goto finish rem backup databases by mask :DB_backup3 set mask='%%% %%2%%%' "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema') AND s.SCHEMA_NAME LIKE %mask%" > "D:\backup\all_databases_backup\DB_by_mask.txt" FOR /F "eol=; tokens=1,2* delims=, " %%e in (DB_by_mask.txt) do ( %backup% /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /database:%%e /outputfile:"D:\backup\all_databases_backup\DB_by_mask_backup\%%e.sql" ) goto finish :finish
Where:
C:\ Program Files \ MySQL \ MySQL Server 5.7 \ bin \ –服務器路徑。
D:\ backup \ all_databases_backup –計算機上用于存儲輸出文件的位置。
C:\ Program Files \ Devart \ dbForge Studio for MySQL \ dbforgemysql.com – dbForge Studio for MySQL路徑。
3、將自己的值分配給用戶ID、密碼、主機和端口參數。
4、保存擴展名為.bat的文件。
腳本執行
BAT文件使用以下輸入參數執行:
1或為空—將備份連接中的所有數據庫
2- 將備份DB_list.txt 文件中指定的所有數據庫
3“ mask”-將備份名稱與掩碼名稱匹配的所有數據庫。
執行的例子
所有數據庫:
all_DB_backup_with_param.bat
all_DB_backup_with_param.bat 1
列表中的數據庫:
all_DB_backup_with_param.bat 2
帶有掩碼的數據庫:
成功完成備份后,將創建一個包含SQL文件的相應文件夾:
all_DB_backup ——用于所有數據庫
DB_list_backup ——用于列表中的數據庫
DB_by_mask_backup ——用于由掩碼選擇的數據庫。
結論
MySQL Server備份是一項重要任務,旨在保護SQL Server數據庫中存儲的數據免受由于硬件故障、網絡入侵、人為錯誤等造成的重大損失。
在本文中,我們提供了一種解決方案,可以備份列表指定的數據庫并批量備份所有數據庫。為了完成此任務,我們創建了一個bat文件,只需單擊一下即可處理該任務。還提供了三個工作腳本,用于備份所有數據庫,從列表備份數據庫和通過掩碼備份數據庫。
本文內容到這里就完結啦,希望文章對您有所幫助~您可以繼續關注我們了解更多產品文章資訊,或者下載產品,親自體驗產品功能~
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: