3

私の質問は少し具体的ですが、誰かがこの問題を経験したことを願っています。

MySql for Windows がインストールされた Windows 2008 サーバーを実行しています。これはMySql 5.2で、そのパッケージには「MySql Administrator」が含まれています。そこで、特定のデータベースのバックアップを作成できます。バックアップを構成し、毎日午前 3 時頃に実行する必要があると言うと、自動的に機能しません。「今すぐバックアップを実行」を押して .SQL ファイルを保存すると、バックアップ自体が正常に機能します。自動的に起動するように依頼しても、何も作成されず、ログ ファイルも作成されません。選択したフォルダの権限を確認し、すべての権限を持つユーザー「Everyone」を追加して、権限の問題を除外しました。無効。

私は一日中グーグルをしてきましたが、これに対する解決策が見つかりません。MySQL 管理者による自動バックアップが MS Windows 2008 で機能しない理由と、ログ ファイルを作成しない理由を知っている人はいますか?

4

7 に答える 7

3

最小限の権限を持つユーザーを作成する

mysql> grant select,lock tables on foo.* to bar@localhost identified by'backup'; 
mysql> flush privileges;

次のようにバッチファイルを作成し、それをスケジュールします *これにより、指定されたパスにデータベース名+日付と時刻でファイルがバックアップされます*

@echo off
set mySqlPath=C:\[path to my sql]\mysql5.1.36
set dbUser=bar
set dbPassword=backup
set dbName=MyDB1

set hr=%time:~0,2%
if "%hr:~0,1%" equ " " set hr=0%hr:~1,1%

set file=%dbName%.%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%.sql
set path=C:\[path to folder]\mysql_bak

echo Running dump for database %dbName% ^> ^%path%\%file%
"%mySqlPath%\bin\mysqldump.exe" -u %dbUser% -p%dbPassword% --result-file="%path%\%file%" %dbName%
echo Done!
于 2013-08-31T13:13:20.503 に答える
2

Windows 7 でバージョン 1.2.17 も使用してみました。同じ問題に直面しました。MySQL ADMIN は、Windows スケジューラを介してバックアップをスケジュールしています。理由はよくわかりませんが、ADMIN アカウントを持つユーザーでバックアップをスケジュールしたとき (新しく作成したプロジェクトを保存したとき) は動作しませんでした。標準のアカウントでバックアップをスケジュールすると、正常に動作しました。この問題を解決するために、WIN 7 で新しい標準アカウントを定義しました。メイン アカウントで win 7 にログインし、新しいアカウントでバックアップをスケジュールしています。今では正常に動作します。

于 2012-01-03T14:16:15.850 に答える
1

Windowsの「cron」ジョブに関連している可能性があります。とにかく、これは私のためにトリックを行います:

http://realm3.com/articles/how_to_schedule_regular_mysql_backups_in_windows

もちろん、すべてを手作業で行う必要がありますが、その方が優れています。Windowsの「at」はLinuxの「cron」とは異なるため、PostgreSQLでも同じ問題が発生しました。それ以来、私は独自の「cron」ジョブを実行し始めました。

これもチェックしてください: http://kedar.nitty-witty.com/blog/scheduled-backup-mysql-administrator-windows-scheduler-odd

それが役に立てば幸い!:)

于 2011-11-07T12:14:35.337 に答える
1

他の人が楽しめるように、私の発見を投稿します。

MySQL Administrator のバックアップ機能を自動的に動作させるのではなく、代わりに @mOrSa の提案を使用しました

私の発見はこれらです:私はこのコードを使用してバッチファイルを作成しました:

@echo off
set zy=2011
set zm=1
set zd=17
set zz = ((zy*100)+zm)*100+zd
Set hr=%TIME:~0,2%
Set mn=%TIME:~3,2%
echo Running dump...
C:\Progra~1\MySQL\MYSQLS~1.5\bin\mysqldump -uuser -password --port=3307 --result-file="c:\MySqlBackups\backup_%zz%_%hr%%mn%.sql" meibergen_dbo
echo Done!
echo Deleting old files
forfiles /P "C:\MySqlBackups" /S /M *.sql /D -7 /C "cmd /c del @PATH"
echo Done!

これにより、選択したフォルダー内に「backup_20110825_14:54.sql」という名前の形式の .SQL ファイルが作成されます。また、そのフォルダー内の 7 日より古いすべてのファイルを削除します。Windows Server 2008 を使用しているため、system32 フォルダー内に "forfiles.exe" ファイルが標準でインストールされます。そのプログラムをお持ちでない場合は、無料でダウンロードできます。

その後、Windows タスク スケジューラでこのバッチ ファイルを実行するスケジュールされたタスクを設定しました。スケジューラーで適切な権限を与えていることを確認してください。毎日実行されます。

于 2011-11-08T13:00:28.873 に答える