SCLってあるよね
RHELやCentOSにはSoftware Collections (SCL)っていう仕組みがあって、超絶端折ってお伝えすると新しいバージョンのソフトウェアが現在の環境を壊さずにSide by Sideで使えますよーということなんですけれども。引き換えとして、SCLをインストールしたパスは/opt/rh以下とか、設定ファイルは/etc/opt/hr以下になるわけなんですけども…。
何が不満か
現時点ではこんなところ。- サービスの名前がわかりにくい
- 設定ファイルの場所がわかりにくい
どうしてそう思ったか
今日の午前中なんだけれど、こんなトラブルがあった。長年いろいろな経緯があって、すこしいびつになっているMySQLのレプリケーション環境があって、片方はMySQL5.1、そこからレプリケーションしている環境はMariaDB10.1.19で作ってある。
MariaDBのほうはCentOS7にSCLで入れた。パッケージ名はrh-mariadb101-mariadb-*になる。そいでもって
systemctlコマンドでデーモンを操作する場合はrh-mariadb101-mariadb.serviceになる。わけです。
そのレプリケーション環境でレプリケーションが停止したというアラートが来た。MySQLにログインして show slave status\G コマンド叩いたら
Last_SQL_Errno: 1690 Last_SQL_Error: Error 'BIGINT UNSIGNED value is out of range
って出てて、なぁんだUNSIGNEDのカラムでマイナス値入れようとしたからアンダーフローで2^32-Xの数値が入っちゃったんかなぁなんて思って、まぁその通りで。それはアプリのつくりが悪いで直せばいいんですが、インフラとしてはレプリケーション止まっていると都合が悪いので回復させる必要があるわけで。
原因は明らかなので、CLIでSET GLOBAL sql_slave_skip_counter = 1;を実行していけばいいのですが1行ずつ確認するのはダルかったので my.cnfを見つけ、そこから読み込んでいるmariadb-server.cnfにslave-skip-errors=1690を追記して、MariaDB再起動しようと思いました。
で、設定ファイルを触ろうと思ったらこの場所が全く思い出せない…(;´・ω・)
5分くらいかけて/etc/opt/rh/rh-mariadb101/my.cnf.d/ディレクトリにたどりつきました。
設定ファイルの修正は終わった。さぁ再起動と思ったらサービス名のrh-mariadb101-mariadb.serviceがまた思いっきり思い出せない…
systemctlの場合はサブコマンドで list-unit-filesってあるのでこれを実行してgrepすりゃいいのかもしれませんがこのサブコマンドさえ思い出せないっていう…。
だったらalternativesユーティリティと連携してよ
自分の脳みその劣化もあるんでしょうが、昔からRHEL/CentOSでMySQL触っている身からすると設定ファイルは/etc/my.cnfだっていう頭があって、必要なファイルやコマンドを見つけ出すのに時間がかかってしまってだいぶ回復までの時間をロスしてしまいました。常日頃オペレーションしておけばいいんでしょうけど、そんなわけにもいかない事情もあるもんで…。
だったら/etc/my.cnf→/etc/opt/rh/rh-mariadb101/my.cnfにシンボリックリンクをあらかじめ貼っとけばいいじゃん?って思った方、それ正解だと思います。
で、思い出したのがalternativesユーティリティ。これって、確か同じソフトウェアを切り替えて動作させるためのツールとしてすでに備わってるんじゃなかったっけ?わざわざユーザにシンボリックリンク作らせずに最初からこれと連携させればいいんじゃないの?
と思った次第。それじゃばいちゃー。
0 件のコメント:
コメントを投稿