投稿

ラベル(MySQL)が付いた投稿を表示しています

MariaDB Serverのチューニング設定(2025年8月版)

MariaDB Serverのチューニング設定を見直したときの覚書。 環境: FreeBSD 14.3-RELEASE-p2, MariaDB Server 10.11.13 1. MySQLTunerを実行 git cloneして実行。 # cd /home/software/ # git clone https://github.com/major/MySQLTuner-perl.git # cd MySQLTuner-perl/ # perl mysqltuner.pl 実行結果をGemini 2.5 Proに貼り付けて提案を聞く。 2. 設定変更する前にデータをバックアップ 全データをバックアップ。 # cd  # mysqldump -u root -p --all-databases --single-transaction --routines --events --default-character-set=utf8mb4 | gzip > ./hoge01_20250818.sql.gz 設定ファイルをコピーしてGemini先生が提案した新設定を記述。 # cd /usr/local/etc/mysql/conf.d/ # cp server.cnf server.cnf.bak20250818 # less /usr/local/etc/mysql/conf.d/server.cnf [server] # Basic Settings character-set-server          = utf8mb4 collation-server              = utf8mb4_general_ci user                          = mysql basedir                ...

PHP8からMariaDBへUnix Socketで接続する設定

FreeBSDのMariaDBへphpからUnix socketで接続できるようにしたときの覚書。 環境: FreeBSD 14.0, MariaDB 15.1, PHP 8.3.6 (FreeBSDの)PHPで接続先を「localhost」に設定すると、Unix socketを参照しようとする。 「127.0.0.1」すればTCP経由で接続するけど、せっかくなのでTCPを無効にして、Unix socketだけで待ち受けするようにしてみた。 TCPを無効にするには公式サイトを参考に。 参考:  Configuring MariaDB for Remote Client Access - MariaDB Knowledge Base まずは待ち受け中のポート確認。 # netstat -an -p tcp MariaDBの設定ファイル編集。 「port」をコメントアウトする。 # cd /usr/local/etc/mysql/ # less my.cnf [client-server] #port   = 3306 socket  = /var/run/mysql/mysql.sock 「bind-address」をコメントアウトして、「skip-networking」 「skip-bind-address」 を追記する。 「skip-bind-address」は不要だと後で知った。 # less conf.d/server.cnf [mysqld] user                            = mysql # port                          = 3306 # inherited from /usr/local/etc/mysql/my.cnf # socket                  ...

WordPressのUPDATE wp_optionsが遅い? → flush_rewrite_rulesが原因

MariaDBのslow_logを眺めていたらUPDATE wp_optionsに1秒掛かっていたので調査したときの覚書。 環境: CentOS Stream 8, MariaDB Server 10.5.9, WordPress 6.1.1 1.遅いSQL文を調査 MariaDBのslog_logはテーブルに保存するように設定(CSV engine)してある。 # less /etc/my.cnf.d/mariadb-server.cnf # Slow Query slow_query_log = ON long_query_time = 1 log_output = TABLE MariaDBのdatadir内に保存されたslow_logファイルを参照する。 # less /var/lib/mysql/mysql/slow_log.CSV よく表示されているのが次のupdate文。 UPDATE `wp_options` SET `option_value` = '' WHERE `option_name` = 'rewrite_rules' なぜかrewrite_rulesの値を更新している。 ソースコードを追ってみると、これはwp-includes/class-wp-rewite.phpのflush_rules()で実行される。 ページ読み込み時に毎回実行されている。なぜ? flush_rules()を呼び出すのはflush_rewrite_rules() どんな駄目プラグインがflush_rewrite_rules()を呼ぶのかとdebug_backtrace()を置いて実行してみると。。。 参考:  PHP: debug_backtrace - Manual 自作プラグインが呼んでた。。。(泣) rest_url_prefixをフックしたときに呼んでる。 セキュリティ的な理由で/wp-json/から変更したいときにやってた。 2年前の覚書:  WordPressの/wp-json/を変更したい この記事を参考にした人は本当にごめんなさい。 何でflush_rewrite_rules()を記載したのかもう忘れた。 とりあえず削除する。 autoloadが原因で遅くなる場合もあるらしい。 参考:  WordPr...

MariaDBのチューニング設定(2023年2月版)

slow_logを眺めていたら「遅いの多くね?」と思って調査したときの覚書。 環境: CentOS Stream 8, MariaDB 10.5.9 ほぼWordPress用のデータベース。 InnoDBエンジンしか使っていない(systemは除く)。 1.MySQLTunerを実行 MariaDBにも対応しているチューニング設定を確認してくれるスクリプトをインストールする。 参考:  major/MySQLTuner-perl: MySQLTuner is a script written in Perl that will assist you with your MySQL configuration and make recommendations for increased performance and stability. # cd /opt/software/ # git clone https://github.com/major/MySQLTuner-perl.git # cd MySQLTuner-perl/ # git tag # git checkout v1.9.9 # perl mysqltuner.pl [!!]になっているところを調べて修正していく。 2.設定変数を調べて理解していく 設定値のメモ。 phpMyAdminのVariablesで現在の値と説明を見るのが早い。 共通設定 skip-name-resolve: クライアントのIPアドレスを逆引きする機能を無効。 query_cache_type(default:OFF): MairaDB 10.1からはquery_cache_size値で自動設定されるので設定不要。 table_open_cache(default:2000): 同時に開かれるテーブル数。 table_definition_cache(default:400): テーブル定義をキャッシュする数。tableの総数が多い場合は引き上げた方がいい。 performance_schema(default:OFF): SQL実行パフォーマンス情報を取得する機能 join_buffer_size(default:256K): インデックスを使わない場合の最小メモ...

utf8mb4_general_ciとutf8mb4_unicode_ciの違い

utf8mb4_general_ciとutf8mb4_unicode_ciの違いってなんだっけ?と思った時の覚書。 環境: MariaDB 10.5.9 参考サイト MariaDB(MySQL)の照合順序の話 Supported Character Sets and Collations - MariaDB Knowledge Base utf8mb4_general_ciとutf8mb4_unicode_ciの違いは、 文字比較と照合順序の違い 。 両方とも半角大文字と半角小文字は同じ文字と判断するが、utf8mb4_general_ciはカタカナとひらがなを別文字として扱う。 いざとなればSQL文を発行するときにcollateで指定できるので、generalかunicodeかはそこまで神経質にならなくても良さそう。 ホームページのバックエンドであれば「utf8mb4_general_ci」で十分。 設定・確認方法 # less /etc/my.cnf.d/mariadb-server.cnf [server] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci 設定変更したら再起動が必要 # systemctl restart mariadb データベース変数を確認する(phpMyAdminでもOK)。 # mysql -p > show variables like "%coll%"; > show variables like "%char%"; MariaDBがサポートしている照合順序の確認。 > SHOW COLLATION WHERE Charset = 'utf8mb4'; ちなみにWordPressのwp-config.phpにあるDB_COLLATEは設定しなくてもデータベースのデフォルト値を取得して設定する。 【関連記事】 CentOS Stream 8 + Nginx + PHP + MariaDB + Postfixの環境を構築(2021年版) iPhoneから投稿したときに特殊文字以降が表示されない

TCP/IPとUNIX Socketの接続でどれくらい違うか

イメージ
NginxからPHP-FPMの接続とPHP-FPMからMariaDBの接続をTCP/IPとSocketで比較してみた。 環境: CentOS 6.7, nginx 1.8.0, PHP 5.6.15, MariaDB 10.0.22 基本的な概念は下記記事が分かりやすい。 nginx - 調べなきゃ寝れない!と調べたら余計に寝れなくなったソケットの話 - Qiita   リクエストはWindows上のab.exe(Apache Bench)からMac上のVMware Fusionの仮想マシン(CentOS)にあるWordPressに対して行う。 まずはPHP-FPMもMariaDBもTCP/IP接続で計測 C:> .\ab.exe -n 50 -c 5 http://dev.hoge.or.jp/ 1回目:14.03 [#/sec] 2回目:14.00 [#/sec] 3回目:19.92 [#/sec] 平均: 15.98 [#/sec] PHP-FPMへの接続をUNIX Socketに変えてみる。 PHP-FPMの設定 # less /etc/php-fpm.d/www.conf ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/www.sock Nginxの設定 # less /etc/nginx/conf.d/hoge.conf #fastcgi_pass  127.0.0.1:9000; fastcgi_pass   unix:/var/run/php-fpm/www.sock; サービス再起動 # /etc/rc.d/init.d/php-fpm restart # /etc/rc.d/init.d/nginx restart sockファイルをnginxから読み取れるように権限を変更しないと「502 Bad Gateway」になる # chown nginx.www /var/run/php-fpm/www.sock 計測実行 1回目:18.35 [#/sec] 2回目:17.64 [#/sec] 3回目:14.01 [#/sec] 平均: 16.66 [#/sec] ちょっとだけ速くなった。   次はMar...

WordPressを定期バックアップしてGoogle Cloud Storageに保存

イメージ
WordPressのデータベースと添付ファイルをGoogle Cloud Storageに定期バックアップするスクリプトを書いた時の覚書。 Amazon S3でもほとんど同じ。次期サービスのためにGoogle Cloud Storageを試してみたかった。   目次 Google Developers Consoleでプロジェクト作成 → バケット作成 コマンドラインツール「gsutil」のインストール 自動バックアップスクリプトの仕様   1.Google Developers Consoleでプロジェクト作成 → バケット作成 管理コンソール からプロジェクト作成。 Google Cloud Storageの公式サイト の「今すぐ試す」からいくと60日間$300の試用期間が付いてお得。 プロジェクト作成後にバケット(クラウド上のディスクみたいなもの)を作成しておく。   2.コマンドラインツール「gsutil」のインストール 長くなったので別記事にまとめた。 SE奮闘記: gsutilをInstallしてGoogle Cloud Storageに接続   3.自動バックアップスクリプトの仕様 バックアップスクリプトの仕様は下記。 全てのデータベースをmysqldumpでバックアップ 月初め(1日)はwp-content/uploadsを全部バックアップ 3日以降は前日までの差分をバックアップ ファイルはgzipでアーカイブして「2015/05」のような階層フォルダに分けてCloud Storageにアップロード 複数のWordPressがインストールされている場合のも対応 参考にしたシェルスクリプト Label305-Forks/Backup-to-Google-Cloud-Storage | GitHub   作ったのをGitHubで公開。 DaikiSuganuma/wordpress-backup-google-cloud-storage | GitHub     どれくらいの料金(保存容量+転送容量)が必要か分かったので、どこかのタイミングで添付ファイルはクラウドに直接保存・参照する仕組みに変えたい。 ...

node-mysqlからnode-mariasqlに乗り換える

イメージ
NodeJSの開発にも慣れたことだし、そろそろMariaDBのスレッドプールに頼らずにnode-mysqlのpool機能を使って、DB接続を使いまわすようにしようと調べたときの覚書。 環境: MariaDB Server 10.0.14, node-mysql 2.5.2, node-mariasql 0.1.21   調査していると node-mysql より速い node-mariasql を発見。 node-mysqlの作者が速度改善に取り組んだ記事が面白い。 felixge/faster-than-c | GitHub (上記記事の日本語版)C言語より高速なJavaScriptによるバイナリ操作が話題 | A-Listers   速度比較ベンチマーク Node.JS MySQL client library benchmarks   ただDB接続をpoolしたい場合は別モジュールと組み合わせて開発する必要がある。 This is not issue, but just question... · Issue #43 · mscdex/node-mariasql   今のところnode-mariasqlに乗り換えて、MariaDBのスレッドプールに頼ることにした。 node-mysqlのpool機能を使って接続を使いまわすようにした方が結果的に速くなるかもしれない。   試してみて気付いたこと。 Node.js v0.11では動かない。v0.10では動く。 selectした行ごとにasync.mapで非同期処理している中でqueryを投げると「Already Closed」エラーになる。 → res.on('end')の中でclient.close()を呼び出すと回避できた。 確かに速い気がするが、いつでもnode-mysqlに置き換えられるように作っておいた方が良さそう。   < 2015/04/09 Modified > Apache Benchで試してみたところ速度的に大差ない。 node-mariasqlで実行したとき数値のカラム(countした値など)も文字列で返ってくるので、やっぱりnode-mysqlで開発することにした。...

MariaDB(MySQL)設定のチューニング

イメージ
5年前にも書いた けど、調べ直したときの覚書。 環境: MariaDB 10.0.13   参考サイト Server System Variables - MariaDB Knowledge Base MySQL :: MySQL 5.5 Reference Manual :: 5.1.4 Server System Variables DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!   変数名 デフォルト 説明 max_connections 151 最大同時接続数。 Node.jsから非同期で処理する場合は一気に増加するので多めに設定。 thread_pool_size CPUの数 同時実行するスレッドグループの数。 デフォルトのままでいい。 参考: Thread pool in MariaDB 5.5 - MariaDB Knowledge Base thread_cache_size 0 キャッシュするスレッドの数。 "pool-of-threads"の場合無視される。 table_open_cache 400 全てのスレッドでオープンするテーブルの数。 多すぎても少なすぎてもダメらしい。 参考: Optimizing table_open_cache - MariaDB Knowledge Base 参考: MySQL :: MySQL 5.1 リファレンスマニュアル :: 6.4.8 MySQL でのテーブルのオープンとクローズの方法 key_buffer_size 134217728 MyISAMのインデックスをキャッシュするメモリ容量。全てのスレッドで共通。 実メモリの25%が妥当らしい。 参考: Optimizing key_buffer_size - MariaDB Knowledge Base sort_buffer_size 2M ソートするときにスレッドごとに使うメモリ容量。大きすぎるとメモリが足りなくなるので注意。 read_rnd_buffer_size 262144 ソート後にレコードを読み込むときに使用するメモリ容量。これもスレッドごと。 join_buffer_size 128KB インデック...

MariaDB Galera Clusterをインストールしてデータベースをクラスター化

イメージ
新サービスのサーバー構成を考えているときの覚書。 環境: CentOS 6.5 x86_64, MariaDB Galera Server 10.0.13 前の記事も参考に。 SE奮闘記: MariaDB, MySQLの冗長化, 負荷分散の構成を考える サービス全体のサーバー構成。 ロードバランサー02やWeb02がいればさらに安心できる。 ちなみにMariaDB Galera Clusterの最小ノード数は「3」。今回はデータベースをクラスター化するまで。   参考サイト MariaDB Galera Clusterを試す (1) | さくらインターネット研究所 Galera - MariaDB Knowledge Base CentOS 6.5 で MariaDB の Galera Replication Cluster を試す | CUBE SUGAR STORAGE   目次 YUM経由でインストール 起動と設定 2台目以降のノード設定 クラスターに参加   1.YUM経由でインストール 公式サイトを参考にYUMのリポジトリを追加する。 MariaDB - Setting up MariaDB Repositories [web01]# vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1   インストール実行 [web01] # yum search MariaDB [web01] # yum install MariaDB-Galera-server epelリポジトリを使ったので、 前の記事 を参考に登録した方がいいかも。 クラスター構成なので常に稼働する前提。メンテナンスで停止するときは手動で起動するため自動起動はしないようにしておく。 [web01] # chkconfig mysql off     2.起動と設定 公式...

MariaDB, MySQLの冗長化、負荷分散の構成を考える

イメージ
WordPressのデータベースを複数サーバーで冗長化して、負荷分散しながら管理しやすく、将来的にも拡張しやすい構成を考えたときの覚書。 調査した関連技術 MariaDB Server スタンドアローン版。 他のサーバーとはレプリケーション機能で冗長化する。 10.0からは並列レプリケーションが実装されて同期スピードが速くなったらしい。 更新はマスターに。参照はスレーブからというのが一般的。 MariaDB Galera Cluster 複数のサーバーでお互いを監視して同期してくれる。 マスター、スレイブの概念がない。 全てのノードに対して更新/参照が可能で、一つのノードへの更新が全てに伝搬される。 ノードの追加・削除は自動でやってくれる。 負荷分散(ロードバランス)の仕組みは別途用意しないといけない。 MySQL Cluster 管理ノード、データノード、SQLノードでクラスタを実現する。 データノードがデータの一部を持ち合うこと(シャーディング)で負荷分散になる。その分ネットワークがボトルネックになりやすい。 「 MySQL Cluster 構築・運用バイブル 」が分かりやすい Spider Storage Engine 複数サーバー間でデータを分散させるシャーディングを実現可能なストレージエンジン。 分散されたデータの管理はSpiderが行うため、使う側は通常のテーブルと同じように扱える。 MariaDB 10.0.4からバンドルされている。 MySQL Proxy MySQL専用のロードバランサー。 MariaDBとの組み合わせで動作するのかな? 参考: 漢(オトコ)のコンピュータ道: MySQL Clusterへの接続方法 PHP mysqlnd_ms mysqlnd(MySQL Native Driver)のプラグイン。 設定に従いロードバランスしてくれる。情報少ない。 参考: PHP: mysqlndプラグイン と MySQL Proxyの比較 - Manual 参考: PHP: mysqlnd_ms - Manual Linux Vertual Server (LVS) Linuxの負荷分散ソリューションの仕組み。 LinuxカーネルにはIPVSというロードバランスソフトウェアが組み込まれているので、管...

安くて汎用性のあるサーバーホスティング会社を探す

イメージ
今仕事で使っている専用サーバーの契約期限がもうすぐ切れるので、他のホスティング会社を調べたときの覚書。 現在使用しているのは GMOの専用サーバー 。 コストパフォーマンスはいいのだけれど、下記の件があってからネットワークが信用できなくなった。 異様に名前解決が遅い時があった。→ いつの間にか直った。 gitコマンドを実行しようとしたら「github.com」へアクセスできず、サポートに問合せたら上位ネットワークでIP制限かけてた。 サポートの対応も、こちらが証拠を揃えないと動いてくれない。ネットワーク上でIP制限かけるのはいいけど(DOS攻撃対策とかもあるし)通知してほしいと言っても出来ないらしい。 私:「・・・ということは、御社のサービスを利用している限りは突然サーバーにアクセス出来なくなることがあるということですか?」 担当者:「そうなります。。。」 愚痴はここまで。   移行候補はこちら。 サービス コメント AWS(Amazon Web Service) 従量制なので、いくら掛かるか見積もりが難しい。 Google Compute Engine(Google Cloud Platform) AWSと同じ従量制。面白そうなので本当はこれにしたかった。 さくらVPS 安くて安心できる感じがする。複数台借りてローカルネットワークを構築出来るのもいい。 カゴヤ・クラウド/VPS CPU12core / Memory4GB / HDD800GBが月額3456円 チューニングをしっかりすれば、これで十分な気がする。 さくらVPSで複数台+ローカルネットワークにして、MySQL Clusterで運用してみようかと考え中。 参考サイト MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS | Think IT(シンクイット) MariaDB Galera Clusterを試す (1) | さくらインターネット研究所 dbts2013:MariaDB Galera Cluster 活用例   < Related Posts > Node.js環境のためにMySQLからMariaDBに移行 Singaporeで安いレンタル...

Node.js環境のためにMySQLからMariaDBに移行

イメージ
Android, iOSアプリからのアクセスをNode.jsで実装したけれど、データベース(MySQL)がたまに応答しなくなる現象が発生したので調査したときの覚書。 環境:CentOS 5.10 x86_64, MySQL 5.5.36, Node.js v0.10.26, node-mysql 2.1.0   1.MySQL Community Editionの限界 Node.js + node-mysql からMySQLにクエリを投げると、その分だけスレッドが立つ(1つのコネクションに対して1つのスレッド)。 デフォルトの設定では、すぐ「too many connections」とエラーになってしまうので、my.cnfに「max_connections」を設定する。 しかし、コネクション数が256を超えた辺りで、レスポンスが非常に悪くなるらしい。公式サイトにコネクション数とパフォーマンスのグラフがある。 MySQL :: MySQL Enterprise Scalability my.cnfの「thread_handling=pool-of-threads」としたいけど、これはMySQL Enterprise版の機能らしい。 調べてみると、MySQLからフォークした「MariaDB」というのがMySQL互換でスレッドプールも備えているので試してみた。   2.MariaDBについて 下記サイトが詳しい。 MariaDB - Wikipedia MySQLとMariaDBの違い一覧 - The Programmer’s Guide to the Parallel World   3.MariaDB 5.5をCentOSにインストール(失敗) ※この章は失敗したログ。成功した方法は次の章で 。 まずは既存データベースのバックアップ # mysqldump -p hogedb > hogedb_20140310.sql MySQLサーバーは停止。 # /etc/rc.d/init.d/mysqld stop 公式サイトを参考にYUMのリポジトリを追加する。 MariaDB - Setting up MariaDB Repositories Installing Mari...

【MySQL】実行したQuery(SQL)をLog出力して監視する設定

イメージ
MySQLに発行するSQLを監視したかったので設定したときの覚書。 環境: CentOS 5.9 x86_64, MySQL 5.5.29 参考にしたのは下記Site MySQLでクエリログを出力する方法 - 覚え書き | OSS Fan   MySQL起動Scriptを編集。 「--log」 「--general-log」を追加 # vi /etc/rc.d/init.d/mysqld $exec   --datadir="$datadir" --socket="$socketfile" \         --pid-file="$mypidfile" \         $MYOPTIONS \         --basedir=/usr --user=mysql --general-log >/dev/null 2>&1 &   設定cnfを編集 # vi /etc/my.cnf [mysqld] # output query log log=/var/log/mysql_query.log   ログファイルの作成 # touch /var/log/mysql_query.log # chmod 640 /var/log/mysql_query.log # chown mysql. /var/log/mysql_query.log MySQL再起動 # /etc/rc.d/init.d/mysqld restart 監視開始 # tail -f /var/log/mysql_query.log ほっておくとファイル容量が大きくなるので、普段はOFFにしておいた方がいいかも。   < 2013/...

郵便番号データをCSVからMySQLへImport

イメージ
日本全国の郵便番号をDatabaseに取り込んだときのMemo. 環境: CentOS 5.8, MySQL 5.5.24 郵便番号のデータはCSV形式で郵政省のOfficial SiteからDownload出来る。データ形式を参考に。 郵便番号データダウンロード - 日本郵便 郵便番号データの説明 - 日本郵便 参考にしたSite. 郵便番号データを定期的に更新するサンプル(Linux & MySQL) | システム開発ブログ(システム開発のアイロベックス|東京都新宿区の業務システム開発会社)   DownloadしたCSVはEditorで開いてUTF8に変換してもいいし、Command Lineでも簡単に出来る。 # iconv -f=sjis -t=utf8 KEN_ALL.CSV > ken_all_utf8.csv phpMyAdminから次のSQLを実行して、保存用のTableをMySQL上に作成。 CREATE TABLE zip_code (     jis        varchar(10)  NULL,     zip_old    varchar(5)   NULL,     zip        varchar(7)   NULL,     addr1_kana varchar(100) NULL,     addr2_kana varchar(100) NULL,     addr3_kana varchar(100) NULL,     addr1      varchar(100) N...

MySQL4.1の環境をXampp for Linuxを使って別Port(3つ目)で構築

前 はSourceからCompileしようとしたけど、既存のMySQLに影響が出たので、Xampp for Linux(Lampp)を使って構築するようにした。 環境はCentOS 5.6 32bit ちなみに既にmysqld, lamppがInstallされているので、このServerにとっては3つ目のMySQL. 今はSingaporeに来たばかりで今のNetwork環境で何とかやりくりしているけど、次回引越しするときはServer, Network環境を設計し直してやると思いながら・・・。 MySQL 4.1はXampp for Linux 1.4.16までなので、 こちら からDownload. 解凍 # tar xzvf xampp-linux-1.4.16.tar.gz # mv lampp /opt/lampp14 今回はMySQLだけ利用したいので他は起動させない。 # cd /opt # lampp14/etc/my.cnf [client] port            = 3309 socket          = /opt/lampp14/var/mysql/mysql.sock [mysqld] port            = 3309 socket          = /opt/lampp14/var/mysql/mysql.sock tmpdir          = /tmp/mysql41/ # mkdir /tmp/mysql41 # chmod 777 /tmp/mysql41 # cp /opt/l...

CentOSにMySQL4.1をInstallして複数起動(失敗編)

お客様の環境に合わせて、MySQL4.1の環境が欲しかったので、SourceからCompileして、既存のMySQLと競合しないように別Portで起動させたときのMemo. (途中で諦めたんだけど・・・) 環境はCentOS 5.6 32bit 必要なToolsをInstallしておく # yum install gcc gcc-c++ libtermcap-devel SourceのDownloadは こちら から。 # cd /opt/software # unzip openlogic-mysql-4.1.22-all-src-1.zip # cd mysql-4.1.22-src/ compile optionを確認する # ./configure --help Install prefixを変更してcompile #  ./configure --prefix=/usr/local/mysql41 # make compileの途中で error: redeclaration of C++ built-in type のようなErrorで怒られたら、(検索して解決したあとに) # make clean # make distclean して再compile. # make install installが完了したら、下記Official Documentに従って初期化を行う。 MySQL :: MySQL 4.1 リファレンスマニュアル :: 2.4 インストール後の設定とテスト # ./scripts/mysql_install_db # cd /usr/local/mysql41 # bin/mysqld_safe --user=mysql & ここで、 A mysqld process already exists と怒られたので、mysql_install_dbの出力messageに従うことにした。 # cp support-files/mysql.server /etc/rc.d/init.d/mysql41 # chmod 755 /etc/rc.d/init.d/m...

[wordpress]同じDB上にprefixだけ変更してcopyする

Databaseが一つだけしか使えない場合、stage(demo)用とlive(本番)用で2つのwordpressをprefixを変えて共存させたときのmemo. 最初からinstallすれば間違いないのだけれど、既にあるDBをCopyしてみた。Backupするのを忘れずに。 まずはphpMyAdminでExportしたSQL FileのTable名を一括で置換 `wp -> `stage_wp これをimportした後、同じように下記Dataをprefixに従って変更する。 SELECT * FROM `stage_wp_usermeta` where meta_key like '%wp_%' SELECT * FROM `stage_wp_options` where option_name like 'wp_%' これで一応動いているっぽい。 < 2012/04/10 Modified > Indonesia, Thailand, Vietnamなど向けに多言語対応するときに、英語SiteをまるっとCopyするのによく使う。 URLを置換しただけだと管理画面にLoginしたときに下記Errorになる。 You do not have sufficient permissions to access this page. これは上記のwp_usermetaとwp_optionsのData書き換えが必要。

オープンソースな統合マシン監視・管理ツール「ZABBIX」

前に HINEMOS について調査したことはあったけど、 ZABBIX という似たような管理ソフトウェアが気になったので調査。ライセンスはGPLv2 特徴として気になった点は 管理インターフェースがWeb(PHP) MySQLにデータを保存 なので拡張がしやすいのではないかと思ったり。詳しくは ZABBIX日本語サイト で。 そのうち時間があったらインストールして試す予定。 他の管理ツールの比較サイトは下記参照。 第1回:「Nagios」「Hobbit」「ZABBIX」「Hinemos」を徹底比較 Wikipediaの ネットワーク監視 でもいろんなソフトへのリンクがある。   ▼関連記事 【Linux】マシンの負荷やトラフィックをグラフ化する「Munin」をインストール サーバ管理ソフト「Hinemos(ヒネモス)」を調査

PostgreSQL、MySQL保守用のバックアップ、リストアのコマンド

毎回検索して実行しているので、自分用メモ。 環境: CentOS(linux), lampp   ▼PostgreSQL バックアップ $ pg_dump dbname > /tmp/output.sql バックアップ(drop文付き) $ pg_dump --clean dbname > /tmp/output.sql リストア $ psql dbname < /tmp/input.sql リストアしたら VACUUM する(アナライズも) $ vacuumdb -d dbname --analyze   ▼MySQL バックアップ(パスワード付き)。lamppが導入されているならphpMyAdmin経由の方が簡単 # mysqldump -p dbname > /tmp/output.sql リストア(パスワード付き) # mysql -p dbname < /tmp/input.sql   ▼保守 ファイル(ディレクトリ)の圧縮(アーカイブ用) tar コマンド ※フルパスで実行するとパスごとアーカイブするのでカレントディレクトリを移動して実行するほうがいい。 # tar -czvf /tmp/archive.tar.gz target/ 解凍 # tar -xzvf /tmp/archive.tar.gz 10日以内に更新されたファイルを抽出して圧縮する。 (2015/04/19 Modified)xargsは大量のファイルを抽出する場合に失敗する。参考: つらつらと気づいたことを書いていきます。人狼とか。 # find ./target/ -mtime -10 | xargs tar czvf ./hoge.tgz # find ./target/ -mtime -10 -print0 | tar -czv -T - --null -f ./hoge.tgz 「.svn」「node_modules」を除外したディレクトリ一覧をパス付きで。 # find -type d -name '.svn' -prune -o -name 'node_modules' -prune -o -type d -print さらに書き込み可になっているディレクトリ一覧 # ls ...