2014/03/31

MySQL SLAVE 設定 削除

・MySQL-5.5よりRESET SLAVE;の挙動が変わり、直後にCHANGE MASTER構文を 発行しないと場合によっては問題が発生するとMySQLのドキュメントに記載されていました。 さらに、RESET SLAVE ALL;というクエリもサポートされたようです。 ・In MySQL 5.6 (unlike the case in MySQL 5.1 and earlier), RESET SLAVE does not change any replication connection parameters such as master host, master port, master user, or master password, which are retained in memory. This means that START SLAVE can be issued without requiring a CHANGE MASTER TO statement following RESET SLAVE. http://dev.mysql.com/doc/refman/5.6/en/reset-slave.html ・RESET SLAVE;だけ行い、CHANGE...

2014/03/28

linux SELINUX: getenforce

linux SELINUX: getenforce==>enforcing    SELinux機能、アクセス制御が有効permissive    SElinuxは警告を出力するが、アクセス制限は無効disabled    SElinux機能、アクセス制御が無効sestatusでより詳しい情報を表示させることができます。# sestatusSELinux status: enabledSELinuxfs mount: /selinuxCurrent mode: enforcingMode from config file: enforcingPolicy version: 21Policy from config file: targeted# sudo setenforce 0  SELinux機能を一時的に無効にする再起動の際もSELinuxの状態を保持したい場合は、/etc/selinux/configを直接編集します。SELINUX=disab...

mysql change master 古い値 デフォルト

・CHANGE MASTER のデフォルトでは、一番初めのバイナリ ログ、そして位置は 4 です。・もし与えられたパラメータを指定しなければ、次の説明の中で指示されている場合以外は古い値を持ち続けますーーーーーーーーーーSTOP SLAVE; -- if replication was runningCHANGE MASTER TO MASTER_PASSWORD='new3cret';START SLAVE; -- if you want to restart replication変更しないパラメータを指定する必要はありません。(ホスト、ポート、ユーザ、など) ーーーーーーーーーーー条件付けだけ...

mongodb

mongodbを試した。メモ―である。 ・mongod.exe ==>サーバーデーモン ・mongo.exe ==>クライアント ・client command db show dbs use sample db.sample_coll.insert({"key1":"value1","key2":"value2"})  =>MongoDBで基本的なドキュメントの操作する場合は、操作対象のデータベースとコレクションを指定する必要があります。 db.sample_coll.find()  =>insert()と同様に、データベースとコレクションを指定する必要があります db.sample_coll.find({"key1":"value1"}) db.sample_coll.findone({"key1":"value1"}) db.sample_coll.find({"key1":{$ne:"value2"}}) =>条件検索、ne(not equal) gt,gte,in,lt,lte,ninなどがある。 db.sample_coll.find( {$where:""}) db.sample_coll.update({ "_id" : ObjectId("51068b04b796a688e5d541a9")},...

tar 相対パス 絶対パス

$ tar zcvf img.tar.gz /home/user/img …(2)$ tar zcvf img.tar.gz ./img …(3)$ tar zcvf ./img.tar.gz ./img …(4)$ tar zcvf /home/user/img.tar.gz ./img …(5)$ tar zcvf /home/user/backup/img.tar.gz ./img …(6)(2)と(3)の方法は、どちらともimgフォルダを圧縮するのですが、2の方法はフォルダ階層を維持したまま圧縮する感じ。(2)の方法のフォルダを解凍した場合/home/  ├ user/      ├ img/          ├ ***         ├ ***(3)の方法のフォルダを解凍した場合/img/  ├ ***  ├ ...

mysql replication ssh ssl

■ssl vs ssh? 現時点では、MySQLレプリケーションは送信されるバイナリログのチェックサムを確認しない。 そのため、不安定なネットワークを利用している場合にバイナリログが転送中に壊れてしまうケースがある。 ネットワーク機器のメンテナンスをしっかりと行うのは当然であるが、いくらメンテナンスを行ってもゼッタイに壊れないということはないだろう。 そんな場合はSSLを利用するといい。マスターとスレーブ間をSSLで接続すれば、データが壊れてしまった場合にはSSLが検知してくれるし、勝手に再送も行ってくれる。 ssl認証関係の下記などの作成して、mysqlを設定する CA のキーを生成mkdir /etc/mysql-sslcd /etc/mysql-ssl1. Create CA cert, private keyopenssl genrsa -out ca-key.pem 20482. Create CA cert, certificate"CA の証明書を作成openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem3. Create Server certificate, key"openssl...

Lost connection to MySQL server during query MySQL server has gone away

Lost connection to MySQL server during query が出たときの対処:■可能性の一つ:mySQL クライアントまたは mysqld サーバが max_allowed_packet バイトより大きいパケットを受け取った場合、Packet too large エラーが発生し、接続がクローズされます。サーバ側の設定したのだけど、効いてないなと思ったら、クライアントとサーバには、共に独自の max_allowed_packet 変数があります。大きなパケットを扱う場合は、クライアントとサーバ両方の変数を増やす必要があります。オプション指定ファイルに指定可能な項目は、次のURLに記載されています。http://dev.mysql.com/doc/refman/4.1/ja/mysql-options.html--max_allowed_packet=====インポート時に「MySQL server has gone away」が発生したときの対処おそらく、ダンプしたサーバよりコミュニケーションバッファの最大サイズが少ないために発生していると思われますので、このようなときはmy.cnfの max_allowed_packet  のサイズを■可能性の一つ:mysql>show...

git 考え方

主に、コマンドだけではなく、考え方を見る.[なぜgitが必要になるのか?]を理解する。・git init --bare <directory>-->共有リポジトリを作成するノンベアリポジトリに対してブランチのプッシュを行うと変更の誤書き込みを起こす可能性があるため、中央リポジトリは必ずベアリポジトリとして作成しなければなりません。--bare の指定は、そのリポジトリを開発環境としてではなく保存用領域として認識させる方法であると考えてください。即ち、実質的にすべての Git ワークフローにおいて、中央リポジトリはベアであり、開発者のローカルリポジトリはノンベアです。・git clone repo directory作業コピーは自分自身の履歴を持ち、自分自身でファイルを管理し、元のリポジトリとは完全に独立した環境を提供します。利用者の便宜のため、クローンを行うと、元のリポジトリをポイントする origin という名称のリモート接続を自動的に作成します。これにより、極めて簡単に中央リポジトリとの通信を行うことができます。directoryーーー>ルートが変更できる・柔軟であり、いろんなパターンで運用できそう=>そのプロジェクトに対してアクティブにコードを提供している開...

2014/03/24

ssh Permission denied

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).=>鍵ファイルがなかった。論から言うと秘密鍵の名前(id_hogehoge)がまずかったid_rsaような名前にしましょ...

.tar.gz 2重圧縮 圧縮しながら転送

■tar.gzは2重に圧縮をかけていると思うのですが、なぜそうするんでしょうか======>UNIXは大昔からテープでバックアップするのでTAR(テープアーカイバーの意味)を使い無圧縮で一個にまとめる様になっています。で、そのままではでかいのでcompressで圧縮されるようになったんだけど圧縮方式がLZWで特許にかかったので新たにgzip(gnu zip)が開発されました。Unixの場合tarでアーカイブした物をパイプでgzipに送るとtarでアーカイブしながら同時にgzipで圧縮出来ます。したがって単体で複数を圧縮するソフトが必要ない上に個別に圧縮するより圧縮率が高いのでそのままtarが使われているのでしょう。■`tar cvfz - logs | ssh hoge01.localdomain 'cat > /tmp/logs.tar.gz'`圧縮しながら...

ssh timeout

SSH接続を試し、なかなか応答なし。。あれ、タイムアウトになることはない? ■ssh 接続をタイムアウトしないようにする ssh 接続を切れないよう(タイムアウトしないよう)にするには、 クライアント側かサーバー側のどちらかに以下の設定をすればよい。 サーバーとクライアント両方に設定しても問題はない。 クライアント側の設定 sshd サーバと応答確認する間隔 ServerAliveIntervalを設定する。 /etc/ssh/ssh_config または ~/.ssh/config を編集する。 ServerAliveInterval のデフォルト値は 0 で、デフォルトでは応答確認しないようになっている。 ===>これでタイムアウトはない。。 ServerAliveInterval 15 設定した時間に応答がないと、ServerAliveCountMax の回数(デフォルト値: 3)応答確認し、応答がないとタイムアウトする。...

ansible config

ansible-playbookの方の-i のデフォルト値は???あれ、設定ファイルは?ハマった。If installing ansible from a package manager, the latest ansible.cfg should be present in /etc/ansible, possibly as a ”.rpmnew” file (or other) as appropriate in the case of updates.If you have installed from pip or from source, however, you may want to create this file in order to override default settings in Ansible.==>ないので、自分で作るのね。優先順位:* ANSIBLE_CONFIG (an environment variable)* ansible.cfg (in the current directory)* .ansible.cfg (in the home directory)* /etc/ansible/ansible.cfgansible.cfg:https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg内容的には[defaults]#...

2014/03/22

日本 安い 郵便料金 まとめ

普段使う安い郵便料金をまとめる! ■日本郵送     ■定型 (9~12cm x 14~23.5cm,厚さ1cm以下)         ・25g以下 80円 50g以下 90円     ■定形外 (9cm x 14cm 以上,ただし最大辺が60cm以下で3辺合計が90cm以下)         ・50g以下 120円         ・100g以下 140円         ・150g以下 200円         ・250g以下 240円         ・500g以下...

2014/03/14

mysql replication 移行 昇格

■移行前すべてslaveの状態を確認 すべてのスレーブがリレー ログ内のクエリを処理したかどうかを確認してください。 それぞれのスレーブでは、STOP SLAVE IO_THREAD を発行して、Has read all relay log を確認できまるまで、 SHOW PROCESSLIST の出力をチェックします。 すべてのスレーブでこれが確認できたら、これらを新たな設定として構成できます。 show slave status\G ・readMasterPostion,execMasterPositionは同じであること ■slaveをマスターに ・log-slave-updateは無効であること stop slave RESET MASTER ■マスター変換 stop slave; reset slave; CHANGE MASTER TO   MASTER_HOST='',  MASTER_USER=''  MASTER_PASSWORD=''  MASTER_PORT=  MASTER_LOG_FILE='?'  MASTER_LOG_POS=?; start slave; show slave status\G; ※移行じゃないの場合: CHANGE...

java Mbean

大体、ほとんどのMiddleWareは既にサーポートしている ★Hibernate ---------------------------------- When you are not using Spring or JBoss then things are a little more hands on when it comes to JMX monitoring of Hibernate. You need to do the following:     In your Hibernate Configuration add:     <property name="hibernate.generate_statistics">true</property>     Then in a startup segment of your app you need to register the MBeans with the MBean server:     MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();...

2014/03/13

mysql table cache

★MySQL is MySQL はマルチスレッド化されているため、多数のクライアントが同時に同じものに対してクエリを使用することがあります。2 つのクライアントスレッドで 1 つのファイルに異なるステータスが発生する問題を最小にするため、同時に実行しているスレッドがそれぞれで無関係にテーブルを開きます。これはメモリの消費を増やしますが、一般にパフォーマンスは向上します。★table_open_cachemax_connectionsmax_tmp_tables-->サーバ変数は、サーバが開いた状態で保持できるファイルの最大数に影響しますOS によって制限されている 1 プロセスが持つことができるファイル記述子の最大数まで実行が可能になります。MySQLは使用されていないテーブルが閉じられ、テーブルキャッシュから削除されます。キャッシュが満杯のときに、キャッシュにないテーブルをスレッドが開こうとした場合。キャッシュに table_open_cacheを超えるエントリがあり、あるスレッドがテーブルの使用を終えた場合。テーブルフラッシュオペレーションが起きたとき。いずれかのユーザが FLUSH TABLES、mysqladmin flush-tablesまたは mysqladmin...

mysql MyISAMとInnodb

MyISAMーー>検索は早い、更新などは遅いInnodbーー>その逆?===>結構まえの説であり、Innodbもだいぶ進化して、定説はないみたい。。・MyISAMのテーブルファイル テーブル名.frmファイル    どのようなカラム構成にてできているかなどのテーブル構造のデータが格納されます。テーブル名.MYDファイル    テーブルのレコードデータが格納されます。テーブル名.MYIファイル:    そのテーブルに対して作成された複数のインデックスデータとテーブルの統計情報が格納されます。 ★★★MyISAMテーブルの特長   MyISAMテーブルには固定長構造、可変長構造、圧縮テーブルの3種類のデータ構造があります。前者の2つはレコードデータのサイズの取り扱い方法で、MySQLが自動で選択します。       なお、データ構造は「show table status」コマンドで確認できます。次の例では「TEST00」テーブルが固定長レコードの構造(Row_format: Fixed)でできていることがわかります。mysql>...

mysql 性能調整 視点

★大体の流れ。    ・問題の場所にハードウェアを投入する    ==>だから、リソースがたりないよ。。。。増やしてください。    ===>はい、CPUを2倍に、MEMを4倍に、SSDにした。    ・MySQL プロセスの設定を調整する    ==>だから、MySQLの設定の問題だよ。。。適切に設定されていないでしょうか?    ===>既に調整しました、今のこんなレポートがあり、見てください。    =====>あ。。ちょっとプログラムを調査します。    ・クエリーを最適化するプロセスを調整するということは、メモリーを適切な場所に割り当て、そしてどんな種類の負荷を想定するかを mysqld に伝えるということです。ディスクを高速にするよりも、必要なディスク・アクセス数を減らした方が効果的です。同様に、MySQL プロセスが適切に動作している状態を確実にするということは、MySQL プロセスが、クエリーの処理にたくさんの時間を費やすことができ、一時ディスク・テーブルを扱うようなバックグラウンド・タスクの処理や、ファイルを開いたり閉じたりといった処理には、あまり時間を使わずに済むということです。★★スロー・クエリーのログを取るSQL...

mysql show engine innodb status 見方

★----------SEMAPHORES----------OS WAIT ARRAY INFO: reservation count 34862552 スレッドがセマフォの配列に入ったOS待ち(OS wait)の回数OS WAIT ARRAY INFO: signal count 116266440==>signal countが配列に入ってOSからシグナルを受け取った回数です。後述しますが、この回数は少ないほど良いです。Mutex spin waits 545963329, rounds 2602243608, OS waits 17985576RW-shared spins 44035445, rounds 395257570, OS waits 8059822RW-excl spins 19326255, rounds 500665340, OS waits 6158791Spin rounds per wait: 4.77 mutex, 8.98 RW-shared, 25.91 RW-excl==>spin waitsはMutexのスピンロック待ちに入った回数、roundsはスピンロック待ちに入ったロックのスピンラウンド総数を示します。OS waitsはスピンロック待ちでもMutexを取得できなかったため、オペレーティングシステム管理下のセマフォに渡されたロック回数です。innoDBはスピンロック待ち→OS待ちの順にロック取得を試みます。スピンロック待ちに入ったロックはinnodb_sync_spin_loopsで設定されたスピンラウンド数(取得待ち回数)を超えるとOS待ちに引き渡されます。OS待ちはスピン待ちに比べて処理コストが大きいので一般的にはOS待ち数が小さい方が好ましいです。OS待ちが多く発生している場合はディスクI/OかInnoDB内部でこれらロックに関する競合が発生している可能性が高いです。OS待ちが毎秒10000以上であればOS待ちを減らす方向でチューニングしましょう。MySQLのスレッド数の変更(innodb_thread_concurrency設定値)が効くと思います。------------TRANSACTIONS------------Trx...

2014/03/11

tomcat catalina.sh log

・Tomcat(Java)の標準エラーを標準出力へあらかじめリダイレクトしておく(2>&1)のがミソ。 >> "$CATALINA_OUT" 2>&1 "&" ・rotatelogsへのオプションにより、yyyy-mm-dd形式のタイムスタンプを${CATALINA_BASE}/logs/catalina.out末尾に付与し、 一日ごと(86400秒)に、JST(540分=+9時間のGMTからの時差)のローカルタイム基準でログを午前0時に新しいファイルにローテートする設定となる。 繰り返すけど、二か所あるので、同じように変更しておく。元の設定は、"#"でコメントアウトしておくとよい。 >> 2>&1 | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d.log 86400 540 &a...

linux redirect 特殊変数

★/dev/null は、Unix系オペレーティングシステムにおけるスペシャルファイルの1つで、そこに書き込まれたデータを全て捨て(write システムコールは成功する)、読み出してもどんなプロセスに対してもデータを返さない(EOFを返す)。★0,1,2プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。0から順番に整数の値が割り当てられる。 「0」:標準入力と呼ばれ、シェルへの入力元を表す。通常はキーボード空の入力になっている。 「1」:標準出力と呼ばれ、シェルの結果の出力先を表す。通常は画面への出力となっている。 「2」:標準エラー出力と呼ばれ、シェルで実行時に発生したエラーメッセージの出力先を表す。通常は画面への出力となっている。★ $? 直前に実行されたコマンドの終了ステータスが設定される変数。正常終了の場合は「0」、異常終了の場合は「0 以外」がセットされる。シェルスクリプトでは exit コマンドに与えた引数がそのシェルスクリプトの終了ステータスとなる。 例えば「exit 2」と書いたならば、そのシェルスクリプトの終了ステータスは「2」。※ 関数の return も同様に、指定した引数がその関数の終了ステータスとなる。★$! バックグラウンドで実行されたコマンドのプロセスID...

2014/03/06

単式簿記 複式簿記

・単式簿記の代表例が家庭の家計簿であり、お金の出入りを1つの視点で記録していく ・複式簿記では、商品を現金で購入した場合、その出費の内容に加えて現金の減少も別に記述し、   お金の出入りを複数の視点でそれぞれ記録する。   その結果、複式簿記ではお金の流れを多角的に把握することがで...

linux ssh key putty config port forwarding

ssh/keyなど、毎回はまる。うまくいかない場合もある。・sshdサーバーデーモン、クライアントのssh    sshdはsshに対して2つの認証を行う ホスト認証    ライアント上には通常 known_hosts と呼ばれるファイルがあり、     ここには特定の IPアドレス (とホスト名) をもつサーバのホスト公開鍵が登録されています。 ユーザ認証    ーーーーー>ここ押さえて、なんとなく調べられるかな。。。    ・ssh -v  which ssh    たいていの場合、システムの OpenSSH では    よく使うプログラムは /usr/bin    設定ファイルは /etc/ssh    サーバデーモンは /usr/sbin    補助プログラム (ユーザは直接実行しない) は /usr/libexec (あるいは /usr/libexec/openssh)...

linux ruby gem

sudo yum -y install ruby たまにRubyスクリプトで下記の物があり、エラーになる。 require "rubygems" 多くのプログラミング言語と同様に、Ruby にも幅広いサードパーティのライブラリが提供されています。 それらのほとんどは “gem” という形式で公開されています ■RubyGemsはRubyで利用されるパッケージ管理システムです。  ライブラリの作成や公開、インストールを助けるシステムです Ruby に特化した apt-get と同じようなパッケージングシステム sudo yum -y install rubygems ■gemは何?RubyGemsのコマンドである Ruby のライブラリは主に RubyGems.org に gem として置かれています。 直接ウェブサイトを閲覧したり、gem コマンドを使用してそれらを探すことができます。 gem search -r を使うと RubyGems のリポジトリを調べることが出来ます sudo gem install net-ssh sudo gem install net-scp gem list gem help ■proxy sudo gem install...

git

使い初め、基本のコマンドをメモする ■config proxy,sslなど git config --global http.proxy http://proxy:8080 git config --global http.sslVerify false 接続の一覧: git config --list ■git 一部ファイルだけ対象にする Gitで「あのリポジトリのこのファイルだけをcloneしたい」という場合に、Sparse checkoutという機能があることを知ったのでそのメモです。 厳密には、一部のファイルのみをcloneするわけではなく、他のリポジトリをまるごとcloneした後に任意のファイルのみをチェックアウトする機能なのですが、目的に近い結果を得ることはできそうです。 git config core.sparse-checkout true その後、「.git/info/sparse-checkout」へ対象とするファイル(または除外するファイル)を追加し、ツリーを読み込み直せば対象のファイルのみがチェックアウトされます。 echo 対象とするファイル>.git/info/sparse-checkout echo !除外するファイル>.git/info/sparse-checkout ■リモートの削除・リネーム git...