MySQLのバックアップについて

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 MySQLのバックアップについて

10 件の投稿を閲覧中 - 1 ~ 10 件(全 13 件)
  • 著者
    投稿
  • #7549
    koni
    一般参加者

    いつもお世話になっております。

    「購買管理アプリケーション作成チュートリアル」を参考にMySQLデータのバックアップを検討しております。
    ダンプ処理において、ローカルPCでは成功したのですが、リモート接続で実行されないという状況となっています。

    状況としては、購買管理チュートリアル内の「ローカルMySQL設定」にサーバのホスト名・ユーザ名などを入力した時、接続はできております。
    しかし、ダンプ処理を実行するとコンポーネント「ファイル選択」の「カレントディレクトリ」は表示されますが、保存押下後、エラー表示も出ずにファイルも生成されないという状況です。

    また、手動でダンプする時はコマンドプロンプトで以下コードを入力して成功できております。
    mysqldump –no-tablespaces -h (ホスト名) -u (ユーザー名) -p (DB名) > (ローカルPCのパス)

    よろしくお願いいたします。

    #7554
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    購買管理チュートリアルで使用しているローカルMySQLの管理画面は、元々工程管理アプリケーション簡易版で使用している複合コンポーネントと同一のものです。チュートリアルを簡単に進めるためにコピーして使用しています。
    大変申し訳ございませんが、工程管理アプリケーション簡易版ではダンプの生成の機能はデータ連携機能を使用している場合のみ有効で、また購買管理アプリケーション内ではこの機能を使用しておりません。
    ダンプ生成のボタンはMySQLdump.exeへのパスを指定するものです。アプリケーション内でダンプ処理は行われておりません。大変お手数をお掛けして申し訳ございませんでした。

    ボタンを押したらデータベースの内容をダンプファイルへ出力する処理を行うには[外部プログラム通信]でバッチファイルを起動することが考えられます。

    1)バッチファイルを準備します。
    ファイルは例えば以下のように準備できます。
    (1)C:\MZPlatform\4.0\AP_DATA\Production内のdbsetup80.batをWindowsアプリのメモ帳で開き、別名で保存します。

    (2)以下の内容を確認します。MySQLのフォルダーの位置やバージョンをご自分の環境に合わせてご確認ください。
    ——————————-
    「set MYSQL_HOME=C:\Program Files\MySQL\MySQL Server 8.0
    if not exist “%MYSQL_HOME%” set MYSQL_HOME=C:\Program Files (x86)\MySQL\MySQL Server 8.0
    “%MYSQL_HOME%\bin\mysql.exe” -u root -p < production.sql」 ------------------------ (3)3行目のみを書き換えます。他は変更しません。 3行目は書いていただいた通り、以下のようになるかと思います。 "%MYSQL_HOME%\bin\mysqldump.exe" –no-tablespaces -h (ホスト名) -u (ユーザー名) -p (DB名) > (ローカルPCのパス)

    (4)ファイル名を確認して保存します。

    2)[ボタン]のアクションイベントの接続先処理に[外部プログラム通信]を設定します。メソッドは「標準のアプリケーションでファイルを開く(File)」です。引数にバッチファイルまでのパスを指定します。

    3)ボタンを押すとmysqldump.exeが起動されます。

    以上お試しいただき、ご不明な点やご要望等ございましたら、再度ご連絡いただければ幸いです。どうぞよろしくお願い申し上げます。

    #7559
    koni
    一般参加者

    ご回答ありがとうございます。
    問題なくダンプをすることができましたが、コマンドプロンプトの「続行するには何かキーを押してください」の画面が表示されます。本表示を起動させずに、sqlファイルのみを保存する方法はあるのでしょうか。
    よろしくお願いいたします。

    #7561
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。
    工程管理アプリケーションのデータベース設定用のバッチファイルを流用しているため、「pause」コマンドが残っています。
    バッチファイルの一番最後の行の「pause」を削除してお試しください。
    よろしくお願いいたします。

    #7562
    koni
    一般参加者

    ご回答ありがとうございます。
    pauseを削除したところ、問題なく動作することができました。

    さらに追加の質問になりますが、sqlファイルの保存名は(ローカルPCのパス)にて「〇〇.sql」として設定すると思いますが、「20240513_〇〇.sql」のように日付を入れての保存したいと考えています。

    バッチファイルの中身にはなりますが、このような設定にすることは可能でしょうか。
    最終的にはコンポーネント「タイマー」を使用して、数日に1回のペースなどで自動的にバックアップできればと検討しています。

    よろしくお願いいたします。

    #7565
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    sqldum実行前に逐次batファイル中のファイル名の記述を変更する必要がありますが、[テキストファイル入力]を使ってbatファイルの内容を読み込み、現在日時の日付に該当箇所を置換えて[テキストファイル出力]で出力・保存することが考えられます。
    現在日時の取得には[システム情報]または[カレンダー]を使用します。

    文字列の置き換えには[文字列格納変数]を使いますが、置き換え対象となる文字列は、正規表現で「[0-9]+」(1桁以上の0から9までの数字)と「_〇〇」の部分を組み合わせて指定します。
    数字だけだと文中の他の数字を拾ってしまう恐れがあるため接尾の「_〇〇」も一緒に指定した方が良いかと思います。

    上記置換え処理の確認のため、簡単なサンプルファイルを添付いたしますので、ご確認ください。
    ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
    どうぞよろしくお願い申し上げます。

    添付ファイル:
    #7574
    koni
    一般参加者

    ご回答ありがとうございます。
    サンプルファイルを参考に、ファイル名を「日付_〇〇」に指定してバックアップをすることができました。

    追加の質問になりますが、サンプルファイルを参考にして、以下の流れで実行しようと検討しています。

    ①元のバッチファイルを準備する
    (例:backup.bat…ダンプファイル名の指定箇所を【TEST.sql】としておく)
    ②元のバッチファイルから、日付_DB名.sqlを作成するためのバッチファイルを生成する
    (例:日付_DB名.bat…ダンプファイル名をTESTから【日付_DB名.sql】に置き換える)
    ③②で生成したbatファイルを読み込んで、バックアップを実行する。
    ④バックアップを実行後、②で生成したbatファイルを削除する。

    ①~③までは実現することができましたが、「④のbatファイルを削除する」をMZ上で処理することは可能でしょうか。
    厳密に言えばbatファイルを削除する必要はないかもしれませんが、指定したファイルを削除する方法があれば、知っておきたいと思い質問させていただきます。

    今後ともよろしくお願いいたします。

    #7575
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    ファイルの操作については[ファイル]コンポーネントを使用します。
    [ファイル]にメソッド「ファイル名を設定する(String)」などでファイルを指定し、メソッド「削除(配下に何も存在しない場合)()」を実行します。他に「ディレクトリ、およびその配下を全て削除()」もあります。
    確認メッセージなどは表示されず、ごみ箱に残ることもなく簡単に削除されてしまうので、注意が必要です。

    以上、ご不明な点がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7576
    koni
    一般参加者

    ご回答ありがとうございます。

    下記の流れで実行しましたが、外部プログラム通信(bat実行)の直下に「ファイル削除」の処理を接続すると、バッチファイルの実行前に、「ファイル削除」されてしまうようです。。
    bat実行の下に「タイマー」などで時間差を置いて「ファイル削除」をした方が良いのでしょうか。それとも他に方法があればご教授いただければと思います。

    <処理の流れ>
    ボタン(アクションイベント)⇒外部プログラム通信(bat出力)
                  ⇒ファイル(ファイル名を設定)
                  ⇒ファイル(削除)
    よろしくお願いいたします。

    #7578
    koni
    一般参加者

    ご回答ありがとうございます。
    度々の問い合わせとなり申し訳ありませんが、質問させていただきます。
    作業中のMZファイルとバッチファイルを添付させていただきますので、ご教授いただければと思います。

    パターン②でのフレームを表示させて実行する時には問題なく動作しますが、パターン①のサブルーチンでの処理とすると、処理がされないようです。パターン①でもデバックでの操作では、処理が可能な状況です。

    社内説明用を想定しコメントを多く記載しておりますが、ご容赦ください。
    よろしくお願いいたします。

10 件の投稿を閲覧中 - 1 ~ 10 件(全 13 件)
  • このトピックに返信するには、ログインしてください。