TrinityT’s LABO このページをアンテナに追加 RSSフィード Twitter

2015-02-04 MYSED

MySQL][Linux?MySQLのダンプファイルから特定のテーブルのリストアデータを抽出する方法

本番データの一部を書き戻す必要があり、巨大なダンプデータから必要なテーブルのデータだけを抽出する必要があったのでメモ。

cat <ダンプファイル> | sed -n '/DROP TABLE IF EXISTS `<対象テーブル名>`/,/Table structure for table `<対象テーブルの次のテーブル名>`/p' > ~/<対象テーブル名>.sql

※ダンプデータがgzip圧縮されている場合
zcat <ダンプファイル> | sed -n '/DROP TABLE IF EXISTS `<対象テーブル名>`/,/Table structure for table `<対象テーブルの次のテーブル名>`/p' > ~/<対象テーブル名>.sql

chatsテーブルの書き戻し [ダンプデータ内でchatsテーブル、diariesテーブルの順に並んでいると仮定]

zcat dump.tar.gz | sed -n '/DROP TABLE IF EXISTS `chats`/,/Table structure for table `diaries`/p' > ~/chats.sql

ファイルにはDROP、CREATE定義なども含まれているのでそのままリストア実行可能。
mysql -u hoge -p testdb < chats.sql

※上記例ではテーブルの並び順が最後のものでは使用できないので、その場合は以下のようにダンプ終了文字列を区切りにすると良さげ。

zcat dump.tar.gz | sed -n '/DROP TABLE IF EXISTS `worlds`/,/Dump completed on/p' > ~/chats.sql

補足

csplitを利用してテーブル毎のファイルを作る方法もあるが、以下の理由により採用しなかった。

  • 他の不要なテーブルのデータが解凍されてディスク容量と処理時間が圧迫される
  • zcat&csplitの組み合わせで「csplit: メモリを使い果たしました」エラーが発生してしまうケースがある

参考URL

2014-12-25

Linux GUIなしの環境において、CUIのみでDropboxを同期する

ドキュメントをサーバ上で同期したかったため、CUIDropbox連携を行う方法を簡潔にまとめてみた。

前提OSCentOS 5.6_64bit

1.クライアントインストール

Homeディレクトリインストールする。

cd ~/
wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

※参照:https://www.dropbox.com/install?os=lnx



2.デーモンの起動

~/.dropbox-dist/dropboxd &
このコンピュータは Dropbox アカウントにリンクされていません...
このデバイスをリンクするには、https://www.dropbox.com/cli_link_nonce?nonce=hogehoge にアクセスしてください。
...


3.アカウントのリンク

任意のブラウザでリンクしたいアカウントDropboxログイン→先ほどのコンソールで表示されたURLにアクセスして許可を取る

※勘違いしやすい点だが、本処理はサーバー上ではなく自分のローカル環境で良い。

完了後、以下のようにリンクが許可されて同期が開始される。

このデバイスをリンクするには、https://www.dropbox.com/cli_link_nonce?nonce=hogehoge にアクセスしてください。
...
このコンピュータは Dropbox にリンクされました。ようこそ、fugafuga さん。


4.コマンドラインインタフェースツールの配置

以上の手順ではデフォルトDropboxディレクトリ「~/Dropbox」上に同期されるが、Lan同期や帯域幅など細かい調整を行うためコマンドラインインタフェースツールをインストールすると良い。

mkdir bin
cd bin/
wget -O dropbox http://www.getdropbox.com/download?dl=packages/dropbox.py
chmod +x dropbox

./dropbox 
Dropbox command-line interface

commands:

Note: use dropbox help <command> to view usage for a specific command.

 status       get current status of the dropboxd
 help         provide help
 puburl       get public url of a file in your dropbox
 stop         stop dropboxd
 running      return whether dropbox is running
 start        start dropboxd
 filestatus   get current sync status of one or more files
 ls           list directory contents with current sync status
 autostart    automatically start dropbox at login
 exclude      ignores/excludes a directory from syncing
 lansync      enables or disables LAN sync
例:LAN同期を止める場合
dropbox lansync n

2013-07-12 RRdirect

iframeで動くRailsサイトでリダイレクト時に画面全体を更新する方法

Opensocialのゲーム等、iframe内部で動いているサイトで特定画面にリダイレクトする際、frame内部だけでなく画面全体を更新する方法。

render時にJavascriptリダイレクトするのが良さげ。

  render :text => "<script>top.location.href = '/hoge';</script>"

参考URLhttps://www.ruby-forum.com/topic/186344

2013-02-18 jvmwana

FlexSDKコンパイル時の「Java heap space」エラー回避方法

デプロイ時にFlexコンパイルを伴う処理を行なっていたが「Java heap space」エラーが多発する現象が発生。

解決方法がわかりにくかったのでまとめておく。

MacLinuxの場合

sdkインストールパス/bin/mxmlcファイルを開いて「VMARGS」を書き換える。

●mxmlc
〜
VMARGS="-Xmx384m -Dsun.io.useCanonCaches=false" ←ここを書き換え
例)
VMARGS="-Xmx1024m -Dsun.io.useCanonCaches=false"

Windowsの場合

sdkインストールパス/bin/jvm.configファイルの「java.args」を書き換える。


●jvm.config

〜
# Arguments to VM
java.args=-Xmx384m -Dsun.io.useCanonCaches=false ←ここを書き換え
例)
java.args=-Xmx1024m -Dsun.io.useCanonCaches=false

あとがき

ググったら「flexコンパイルJava heap spaceエラーが出たらjvm.configを修正する」という解決策が頻繁に出てくるので、

「FlexSDKのコンパイラWindowsでの環境でのみjvm.configの設定値を使用する」という点に気づかないでドハマりした。

公式ヘルプをよく読むと、

mxmlc シェルスクリプトCygwin などの UNIX シェルエミュレータを実行中の UNIXLinux、または Windows 用)は設定ファイルを必要としません。JVM パラメータシェルスクリプトファイル内に設定します。」

という記述がサラっと書いてあった。。。

2012-10-27

Capistranoでリポジトリを変更した際にcached-copyデータを消す

Capistranoでは高速化のためのdeploy_via:remote_cacheオプションを使ってshared/cached-copyにキャッシュしておけるが、

このデータはデプロイ時の参照リポジトリが変わった際消す必要がある。

APサーバが大量にあったので手で消すのは大変なためタスクを書いた。

namedscope :deploy do
...

  task :delete_git_cached_copy do
    run "rm -rf #{shared_path}/cached-copy"
  end
...
end

以下コマンドで全サーバのcached-copyを消すことができる。

cap  deploy:delete_git_cached_copy