mysqldumpの指定テーブルのスキップ


title:mysqldumpの指定テーブルtagsのスキップ:
  • mysql
  • mysqldump
  • ignore-table
  • バックアップcategories:mysql date:2017-07-25 18:53
  • 背景


    現在、システムでは、期首データ期末データなどのデータ検証のためにビジネスデータをバックアップしているため、バックアップテーブルが大量に発生しています.バックアップ・フォーム・テーブルのデータは、ビジネスの増加に伴って増加し続けます.夜間のバックアップデータが長すぎます.

    もとの方法

        ./mysqldump -uroot -proot  --skip-lock-tables --databases f6dms_1116_prod_backup| gzip > /home/opt/database_`date '+%m-%d-%Y'`.sql.gz;
    

    これにより、バックアップ時間が長くなり、ファイルが大きすぎる(時間が経つにつれてテーブルが大きくなり、テーブルが多くなる)
    現在jenkinsリモートssh呼び出しスクリプトを使用してmysqldumpをリモートでバックアップしています.

    私の考え

  • mysqldumpはバックアップ指定ライブラリをサポートしていますが、dbに他のバックアップを行うことができますか?
  • バックアップ指定プレフィックスを無視するテーブル
  • 解決策

  • は比較的簡単で、
  • を省略しています.
  • mysqldumpは、ignore-tableをサポートしていますが、ワイルドカードはサポートされていません.mysqldumpのコマンドを生成することで完了できます.指定した名前についてはshow tablesで実現できます.したがって、以下の
  •         ./mysqldump -uroot -proot  --skip-lock-tables --databases f6dms_1116_prod_backup $(mysql -uroot -proot -Df6dms_1116_prod_backup -Bse "show tables like 'tm_monitor_avg_price_%'"|awk '{print "--ignore-table=f6dms_1116_prod_backup."$1}'|xargs)| gzip > /home/opt/database_`date '+%m-%d-%Y'`.sql.gz;
    
     db