ablog

不器用で落着きのない技術者のメモ

2017-12-01から1ヶ月間の記事一覧

nethogs でプロセス別の通信量を調べる

nethogs はネットワークの top コマンド的なもので通信量の多いプロセスをランキング表示して、秒間通信量も見ることができる。 インストール sudo yum -y install gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses* git clone https://github.com/rabo…

Linux で圧縮率の低い大きなサイズのファイルを作成する

Linux で圧縮率の低い大きなサイズのファイルを作成する方法をメモ。 $ dd if=/dev/urandom of=1gb.dat bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 12.9546 s, 82.9 MB/s $ ls -lh 1gb.dat -rw-rw-r-- 1 ec2…

RDS Oracle で Statspack を使う

RDS Oracle で Statspack を使えるようにする手順をメモ。 オプショングループを作成する AWSマネジメントコンソールで RDS を選択する。 [オプショングループ]-[グループの作成]を選択し、任意の名前と説明を入力し、エンジンは oracle-eeを選択して、メジ…

Oracle Database の I/O 負荷テストツール SLOB(The Silly Little Oracle Benchmark) の紹介

JPOUG Advent Calendar 2017 の21日目のエントリーです。昨日は JPOUG in 15 minutes at db tech showcase Tokyo 2017 開催報告 でした。 JPOUG Advent Calendar に参加するのも6年目になりました。 今年は「SLOB(The Silly Little Oracle Benchmark) 」とい…

RDS PostgreSQL のクロスリージョンレプリケーションのラグがどの程度か調べてみる

AWS

RDS PostgreSQL のクロスリージョンレプリケーションのラグがどの程度か調べてみたときの手順のメモ。 手順 東京リージョンのマスターで pgbench で負荷をかける。 $ pgbench -r -c 10 -j 10 -t 100000 -U awsuser -h pg-m4xlarge-master-7.******.ap-northe…

Redshift の COPY コマンドはアトミックでトランザクショナル

Redshift の COPY コマンドが失敗した場合、ロールバックするか。 COPY コマンドはアトミックでトランザクショナルです。 (中略) COPY コマンドが失敗した場合、トランザクション全体が中止され、変更はすべてロールバックされます。 複数ファイル読み取り…

RDS PostgreSQL で大量にセッションを張った場合のメモリ使用量を調べる

RDS PostgreSQL に pgbench で 2000 セッション張って負荷をかけてみたところ、12.5GBほどあった空きメモリを使い尽くして、2GB以上スワップした。 プロセス自体のメモリ、ワーク領域、ページテーブル(PTE)などで1セッションあたり、6MB以上は使っている計…

MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする

MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする には以下の用に JDBC URL に「connectionCollation=utf8mb4_bin」のように設定すれば良い。 jdbc:mysql://aurora01.cluster-*******.ap-northeast-1.rds.amazonaws.com:…

Redshift のテーブル一覧とサイズを確認する

Amazon Redshift のテーブル一覧とサイズを AWS Labs の table_info.sql で確認する。 % git clone https://github.com/awslabs/amazon-redshift-utils.git % cd src/AdminScripts % psql "host=rs-spectrum01.******.us-east-1.redshift.amazonaws.com user…

MySQL でオプティマイザトレースを取得する

MySQL でオプティマイザトレース(Oracle Database でいう 10053 トレース)を取得する方法。 mysql> SET optimizer_trace="enabled=on"; mysql> SET optimizer_trace_max_mem_size = 1048576; mysql> select 1; mysql> select * from information_schema.op…

Redshift 検証メモ

まとめ 「SVV_TABLE_INFO.TBL_ROWS」 で削除対象としてマークされた行も含めた行数を確認できる 「SVV_TABLE_INFO.TBL_ROWS」 - 「select count(*) from テーブル名」が削除済としてマークされた行数 STV_TBL_PERM、SVV_DISKUSAGE も同様に削除済としてマー…

Aurora MySQL互換で binlog を有効化する

AWS

Aurora MySQL互換で binlog を有効化して、マスターからは binlog にアクセスできるが、リードレプリカではアクセスできないことを確認した。 binlog を有効化する パラメータグループを作成する Parameter Group Family: aurora5.6 Type: DBCluster Paramet…

MariaDB Connector/J で MySQL に接続する Java プログラム

MariaDB Connector/J で MySQL に接続する Java プログラム。 ソースコード ほぼ MariaDB Connector/J で MariaDB 10.3 に接続する - Qiita のまま。パッケージ名を削除して、接続情報を変更しただけ。 JdbcTest.java import java.sql.*; public class JdbcT…

LOAD DATA ステートメントで "Row X was truncated; it contained more data than there were input columns" が発生する

事象 LOAD DATA ステートメントで CSV ファイルをロードすると "Row X was truncated; it contained more data than there were input columns" というワーニングが発生し、全ての行がロードされていない。 mysql> LOAD DATA LOCAL INFILE 'test.csv' INTO T…

LOAD DATA ステートメントで発生したワーニングの内容を表示する

LOAD DATA で "Warnings: 48" のようにワーニングが発生した場合に、その内容を見たい場合は、 % mysql --local-infile -h aurora01.cluster-******.ap-northeast-1.rds.amazonaws.com -u awsuser -p mysql> LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE T…

Aurora MySQL互換に LOAD コマンドで CSV ファイルをロードしようとすると "ERROR 1148 (42000)" で失敗する

Aurora MySQL互換というより MySQL の話です。 事象 mysql クライアントで接続して、LOAD DATA ステートメントで CSV ファイルをロードしようとすると、"ERROR 1148 (42000): The used command is not allowed with this MySQL version" と怒られる。 % mysq…

EMRクラスターを起動するシェルスクリプト

AWS

同じ名前のクラスターが存在したらスルーするEMRクラスター作成シェルスクリプト。ただし、同時実行すると複数クラスターが作成される。 厳密にやりたい場合は S3をトリガーとするLambdaの冪等性をDynamoDBで実現してみた | DevelopersIO のような方式にす…

AWS CLI でEMRクラスターのリスト表示で "'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)" と怒られる

AWS

事象 AWS CLI を実行すると、"'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)" と怒られる。 % aws emr list-clusters { "Clusters": [ { "Status": { "Timeline": { "ReadyDateTime": 1512532909.567, "CreationDateTi…

macOS でシステムコールトレースを取得する

macOS で Linux の strace のようにシステムコールトレースを取得したい場合は、dtruss で同等のことができる。 実行例 % sudo dtruss -deflo sudo -u $(id -u -n) sleep 1 PID/THRD RELATIVE ELAPSD CPU SYSCALL(args) = return 83868/0x3967d6: 1084 30 27…

DMS Full Load 検証メモ

AWS Database Migration Service (DMS) の Full Load (Oracle Database -> MySQL) の検証メモ。 Oracle Database(ソース) の TIMESTAMP WITH TIME ZONE 型の列は DMS で MySQL(ターゲット) にロードすると varchar(37) 型の列に変換される*1。 ソースが TIME…