MariaDBでPlease run mysql_upgradeのエラーが大量に出ていた。

/var/log/messagesを見ると↓のログが大量に出力されていた。

Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade
Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade
Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade

Please run mysql_upgradeと有るようにupgradeを実行すれば良いようだ。

何も考えずに実行

# mysql_upgrade
Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
FATAL ERROR: Upgrade failed

ああ・・ユーザーとパスワードですね・・・。

再度実行

# mysql_upgrade -u root -p
Enter password:
Phase 1/7: Checking and upgrading mysql database
Processing databases

mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
続きを読む "MariaDBでPlease run mysql_upgradeのエラーが大量に出ていた。"

mysqltunerをつかってmariadbをチューニングしてみた。

VPSサーバをリプレースしたのでmysqltunerをつかってmariadbをチューニングしたのでメモ。

epelからyumでinstallできます。
バージョンは古いですが管理が楽なので気にしません。

# yum install mysqltuner

実行は簡単
↓の様に叩いてユーザーとパスをいれます。

# mysqltuner --buffers

ずらずらーっと出てきますがチューニングした方がいいよって
指摘は一番最後のRecommendationsって所にこんな感じで出力されます。

-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries which have no LIMIT clause
Set thread_cache_size to 4 as a starting value
Variables to adjust:
query_cache_size (>= 8M)
tmp_table_size (> 16M)
max_heap_table_size (> 16M)
thread_cache_size (start at 4)

以下の様に出てるのでテーブルリペアをかけます。

Run OPTIMIZE TABLE to defragment tables for better performance

# mysqlcheck -u root -p --auto-repair --optimize --all-databases

Variables to adjust:の項目で指摘された項目をmy.cnfに当て込みます。
自分の環境では以下で落ち着きました。

# vim /etc/my.cnf

[mysqld]
query_cache_size = 8M
tmp_table_size = 16M
max_heap_table_size = 16M
thread_cache_size = 4
query_cache_limit = 2M

チューニングを施してDB再起動をしてると最終的に以下のメッセージになりました。

-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Reduce or eliminate unclosed connections and network issues
Variables to adjust:
query_cache_limit (> 4M, or use smaller result sets)

以下のメッセージはmariadb起動から時間がたってないので正確じゃーないよって
いってます、訳せばそのまんま

MySQL started within last 24 hours - recommendations may be inaccurate

query_cache_limitについては、アクセス状況とかサーバーの負荷と相談なので様子見ですね。
とりあえず環境が改善されるといいですね。

mysqlhotcopyでエラーがでた。。

mysqlhotcopyで、mysqlのオンラインバックアップを取得しようとしましたが
↓のエラーが出て実行できませんでした。。。

# mysqlhotcopy dbname -u root -p pass /home/db_backup/
mysqlhotcopy: symbol lookup error: /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so: undefined symbol: is_prefix

DBDと出てますね。
足りないパッケージがあるようですので入れちゃいます。
CentALTを指定してこんな感じでmysqlといいつつもmariadbの依存パッケージとupdateが入ってきました。

続きを読む "mysqlhotcopyでエラーがでた。。"