MySQLから特定のテーブルだけをdumpしてバックアップする
mysqldumpというコマンドで、任意のデータベースのバックアップを取ることができます。
$ mysqldump -u USER -p DB_NAME > file.sql
例えばあるWordPressのデータのDumpを取るならこんな感じでしょうか。
広告
$ mysqldump -u hoge -p mywordpress > wpdump.sql
しかし、DB全体じゃなくて、特定のテーブルだけ保存しておきたいことってありますよね。
そんなときは、単純にDB名の後にテーブル名だけ付けてあげればOK。
$ mysqldump -u USER -p DB_NAME TABLE_NAME > file.sql
今回私は、WordPressの記事の一部を置換(ドメイン変更に伴い旧記事の画像リンクを変換)したかったので、記事情報の入っているwp_postsだけバックアップをします。
$ mysqldump -u hoge -p mywordpress wp_posts > wpdump.sql
ちゃんとできてるかな?headで最初の方だけ見てみましょう。
[hoge@dacelo ~]$ head wp_posts.sql
-- MySQL dump 10.16 Distrib 10.1.33-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: dacelo_wordpress
-- ------------------------------------------------------
-- Server version 10.1.33-MariaDB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
よし、オッケー!
テキストファイルで渡す場合
もし、テーブル名が複数なら、後ろにずらずらくっつけていけばいいだけ。
$ mysqldump -u hoge -p mywordpress wp_posts wp_comments > wpdump.sql
もしテーブル名があまりに多くてコマンドラインに書くとうるさくなっちゃうようだったら、別途テキストファイルを用意して、改行区切りでテーブルを列挙しておいて…
$ vi wp_posts wp_comments wp_commentmeta
$ mysqldump -u USER -p DB_NAME 'cat tablelist.txt' > file.sql
みたいな感じでやれば良いです。