###前提・実現したいこと
FreeBSD 10.3上でMySQLを5.7.10から5.7.12にportmasterを使ってアップデートしたところ、DBにアクセスできなくなりました。
できればダンプからデータベースを復元することなくアップデートを終わらせたいのですが、どのファイルを修正したら良いのでしょうか。
###発生している問題・エラーメッセージ
mysql_upgradeを実行すると、次のようなエラーが出ます。
Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. mysql_upgrade: [ERROR] 1146: Table 'mysql.plugin' doesn't exist
ログファイルを見ると、次のようにエラーが出ています。pluginテーブルだけでなく、他のMySQLテーブルにも「テーブルが存在しない」というエラーがいくつも出ます。
2016-05-08T01:11:56.201600Z 0 [Warning] InnoDB: Cannot open table mysql/plugin from the internal data dictionary of InnoDB thoug h the .frm file for the table exists. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how to resolve the issue. mysqld: Table 'mysql.plugin' doesn't exist 2016-05-08T01:11:56.201790Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 2016-05-08T01:11:56.203440Z 0 [Note] InnoDB: Buffer pool(s) load completed at 160508 10:11:56 2016-05-08T01:11:56.201790Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
###該当のソースコード
/etc/rc.confからは次のように起動しています。
lang
1mysql_enable="YES" 2mysql_dbdir="/usr/local/spool/mysql" 3mysql_args="--mysqld-safe-log-timestamps=HYPHEN"
my.cnfの内容は、次のようにしています。
[client] port = 3306 socket = /tmp/mysql.sock [mysql] no_auto_rehash default-character-set = utf8mb4 [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock bind-address = 127.0.0.1 basedir = /usr/local datadir = /usr/local/spool/mysql/mysql tmpdir = /var/db/mysql_tmpdir slave-load-tmpdir = /var/db/mysql_tmpdir secure-file-priv = /var/db/mysql_secure log-bin = mysql-bin log-output = TABLE master-info-repository = TABLE relay-log-info-repository = TABLE relay-log-recovery = 1 slow-query-log = 1 server-id = 1 sync_binlog = 1 sync_relay_log = 1 binlog_cache_size = 16M expire_logs_days = 30 default_password_lifetime = 0 enforce-gtid-consistency = 1 gtid-mode = ON safe-user-create = 1 lower_case_table_names = 1 explicit-defaults-for-timestamp = 1 myisam-recover-options = BACKUP,FORCE open_files_limit = 32768 table_open_cache = 16384 table_definition_cache = 8192 net_retry_count = 16384 key_buffer_size = 256M max_allowed_packet = 64M query_cache_type = 0 query_cache_size = 0 long_query_time = 0.5 innodb_buffer_pool_size = 1G innodb_data_home_dir = /usr/local/spool/mysql/mysql innodb_log_group_home_dir = /usr/local/spool/mysql/mysql innodb_data_file_path = ibdata1:128M:autoextend innodb_temp_data_file_path = ibtmp1:128M:autoextend innodb_flush_method = O_DIRECT innodb_log_file_size = 256M innodb_log_buffer_size = 16M innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_autoinc_lock_mode = 2 skip-symbolic-links character-set-server = utf8mb4 [mysqldump] max_allowed_packet = 256M quote_names quick
###試したこと
まず、/etc/my.cnfを/usr/local/etc/mysql/my.cnfに移動しました。
次にmy.cnfの中身をmy.cnf.sampleからコピーし、ディレクトリ指定を自分の環境に合わせて書き換えました。(sampleからコピーする前は、デーモンとして起動することもできていませんでした。)
mysqlにログインしてshow tableで確認すると、一覧にpluginテーブルも含まれていますが、テーブル内容を表示しようとすると、エラーとなります。
mysql> use mysql; Database changed mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | engine_cost | | event | | func | | general_log | | gtid_executed | | help_category | | help_keyword | | help_relation | | help_topic | | host | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | server_cost | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 32 rows in set (0.01 sec) mysql> select * from plugin; ERROR 1146 (42S02): Table 'mysql.plugin' doesn't exist
###補足情報(言語/FW/ツール等のバージョンなど)
OSは、FreeBSD10.3-RELEASE-p2です。
MySQLは5.7.10から5.7.12にアップデートしようとしています。
アップデートにはportmaster 3.17.9を使用しました。
VOBは/usr/local/spool/mysqlの下に置いています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/09 07:41