-->

2010-07-25

/etc/updatedb.conf の修正の例

バックアップのディレクトリを除外できていなかった。
 # Paths which are pruned from updatedb database
-PRUNEPATHS="/tmp /var/tmp /root/.ccache"
-PRUNEPATHS="${PRUNEPATHS} /var/cache /mnt/share/backup"
+PRUNEPATHS="/tmp /var/tmp /root/.ccache /var/cache /mnt/share/backup"

2010-07-16

dev-libs/gmp の再インストールの例

閲覧
$ lv /var/lib/portage/world

削除
$ sudo emerge -Cav dev-libs/gmp

エラーになる。
$ sudo emerge --update --deep --newuse --verbose --tree --with-bdeps=y --ask world

バイナリのインストール
$ sudo PORTAGE_BINHOST=http://tinderbox.dev.gentoo.org/default-linux/x86/ emerge -avgK dev-libs/gmp

PORTAGE_BINHOSTは
$ grep ^CHOST /etc/make.conf
CHOST="i686-pc-linux-gnu"
の場合。

再インストール
$ sudo emerge --oneshot -av dev-libs/gmp

確認
$ equery belongs dev-libs/gmp

手動で削除(--oneshotを付け忘れた場合)
$ sudo vi /var/lib/portage/world

http://tinderbox.dev.gentoo.org/default-linux/x86/dev-libs/
http://theoutsideofparr.blogspot.com/2009_05_01_archive.html

2010-07-11

my.cnfの追記の例

[mysql]
デフォルトの文字コード
default-character-set=utf8
タブで入力の補完。ディストリによってはデフォルト (mysql -u xxx --no-auto-rehash で確認)
auto-rehash

[mysqld]
デフォルトの文字コード
default-character-set=utf8
必ずutf8のデータが来る場合。こないとバックアップ、リストア時に悲惨かもしれない。
SELECT CHAR_LENGTH('全角の文字'); がおかしいが気にしない場合 default-character-set=binary をいろんな[xxx]に書いとけば良い。文字列関連がおかしくてもいいのであれば早くなるかもしれない。
skip-character-set-client-handshake
例えばもし5.0.xxの低いバージョンから5.0.xxの高いバージョンにアップしてリストアできなくなり、実はlatin1のテーブルにutf8,sjis,eucjpなどのlatin1以外を入れていたぜ、ということであれば、該当する低いバージョンのソースかrpmなどを探して他のどこかにインストールしてリストアして成功して再度binary指定でバックアップして、などやれば助かるかもしれません。
例えば、
show create table tablename;
 CREATE TABLE `tablename` ... CHARSET=latin1
であれば特に文字コードについてマニュアルを読むべきです。
latin1は特殊な値ではなく文字コードなので、例えばsjisをeuc-jpとして扱うと文字化けするのと同じようなミスです。
関係ないですが
http://www.php.net/manual/ja/function.mysql-set-charset.php
注意: 文字セットを変更するにはこの方法を使うことを推奨します。 mysql_query() で SET NAMES .. を実行する方法はお勧めできません。
どこかでsjisのバックスラッシュに関するドライバの設定云々と読んだような気がします。
//mysql_query("set names xxx");
mysql_set_charset("xxx");

/var/lib/mysqlのディレクトリを変更
datadir = /mnt/share/mysql
CREATE TABLE ... ENGINE=InnoDB ... 指定無しのデフォルト値
default_table_type = innodb
datadirのbinlogを10日後に消す
expire_logs_days = 10

接続数
max_connections = 80
管理(rootなど)用に残す
max_user_connections = 72
mysqlの中のプロセスの作成が再利用される。
thread_cache_size = 32
普通のアプリのタイムアウト。バッチ処理の場合に伸ばす。SET wait_timeout=86400;SET GLOBAL と書くと変えられる場合は戻さないとずっとそのままです。
wait_timeout = 30
SQL文の長さのMAX
net_buffer_length = 16K

myisam用の重要な値。msqyl専用のmyisam専用のサーバーの場合 5~9割
key_buffer_size = 128M
テーブルごとのfopenの保存する数。1024以上の場合制限解除(/etc/security/limits.conf). 1ユーザー1テーブルとかの場合、リリース後であれば祈る。
table_cache = 256
たぶんmyisamのselect専用のキャッシュ
query_cache_size = 32M

index無しソート
sort_buffer_size = 8M
myisam用?
myisam_sort_buffer_size = 8M
ランダムリード
read_rnd_buffer_size = 4M
連続リード
read_buffer_size = 4M
index無しjoin
join_buffer_size = 2M

内部データ。エラーがログに出る。増やす。出る。増やす。
innodb_additional_mem_pool_size = 16M
重要な値。msqyl専用のinnodb専用のサーバーの場合 5~9割
innodb_buffer_pool_size = 2048M
テーブルのファイルばらばら。管理の利点、サイズ増えすぎない。
innodb_file_per_table = true
commit時にディスク書き込み
innodb_flush_log_at_trx_commit = 1
バッファリングの重複をoff
innodb_flush_method = O_DIRECT
ログのメモリ
innodb_log_buffer_size = 16M
ログのファイル (/var/lib/mysql/ib_logfile0,1)バージョンによって変更後にリスタートでエラーor変化しない。変化させたい場合は消してからリスタート。
innodb_log_file_size = 64M
ログのファイル数 (/var/lib/mysql/ib_logfile0,1)
innodb_log_files_in_group = 2

手順
http://dsas.blog.klab.org/archives/50860867.html
mymemcheck を鵜呑みにする。
http://linux.mini13i.gotdns.org/?MySQL%2F%BA%C7%C5%AC%B2%BD%2F%A5%B5%A1%BC%A5%D0%A5%D1%A5%E9%A5%E1%A5%BF
他にも沢山解説サイトがあるので読む。
http://dev.mysql.com/doc/refman/4.1/ja/innodb-start.html
そして上記などの公式サイトの説明を読む。
$ mysqladmin variables
未設定時のデフォルト値がわからないので見る。
mysqlクラスターには関係ない。