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

みたいな感じでやれば良いです。

広告

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *