適当に・・・

何の目的も無くブログを立ち上げてみました。更新は不定期ですね。

CentOS 6 + MySQL 5.6 + keepalive(2)

2016年06月08日 22時07分01秒 | Linux

CentOS 6 + MySQL 5.6 + keepalive(2)

前回の続きです。

さて今回は前回の設定を準同期の設定に変更してみようと思います。

そんなにやること無いんで気楽に行きます。

rootで作業してます。

mysqldが立ち上がっている場合は
スレーブ、マスターの順に停止します。

マスター側の設定を変更します。
# vi /etc/my.cnf

plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=3000

を追加し保存します。

続いてスレーブ側の設定を変更します。
# vi /etc/my.cnf

plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1

を追加し保存します。

マスター、スレーブの順でmysqld を上げます。
# /etc/init.d/mysqld start

でログを見てみるとエラーwww

スレーブ側でスレーブを停止して再度マスターと同期
mysql>stop slave;
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.51',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='56789',
-> MASTER_LOG_FILE='mysql-bin.000004',
-> MASTER_POS=120;

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

はて?何故かエラーが。

mysql> show slave status;
を行うとmysql-bin.000004
pos 120で合ってる。

しょうがないから一度スレーブの状態をリセット
mysql> reset slave;

再度同期
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.51',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='56789',
-> MASTER_LOG_FILE='mysql-bin.000004',
-> MASTER_POS=120;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

これで同期状態なので、マスタ側で
mysql> show status like 'Rpl%';
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 1 |
| Rpl_semi_sync_master_net_avg_wait_time | 0 |
| Rpl_semi_sync_master_net_wait_time | 0 |
| Rpl_semi_sync_master_net_waits | 0 |
| Rpl_semi_sync_master_no_times | 0 |
| Rpl_semi_sync_master_no_tx | 0 |
| Rpl_semi_sync_master_status | ON |
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 0 |
| Rpl_semi_sync_master_tx_wait_time | 0 |
| Rpl_semi_sync_master_tx_waits | 0 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 0 |
| Rpl_semi_sync_slave_status | OFF |
+--------------------------------------------+-------+

Rpl_semi_sync_master_clientsが1になっているので準同期です。

設定されているのでテストです。
マスタ側で
use test;
mysql> CREATE TABLE aic1(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

※use testでエラーになる場合はテスト用のdbを作成してください。
mysql> create database test;

スレーブ側で
use test;
mysql> select * from aic1;
Empty set (0.00 sec)


マスター側で
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO aic1 VALUES (NULL);
Query OK, 1 row affected (0.00 sec)

スレーブ側で
mysql> stop slave;

マスター側で
mysql> commit;
Query OK, 0 rows affected (3.00 sec)
3.00 sec は rpl_semi_sync_master_timeout=3000 と設定した値です。

マスター側で
mysql> select * from aic1;
+-----+
| col |
+-----+
| 1 |
+-----+
1 row in set (0.00 sec)
ちゃんと反映されています。

スレーブ側で
mysql> select * from aic1;
Empty set (0.00 sec)

反映されていませんね。では
mysql> start slave;

mysql> select * from aic1;
+-----+
| col |
+-----+
| 1 |
+-----+
1 row in set (0.00 sec)

復帰しました。これで準同期はOKです。


keepaliveの続きをこの記事に書いてアップデートします。

CentOS 6 + MySQL 5.6 + keepalive(1)

2016年06月08日 19時01分22秒 | Linux

CentOS 6.x + MySQL 5.6 + keepalive(1)

CentOS 6.x に MySQL 5.6を入れて準同期レプリケーションを行いつつ
KeepAliveでHAを・・・。

最近めっきりインフラの設定とかやってなかったんで久しぶりです。
間違えとか突っ込みどころは、気にせずに読んでる方が作業するときに気をつけて頂きたいです。

作業ユーザーはrootを想定していますのでそれ以外のユーザーは
suとかsudoとかお好きな方を。ちなみにsu派です。


新規にインストールしたCentOS6.x 2台にmysqlを入れます。
(CentOS7はMariaDBですもんね。後でやります。)

# rpm -qa | grep mysql
ずらずら何かインストールされているものが出る。

# rpm -y remove mysql*
mysql関連をごっそり消しまする。

# yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

# yum install mysql mysql-devel mysql-server mysql-utilities
必要な物を入れる。

#mysqld --version
mysqld Ver 5.6.31 for Linux on x86_64 (MySQL Community Server (GPL))

終わりました早いです。

# /etc/init.d/mysqld start

# mysqladmin -u root password '12345'
※テスト用に12345とかにしていますが、本番に脆弱なパスワードはやめてくださいw

マスターmysqlのレプリケーション設定を行う

/etc/my.cnfに次を書き込みます。

server-id=1001
log-bin=mysql-bin

保存後 mysqlをリスタートします。
# /etc/init.d/mysqld restart

mysqlにログインしバックアップを取得します。

# mysql -u root -p12345

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

違うターミナルを立ち上げてログインし
# cd /var/lib/
# tar /tmp/mysql.tar.gz mysql

mysqlにログインしているシェルで
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
とすると今の状態が参照できます。後で使うのでメモをとっておくと便利です。

バックアップをとったのでロックを解除します。
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

レプリケーション用のユーザを作成します。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '56789';
Query OK, 0 rows affected (10.00 sec)
※脆弱なパスワードはやめましょう。

ここでiptable(ファイアーウォール)を設定してる場合(ほとんどだとは思いますが・・)
iptables -A INPUT -s xx.xx.xx.xx -p tcp --dport 3306 -j ACCEPT とします。
(/etc/sysconfig/iptablesに書き込んでiptableをリスタートでも構いません。 as you like)
(外部通信用と内部通信用のnicは別が好ましいと思います。)

ちなみに今回はDB1に 192.168.0.51 を DB2に192.168.0.52を割り当てました。
(VPSの都合です。)

マスター側は設定が終わったのでmysqlをリスタート
#/etc/init.d/mysqld restart

次はスレーブ側を設定します。
# vi /etc/my.cnf

server-id=1002

を追加して保存します。この時この番号はマスター側と重複しないように気をつけます。

mysqlを停止します。
# /etc/init.d/mysqld stop

マスター側で作った mysql.tar.gzを転送し/var/libに移動
# cd /var/lib
# tar xvzf mysql.tar.gz

mysqlを起動
# /etc/init.d/mysqld start

mysqlのスレーブ設定。
# mysql -u root -p12345

mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.51',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='56789',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=120;

Query OK, 0 rows affected, 2 warnings (0.01 sec)

※ワーニング出てる
ユーザー、及びパスワードが脆弱だと言われてるのと
先の tar 解凍するときに /var/lib/mysql/auto.confもコピーしてきたのでこれが同じで怒られてる
/var/lib/mysql/auto.confを削除してmysqlを再起動

これで同期レプリケーションの設定はOK

マスター側で
# mysql -u root -p12345
mysql> create database test;
Query OK, 1 row affected (10.00 sec)

としtestデータベースを作りスレーブ側で
# mysql -u root -p12345
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

としてtestデータベースが存在することを確認。
後は色々とマスター側でmysqlのコマンドを発行しスレーブ側に反映されるか確認する。






AWS CentOS 6.5 desktop を設定

2014年09月17日 22時35分56秒 | Linux

AWS CentOS 6.5 desktop を設定

yum groupinstall "X Window System" "GNOME Desktop Environment" "Desktop"

で全部入った。

リモート接続ようにVNCを入れる。

yum -y install tigervnc-server

バックアップ&設定。

cp -p /etc/sysconfig/vncservers /etc/sysconfig/vncservers.org

vi /etc/sysconfig/vncservers

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1440 -nolisten"

ファイルを保存し起動

/etc/init.d/vncserver start

gnomeを使うから

vi ~/.vnc/xstartup

として

twm &となっているのをコメントアウト

#twm &
exec gnome-session & ←追加する

以上

CentOS 6.5 から7.0へのアップグレード

2014年09月17日 21時57分26秒 | Linux

CentOS6.5から7.0へのアップグレード

まあ新しいものが出たらやってみたくなるわな。
※下のrpmのバージョンが変わると 404になるからその時は適宜変更の事。

yum -y install openscap pcre-devel libxml2-devel libxslt-devel m2crypto python-simplejson mod_wsgi

rpm -ivh http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-1.0.2-36.0.1.el6.centos.x86_64.rpm
rpm -ivh http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-contents-0.5.14-1.el6.centos.noarch.rpm
rpm -ivh http://dev.centos.org/centos/6/upg/x86_64/Packages/preupgrade-assistant-ui-1.0.2-36.0.1.el6.centos.x86_64.rpm
rpm -ivh http://dev.centos.org/centos/6/upg/x86_64/Packages/redhat-upgrade-tool-0.7.22-3.el6.centos.noarch.rpm

全部入ったら、次

preupg とする

しばらくアップグレードの前処理。。。。

終わったら

redhat-upgrade-tool --network 7.0 --instrepo http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/ --force

上記URLはCentOS7がおいてあればどこでも構わない。

終わったら再起動してバージョン確認。

reboot

cat /etc/redhat-release

しゅーりょー

クラスタ技術

2014年09月17日 20時42分34秒 | 忘備録

忘備録としてクラスタ技術まとめを記述

大体「クラスタ」というと対障害を念頭においたHA構成のを指すことが多い

今はそうではなくて クラスターで並列処理を行いたい。

かつ、ssi を提供してくれそうな技術がないか調べて忘れないように書いておく。
※新しいのを見つけたら随時更新。

オープンソース

・openMosix (開発をやめたみたい。
・Kerrighed (XtreemOSってのに引き継がれてるのかな?
・OpenSSI (これも開発が止まってる?
・Gluster (大規模NASが欲しくてファイルシステムは大昔調べた気がする GlasterFS
・PVM
・OSCAR
・GRID ENGINE ( もともと Sun Microsystemsのエンジンだったけど今はOracleで
いまはunivって企業がやってる。

どうにかして OS側からは1個のマザーボードに大量のCPUとメモリが乗っていて
かつアプリに変更なしに、乗っているCPUとメモリに処理だけを分割させたいんだけどね。

まだ他にもあるんだろうけど 大規模クラスタでSSIを提供する技術って今はまた需要があると思うんだよね。

Intel Phi とか出てきたし。。。

外人さんのブログを読んで

http://perilsofparallel.blogspot.jp/2009/01/multi-multicore-single-system-image.html

DragonFlyBSD
Virtual Iron
なるものがあるのを知る。

メモリの技術はvNUMAがあるのにな。

復活

2014年09月08日 19時51分02秒 | 雑記

アカウントのパスワードを忘れて長らくアクセスできなかったけど、

再設定できたので復活。

2011年01月12日 03時36分44秒 | Weblog

本を読まない。

技術書以外は。

31年ちょっと不自由はしなかった。

今から先も不自由はしないと思う。

ただ、表現の方法が増えると言うのは実感した。

心の機微とか言う表現を知らなかった訳で。

まあ、知らないよりは知っていた方が良いのは決まってる。

ただし、本を読む時間とそこから得る知識とか表現とか、

その他色々とどっちが有意義か?と言う問題だけだ。

開発環境

2010年08月11日 03時04分37秒 | Weblog
いや、まー
開発やってるから
開発環境を壊したとかあるでしょー。

私も、新人の頃
データベースを触ったりしてて、間違えて
SQL発行してデータベースを消したり、
rm -rf *
とか、連打してたら消してはいけないところまで
消してしまったりでw

あと、私が新しいマシンを触ると
よく壊れることからクラッシャーなどと
呼ばれて・・・・w

でも、ちゃんと壊したけど元に戻して、
作業はしてた。
頼むから、開発環境壊して、壊しっぱなしで
外注に振ろうと言う考えだけは止めて。

マジで。信用なくすから。そういうことやってると。
ちゃんと直して、状況が説明できるようになって、
外注と話し合って。

仕様書が無いならまだいいけど。
モジュールだけあってソースコード無いって
ものすげー大変だからさ。

64bit

2010年07月19日 13時05分15秒 | Weblog
世の中3連休なのに、
メインで使っているPCが死亡したのを期に
もう32bit止めようと決める。

ファイルを大量に作成、削除
その間にロシアの力が割り込みでファイルをフック
してウイルススキャンをかける。でもってそれが終わる前に
削除してしまう。という事を繰り返してたせいかどうかわからないけど。

そして、インテルを止めて初のAMD
別にCPU特有の命令コードを書くわけではないので、
どっちでも安けりゃいいやぐらいの勢いでAMD

OSは64bitを載せる。(メモリを8gのっける都合のため)

PCの移行って時間かかるなー。

DVDドライブとか32bitの時は安定して書き込めてたけど
64bitになったらエラー吐きまくりでDVD焼けないしw

いまさらUDMA2とかで使ってるからか?
それともAMD系とIntel系の命令の違い?まあそんなことを
調べてる時間がもったいないのでSATAのDVDドライブをAmazonで注文
(でも使ってるIDEをUSB2に変換して書き込むと
エラーなしで書き込めるんだよな。。。
よくわからないなー。)

まあ3日間は何もできずにつぶれた・・・・ orz

最近なにも、やる気がおきない。なぜだろう。

twitterレシピ

2010年06月13日 01時22分21秒 | Weblog
twitterレシピが

出来上がってました~

中身もすごくカッコいいです。

木下シェフのカッコいいカット等もあります。



早く購入しないと売り切れる予感。

twitterレシピ

みなさんもぜひ購入してオーギャマン・ド・トキオで

木下シェフにサインしていただいてください。