:::: MENU ::::
Posts tagged with: mysql

CORESERVERのmysqlとmysqldumpのパス

CoreServerで動かしているWordPressでDBのバックアップが取られていない事に、今更気づいたので、確認した所、mysqlとmysqldumpが見つかりませんとの表示が出ていた。

CoreServerでは、mysqlとmysqldumpのパスが違う所にあるようなので、下記のパスに設定

mysqldump : /usr/local/mysql/bin/mysqldump
mysql : /usr/local/mysql/bin/mysql

これでOKです。

せめて、/usr/local/bin下にでも入れてくれればいいのにね。


Cronで走らせていたmysqlが警告を出していた

幾つか運用しているLinux上で、毎週、MySQLのバックアップを取るように設定しているのだが、いつの日からか下記の警告が出ていた。(原稿現在:sl6,mysql:5.1.69)

— Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.

/etc/cron.weeklyにバックアップスクリプトを下記のように記述していた。

mysqldump --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

どうやら、events optionを指定しろと言うことらしいので、引数に–eventsを追加

mysqldump --events --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --events --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

これで、警告は出なくなった。

ちなみに、警告出てた時でも、バックアップ自体は取れてました。


LogAnalyzerのテーブル修復

LogAnalyzerのテーブルが破損し、表示されなくなったので、修復した。

下記は、通常のMySQLコマンドです。

# mysql -u root -p
mysql> use Syslog;
mysql> check table SystemEvents extended;
---------------------------+
| Syslog.SystemEvents | check | warning | Table is marked as crashed |
| Syslog.SystemEvents | check | error | Size of datafile is: 20847562752 Should be: 20847562796 |
| Syslog.SystemEvents | check | error | Corrupt |

Syslogと言うDBを検証したところ、Syslog.SystemEventsが破損マークとなっている。
これを、修復

mysql> repair table SystemEvents;
---------------------+
| Syslog.SystemEvents | repair | info | Found block that points outside data file at 20847562668 |
| Syslog.SystemEvents | repair | status | OK

ちなみに、MySQLのテーブル(SystemEventsテーブル)を空にする場合は、

# mysql -u root -p
mysql> use Syslog;
TRUNCATE TABLE SystemEvents;

LogAnalyzerでのMySQLエラー

LogAnalyzerをインストール・設定が終わって、アクセスしたところ、下記のエラー。

Error, MYSQL Extensions are not enabled! Function ‘mysql_connect’ does not exist.

mysqlはインストール・設定したはずなのに?と思っていたら、php-mysqlが入ってなかったと言う落ち。

# yum -y install php-mysql
# service httpd restart

これで、解決した。


mysqld.pidが書き込めないエラー

さくらのVPSを旧プランから新プランへrsyncで転送し、新プランでMySQLを起動しようとしたら、下記のエラーが出た。

mysqld: /usr/local/libexec/mysqld: Can’t create/write to file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 2)

それもそのはずで、転送時に、/var/run下は転送しなかったからなので、/var/run/mysqldがあるわけない。

なので、/var/run/下にmysqldを作成し、Permissionをmysql:mysqlに変更で解決。

# mkdir /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# service mysqld start


MySQL TunerでMySQLチューニング

サーバ引っ越しで、少しメモリが増えたので、MySQLでもチューニングしてみた。

まずは、チューニングプログラムをダウンロード

$ wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl

実行権限を付加

$ chmod +x mysqltuner.pl

実行

MySQLが起動してて、root権限を持っている環境で、実行

$  ./mysqltuner.pl
>>  MySQLTuner 1.2.0 – Major Hayden <major@mhtx.net>
>>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
>>  Run with ‘–help’ for additional options and output filteringPlease enter your MySQL administrative login: root
Please enter your MySQL administrative password:
——– General Statistics ————————————————–
[–] Skipped version check for MySQLTuner script[OK] Currently running supported MySQL version 5.5.22
[OK]Operating on 64-bit architecture
——– Storage Engine Statistics ——————————————-
[–] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
…略
Variables to adjust:
query_cache_size (>= 8M)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
thread_cache_size (start at 4)

my.cnfを修正

上記の「Variables to adjust:」を参考に/etc/my.cnfを修正していく