yum install pv pv mysqldump.sql | mysql -uroot -phogehoge
innodb_flush_log_at_trx_commit = 1 | 3:44 |
innodb_flush_log_at_trx_commit = 0 | 3:42 |
innodb_flush_log_at_trx_commit = 2 | 3:41 |
binlog無効 | 3:03 |
xtrabackup | 16秒! |
innodb_flush_log_at_trx_commitだけでは、binlog書き込みがボトルネックなので有意差なし。
https://github.com/maxbube/mydumper/releases
# エラーは-fで無視する mysql -u root -phogehoge -f < mysqldump.sql
https://blog.manabusakai.com/2017/03/difference-between-mysql-and-aurora/
https://helen.hatenablog.com/entry/2019/06/13/200022
特定のDBかつ別ホストのDBかつ通信を圧縮する | mysqlpump -u root -p -h 192.168.11.157 --databases cakephp --compress |
xtrabackup --backup -u root -pパスワード --target-dir /tmp/backup
mkdir -p /tmp/aurora/backup
xtrabackup --backup --user=root --password=XXXX --stream=xbstream \
aws s3 sync /tmp/aurora/backup/ s3://DEST_BUCKET/ --profile=xxx
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
5.7より前(つまり2019年でも)一貫性を保つためにmysqldumpのオプション指定が必要
--no-data
--no-create-info
mysqldump --all-databases --lock-all-tables | 全テーブルロックで一番安全。ダンプ中にアプリケーションから更新処理が走る場合は下の選択肢。xでも同じことだがあとで見た時に意味不明なのでやめる |
mysqldump --all-databases --single-transaction | ダンプ中にMyIsamテーブルを更新しない、innoDBスキーマを変更しない |
--flush-logs | ダンプ時にバイナリログをリセットする |
--master-data=2 | バイナリログの位置をコメントで出力。レプリケーションやPITRに便利 |
--events | イベント関連のテーブルを明示的にバックアップする。 --all-databasesをつけていると除外されてワーニングがでるので、一緒につけることが多い |
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