Linuxめも

MySQL

MySQLではInnoDBエンジンのデフォルトでは、単一カラムインデックスのインデックスキーは最大で 767 バイトまでしか指定できません。
https://dev.mysql.com/doc/refman/5.6/ja/innodb-restrictions.html

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

my.confの設定変更により、3,072byteに拡張することができます。

[mysqld]
innodb_large_prefix
innodb_file_per_table=1
innodb_file_format=Barracuda

MySQL5.7.7からはファイルフォーマットはBarracudaが標準となるため、上記の記述は不要となります。
https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

767byte制限がかかっている場合はutf8ではインデックスを作成するカラムは255文字。
MySQL5.5からサポートされるutf8mb4では191文字となります。

MariaDB

MariaDBの場合、バージョン10.1ではダメっぽいのでバージョンを上げます。
リポジトリをインストールしてupdate。

$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
$ sudo yum update MariaDB

怒られたので手動で行う必要がありそうです。

A MySQL or MariaDB server package (MariaDB-server-10.1.32-1.el7.centos.x86_64) is installed.

Upgrading directly from MySQL 10.1 to MariaDB 10.2 may not
be safe in all cases.  A manual dump and restore using mysqldump is
recommended.  It is important to review the MariaDB manual's Upgrading
section for version-specific incompatibilities.

A manual upgrade is required.

- Ensure that you have a complete, working backup of your data and my.cnf
  files
- Shut down the MySQL server cleanly
- Remove the existing MySQL packages.  Usually this command will
  list the packages you should remove:
  rpm -qa | grep -i '^mysql-'

  You may choose to use 'rpm --nodeps -ev <package-name>' to remove
  the package which contains the mysqlclient shared library.  The
  library will be reinstalled by the MariaDB-shared package.
- Install the new MariaDB packages supplied by MariaDB Foundation
- Ensure that the MariaDB server is started
- Run the 'mysql_upgrade' program

This is a brief description of the upgrade process.  Important details
can be found in the MariaDB manual, in the Upgrading section.

念の為に各データベースのdumpは取っておきましょう。

MariaDBを停止。

# systemctl stop mysql

MariaDBをアンインストールして、再度インストール。

# yum remove MariaDB-*
# yum install MariaDB

Postfixもアンインストールされてしまうので、再度インストールします。

# yum install postfix

バックアップされていたmy.cnfを復活。

# mv /etc/my.cnf.rpmsave /etc/my.cnf

MariaDBを起動してupgradeコマンドを実行。

# systemctl start mysql
# mysql_upgrade
$ mysql --version
mysql  Ver 15.1 Distrib 10.2.14-MariaDB, for Linux (x86_64) using readline 5.1

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:26