mysqlpump

コマンド例

特定のDBかつ別ホストのDBかつ通信を圧縮するmysqlpump -u root -p -h 192.168.11.157 --databases cakephp --compress

Xtrabackup

mariabackup

mariabackup --backup -u root -pパスワード --target-dir /tmp/backup
mariabackup --prepare --target-dir /tmp/backup
cat /tmp/backup/xtrabackup_binlog_info
systemctl stop mariadb
rm -rf /var/lib/mysql/*
mariabackup --copy-back --target-dir /tmp/backup
chown -R mysql:mysql /var/lib/mysql/*
systemctl start mariadb

mysqldump

一貫性を保つために

5.7より前(つまり2019年でも)一貫性を保つためにmysqldumpのオプション指定が必要

オプション一覧

mysqldump --all-databases --lock-all-tables全テーブルロックで一番安全。ダンプ中にアプリケーションから更新処理が走る場合は下の選択肢
mysqldump --all-databases --single-transactionダンプ中にMyIsamテーブルを更新しない、innoDBスキーマを変更しない

インポート、エクスポート

CSVインポート

LOAD DATA LOCAL INFILE 'car_import.csv' INTO TABLE テーブル名 FIELDS TERMINATED BY ',';
LOAD DATA LOCAL INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
LOAD DATA LOCAL INFILE 'test.txt' INTO TABLE test (col1);

バックアップ&リカバリー

エクスポート

標準出力にでるのでリダイレクトで保存すること。以下のコマンドを追加して、圧縮しつつバックアップを取るとよい。

| gzip > dump.sql.gz
単位コマンド備考
テーブルmysqldump -u root -p --add-drop-table DB名 テーブル名drop tableを入れるオプション付き
テーブル where条件付きmysqldump -u root -p --add-drop-table DB名 テーブル名 --where 'is_delete = 0'drop tableを入れるオプション付き
データベースmysqldump -u root -p DB名dropテーブルは自動で入るようなので、空じゃないDBに入れるときは既存データなくなる!

スキーマのみ

テーブル単位

mysqldump -u root -p --add-drop-table DB名 テーブル名 > /var/tmp/rooms.sql
mysql -u root -p DB名 < /var/tmp/rooms.sql

データベース単位

バックアップ

mysqldump -u root -p データベース名 > mysql.sql
mysqldump -u root --password=パスワード データベース名 > mysql.sql
mysqldump -u root -p データベース名 | gzip > mysql.sql.gz

リカバリー

mysql> create database mysql2;
mysql> exit
mysql -u root -p mysql2 < mysql.sql
zcat mysql.sql.gz  | mysql -u root -p データベース名

全部のデータベース

バックアップ

mysqldump -u root -x --all-databases > dump.sql 

リカバリ

mysql -u root -p < dump.sql 
Counter: 2715, today: 1, yesterday: 2

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS