ちゃんるいすのブログ

オタクエンジニアの雑記

MySQL innodb_buffer_pool_instances を調整したら幸せになれました

1 分間に約 23万クエリ流れる DB が全部で 4台な環境がある。 innodb_buffer_pool_size はだいたい 70 GB セマフォ innodb_buffer_pool_instances を調整することで、mutex への競合が減りパフォーマンスが向上する。 innodb_buffer_pool_instances = 1 OS W…

ECS と distroless イメージの組み合わせは悲しい

最近見るプロジェクトが増えました。ECS コンテナのヘルスチェックにいつもどおり何かを書く CMD,curl,localhostしかし、永遠に UNKNOWN になる。使ってるイメージを持ってきてローカルで確認してみる。 $ luis@ubuntu ~ $ docker run --name test -it --rm …

Stripe Checkout をローカルの Vue で動作確認する

Stripe Checkout のホワイトリストドメインリストに localhost は使えない。Stripe Checkout を動作させるには https ドメインに localhost は使えない hosts を書き換える 127.0.0.1 hoge.com Vue.js のホスト名チェックを切る devServer: { disableHostChe…

コンテナで動かしてる MySQL で innodb_dedicated_server = 1 にしたらどんどん死んでいった話

ある日 InnoDB Cluster をコンテナ上で動かしてたがメモリを期待していた以上に消費していたので調べていた。その時は innodb_dedicated_server を 1 にしてた。 innodb_dedicated_server ソースを覗いてみる buffer_pool_size が決まるところ メモリサイズ…

ノリで会社作ってみた

hcloud.ltd 会社設立 freee はとても便利でした。 www.freee.co.jp

GTID で errant transaction に悩んだら

TL;DR flush slow logs のタイミングでバイナリログに書き込まれる それによって GTID がズレる = errant transaction このスクリプトを mackerel-agent で定期実行することで解決 事象 あるタイミングでスレーブの GTID が進んで errant gtid が起きる。 f…

Orchestrator を Mackerel と組み合わせて幸せを掴むスクリプト

なにしてるの errant transaction の検知 errant transaction の修正 can-replicate-from-gtid を叩く Mackerel で使う なにしてるの errant transaction の検知 errant transaction の修正 can-replicate-from-gtid を叩く errant transaction の検知 funct…

CentOS 8 で mysql-community-server 8.0.19 を入れる

dnf め... mysql repo を入れる # dnf install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y mysql-community-server を探す # dnf list | grep mysql-community-server mysql-community-server-debug.x86_64 8.0.19-1.el8 mys…

snmp_exporter の generator で Edge Router のメトリクスを取る

これを使う grafana.com generator.yml ↑ の generator.yml は古い書き方で現在の generator では使えない。 こうする ↓ modules: edgemax: walk: - ifHCInOctets - ifHCOutOctets - ssCpuIdle - memTotalFree - memTotalReal - hrSystemUptime lookups: - s…

Terrfarom じゃなくても Ansible でもできるよ!S3編

今回は S3 簡単なやつ使うモジュール s3_bucket s3_lifecycle バケットの作成 - name: Create a bucket s3_bucket: name: "{{ project }}-dbbackup" state: present region: ap-northeast-1 ライフサイクルの追加 - name: Add a lifecycle s3_lifecycle: nam…

なんでみんな Cloudflare を使わないの?無料で使える Cloudflare の機能をご紹介!

よくあるアフィ記事のタイトル風 Cloudflare 無料で色んなことできるのに周りで使っている人が少ないから布教してみる。 Cloudflare Cloudflare の日本でのシェア Cloudflare の企業ミッション 無料で使える (無料)証明書の用意なんてしなくても HTTPS が…

xtrabackup と xbcloud 使えばクラウドストレージに投げるのが楽だし速いし良いことばかり

xbcloud xbcloud を使う理由 50GB を超えれない xbcloud はインストールが手軽 フルバックアップ リストア デメリット xbcloud www.percona.comxtrabackup (innobackupex) と S3 (minio) とか GCS と組み合わせるときに、公式純正の CLI よりも速いしリソー…

Nomad に載った API サーバーのログ監視を考える

これの続き blog.luispc.comログ監視、ここではアプリケーションのエラーログについて Slack に通知をする fluentd.conf ネストされた JSON を展開する アプリのログ以外は無視したい Elasticsearch に送りながら Slack に送る 確認 Tips ロガー Gin を Grac…

Nomad で fluentd を使ってアプリログを Elasticsearch に投げる

新年1発目 アプリケーションのログを標準エラーに出力する zap がパフォーマンスが良いという意見だけで zap にした。結果、こんなのが標準エラーに出力されるようにした。 { "level":"error", "ts":1577969526.688373, "caller":"lib/logger.go:29", "msg"…

WordPress を運用している皆様は静的ファイル配信をしてますか?

TL;DR 静的配信 WordPres は重い セキュリティ対策 wp2static wp2static を使ったワークフロー デメリット WordPress 本体の話 WordPress からはてなに移動したのに 仕事で WordPress を扱うとは思ってもいなかった。 TL;DR 静的配信をしよう 静的配信 なん…

新卒1年目僕、初めての一人メンテ!

フロントはメンテ入れた。 後は API 本番環境でやらかしちゃった人 Advent Calendar 2019 - Qiita ※ 追記 2019/12/21 0時31分 ご指摘を貰ったのでこの Advent Calendar の必須項目があることを知らんかったので追記します。 惨劇はなぜおこってしまったのか …

お金が無い人のためのプライベートコンテナレジストリのご紹介

お金あります?僕はありません。 良い感じのコンテナレジストリが欲しいですか?ありますよ。Dockerhub は無料だとプライベートは1つしか持てないけど無制限に作れるやつがあるんです。GitLab の中にあるんですが。 https://docs.gitlab.com/ee/user/packag…

Nomad に Drone を展開する

drone のどっかのバージョンから server と runner が別イメージになった。 job "drone" { datacenters = ["luis"] type = "service" update { max_parallel = 1 min_healthy_time = "10s" healthy_deadline = "3m" progress_deadline = "10m" auto_revert =…

Nomad と Drone で贈る CI/CD 環境

今の所順調です。 blog.luispc.comあとは CI/CD を作るわけで、ワイの自宅には Drone が動いているので Drone を使って Nomad へデプロイをする。 github.com .drone.yml kind: pipeline name: default platform: arch: amd64 steps: - name: build docker i…

オンプレでやる Nomad + Consul + Traefik が本当に顧客が求めていたコンテナオーケストレーションでした

前回こんな記事を書いた後に、コンテナオーケストレーションを導入した。 blog.luispc.com 今までの構成はイケてなかった オンプレに k8s の環境はしんどかった マネージド k8s k8s に拘るのをやめた Nomad + Consul の構築は簡単だった Nomad + Consul 構築…

dnf install の --nobest オプション

CentOS 8 を最近触るようになった。 dnf install --nobest 例えば、依存関係でパッケージが入れることができなかった場合 [root@nomad01 ~]# dnf install docker-ce Last metadata expiration check: 0:03:38 ago on Thu Dec 5 21:34:46 2019. Error: Proble…

個人サービスを作る人は電気通信事業届けとか、特定商取引とか気にかけてる?

個人開発 Advent Calendar 2019 5日目です。 qiita.com個人開発をやる上でやらないといけないこととを紹介してみようと思います。 Easy Uploader easyuploader.app僕が作ってるサービスです。 普通のアップローダーです。他のアップローダーと差別しているの…

Go で作る Ansible モジュール

Ansible Advent Calendar 2019 2日目ーーー qiita.com1日目は sky_jokerxx さんのこちらの記事でした。 sky-joker.tech2018 の Ansible Advent Calendar ではこんな記事を書いていた。 blog.luispc.com モジュールを作った経緯 Go で Ansible モジュール作る…

Proxmox を他人に貸し出すときのユーザーマネジメント

Proxmox で特定のプールだけに対しての操作を許可する ユーザーを作る グループを作る ロールを作る プールを作る グループにユーザーを追加 グループとプールを紐付ける Proxmox で特定のプールだけに対しての操作を許可する ユーザーを作る # pveum userad…

InnoDB Cluster のフェイルオーバー時間を計測してみる

InnoDB Cluster クエリが少ないとき クエリが多いとき 最低5秒以上で MySQL Router は新プライマリへ切り替わる MySQL Router のメタデータが更新されるタイミング InnoDB Cluster 環境は MySQL 8.0.17 Single-Primaryパターンは下記2つ クエリが少ないと…

俺的便利コマンド

tar + pv journalctl -fu service tar + pv $ pv backup.gz | tar xf - --use-compress-prog=pigz -C /mnt/data $ tar cf - --use-compress-prog=pigz mysql -P | pv -s $( du -sb mysql | awk '{print $1}' ) > mysql.gz journalctl -fu service systemctl …

AWS DMS を使ってプライベートクラウドの巨大な MySQL を Aurora MySQL へ移行してみた

今までプライベートクラウドで動いてたサービスが、データセンターの閉鎖に伴いどこかに移設しないといけない物語に AWS DMS を使ったので覚書として書いておく。 DB は 1.5TB の 45 億レコードとそれなりに大きいけどメンテ時間は動作確認を除いて 30 分ぐ…

俺的 MySQL Group Replication まとめ

既存のテーブルが Group Replication に準拠してるか エンジンが InnoDB かどうか テーブル構造が Group Replication 準拠か 既存のテーブルが Group Replication に準拠してるか エンジンが InnoDB であることが必要 Primary Key が必須だよ エンジンが Inn…

Cloudflare からプロキシされたアクセスを Nginx の real_ip_header でクライアントの IP アドレスを記録しつつ、Cloudflare からのアクセスのみを許可する

「お前のタイトル良く分かんねえんだけど?」 アクセスログに Cloudflare じゃなくてクライアント IP にしたい!&Cloudflare からのみアクセスしたい! 1. Cloudflare からプロキシされたアクセスを Nginx のアクセスログのクライント IP を正しいのにする …

俺的 MySQL 8 まとめ

俺的 MySQL 8 メモ 俺的 MySQL 8 メモ 1. MySQL 8 から SET PERSIST が使える 1. MySQL 8 から SET PERSIST が使える SET GLOBAL のグローバル変数の変更に加えて、再起動しても反映されるようになる。 mysql> SET PERSIST innodb_buffer_pool_size = 268435…