読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

MySQL でデータのバックアップ

MySQL
①データベース自体のバックアップ データベースをダンプします。 $ mysqldump -u ユーザ名 -p DB名 > 出力先ファイル名 ユーザ名:root DB名:testdb 出力ファイル:dump.sql とすると $ mysqldump -u root -p testdb > dump.sql 文字コードを指定する場合 $ mysqldump --default-character-set=utf8 -u ユーザ名 -p DB名 > 出力先ファイル名 すべてのデータをバックアップする場合 $ mysqldump -u root -x --all-databases > dump.sql ②データベースの復元 ターミナルで $ mysql -u ユーザ名 -p DB名 < ダンプファイル名 今回であれば $ mysql -u root -p newtestdb < dump.sql すべてのデータのバックアップを復元する場合 $ mysql -u root -p < dump.sql ③テーブルの複製 DBは残すけれど、テーブルを複製したい場合 複製元テーブル:pre_db 複製先テーブル:post_db まず同じフィールドを持つ空テーブルを作成。 mysql> CREATE TABLE post_db LIKE pre_db; 次にデータをコピー mysql> INSERT INTO post_db SELECT * FROM pre_db; ④空テーブルの作成(手作業) ローカルに複製したいテーブルを持っておらず、リモートにある場合は空テーブルの書式をダンプします。 リモートにある元のテーブルの書式を mysql> SHOW CREATE TABLE pre_db\G
*************************** 1. row ***************************
       Table: pre_db
Create Table: CREATE TABLE `pre_db` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
このように吐き出されるので、CREATE TABLE `pre_db` から始まる部分をコピペします。
mysql> CREATE TABLE `pre_db` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
これで同じフィールドの空テーブルが作成できます。 ソース: MySQLのdump(ダンプ)でデータをバックアップ/復元する MySQL テーブルの複製(コピー)を作成する