MySQL 手動バックアップ

データベースMySQL

最終コード

 状態:-  閲覧数:1,021  投稿日:2014-10-12  更新日:2017-01-11
root権限は必須
# mysqldump -u 全データベース共通ユーザ名 -p --all-databases > /var/www/lib/mysql-backup/dbbackup_`date +%Y%m%d%H%M%S`.sql


コマンド

 閲覧数:143 投稿日:2014-10-12 更新日:2017-01-11 


基本コマンド


# mysqldump -u 全データベース共通ユーザ名 -p --all-databases > /var/www/lib/dbbackup_`date +%Y%m%d%H%M%S`.sql
Enter password: 
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
mysqldump: Got error: 1016: Can't open file: './データベース名/テーブル名.frm' (errno: 24) when using LOCK TABLES


▼dbbackup_20141012093846.sql
・730MB


ディレクトリ作成


$ sudo -s
# mkdir /var/www/lib/mysql-backup
# mysqldump -u 全データベース共通ユーザ名 -p --all-databases > /var/www/lib/mysql-backup/dbbackup_`date +%Y%m%d%H%M%S`.sql
Enter password: 
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
mysqldump: Got error: 1016: Can't open file: './データベース名/テーブル名.frm' (errno: 24) when using LOCK TABLES



ダンプ時に文字コード変換をしない
--default-character-set=binary
・dumpするとUTF-8変換するため、それ以外の文字列のDBを出力やバックアップを実施する際はbinaryオプションで文字化けを回避
・逆に言えば、UTF-8のDBでは付与する必要なし

mysqldump: Got error: 1016: Can't open file: './データベース名/テーブル名.frm' (errno: 24) when using LOCK TABLES

 閲覧数:402 投稿日:2014-10-14 更新日:2014-10-14 

エラー内容


・テーブルロックしているため、ファイルが開けません


エラー原因


mysqldumpは実行時にテーブルロック
・mysqldumpでは実行時にテーブルロックを行なっているため、テーブル数が多過ぎるとエラーが発生する

オープン可能なファイル数の制限
・オープン可能なファイル数の制限(システム上限値)に抵触した場合でもこのエラーが発生


対策は2つ


1.--skip-lock-tables を付与してmysqldump実行
・テーブルをロックしないため、実行中にデータが変更される恐れあり

2. my.cnfでopen_files_limit を追記することで、リミット数を増加
・mysqld が同時に使用可能なファイル数は open_files_limit というパラメータで指定

対策1.--skip-lock-tables を付与してmysqldump実行

 閲覧数:391 投稿日:2014-10-14 更新日:2014-10-14 

エラー発生


--skip-lock-tables付与したのに、 mysqldump失敗
# mysqldump -u 全データベース共通ユーザ名 -p --all-databases --skip-lock-tables > /var/www/lib/mysql-backup/dbbackup_`date +%Y%m%d%H%M%S`.sql
mysqldump: Couldn't execute 'show fields from `テーブル名`': Out of resources when opening file '/tmp/#sql_533_0.MYD' (Errcode: 24) (23)

・テーブル内容に問題があるのかと思い確認するも、中身は空(レコード件数 0)


リミット値を確認


# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7811
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7811
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


確認すべきポイント
open files                      (-n) 1024

・オープン可能なファイル数の制限(システム上限値) … 「1024 files open」
・この指定が大規模なデータベース上の問題を引き起こす

問題を解決する方法
・「/etc/security/limits.conf」を編集する
・…と書かれているのだが、英語読解力に自信がないため、下記対策2を試すことにする

対策2. my.cnfでopen_files_limit を追記することで、リミット数を増加

 閲覧数:572 投稿日:2014-10-14 更新日:2016-09-10 

リミット値書換


設定ファイルバックアップ
# cp /etc/my.cnf /etc/my.cnf.org.20141014

設定追加
# vim /etc/my.cnf
[mysqld]
open_files_limit=2048
"my.cnf" 23L, 438C 書込み  

     

MySQL停止                                                                  
# service mysqld stop
mysqld を停止中:                                           [  OK  ]


MySQL起動      
# service mysqld start
mysqld を起動中:                                           [  OK  ]



MySQLバックアップ


mysqldump再度実行
# mysqldump -u 全データベース共通ユーザ名 -p --all-databases > /var/www/lib/mysql-backup/dbbackup_`date +%Y%m%d%H%M%S`.sql
Enter password: 
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.






MySQLバージョン確認

MySQL 5.5 から 5.6 へのアップグレード



週間人気ページランキング / 9-14 → 9-20
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 29
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 21
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
4 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 10
5 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 9
6 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 8
7 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 7
7 さくらVPS0 7
8 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
9 PHPファイルでchmodエラー | PHP(プログラミング言語) 5
9 設定 2019/1/22 / 一般ユーザがmailコマンドでメール送信 / 管理者がmailコマンドでメール送信 5
10 Postfix | メール処理システム 4
10 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 4
10 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
10 tar | Linuxコマンド 4
10 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 4
10 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 4
10 echo と cat の違い 4
2021/9/21 1:01 更新