J'ai des difficultés à faire en sorte que MySQL 5.7 utilise le disque brut (un périphérique bloc, contournant le système de fichiers) pour ses données. Ma compréhension de l'architecture la documentation c'est qu'en fait, la première fois que mysqld est exécuté, la configuration doit avoir le paramètre newraw
dans la valeur de innodb_data_file_path
et doit être remplacé par raw
pour la deuxième exécution.
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = //./E::512Gnewraw
default-time-zone = SYSTEM
basedir = C:/MySQLSrv/
tmpdir = F:/MySQLTemp/
datadir = F:/MySQLData-raw/
pid-file = mysql.pid
port = 3306
socket = MySQL
enable-named-pipe = 1
skip-external-locking
key_buffer_size = 16M
innodb_log_file_size = 26547M
max_allowed_packet = 90M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
innodb_page_size = 64K
Les E : et F : sont des partitions sur un grand vdisk (~35 TB) - partitionnement GPT, la première partition est réglée sur "non formatée" par la gestion de disque de Windows, et la seconde est un NTFS conventionnel de 4 TB. (J'ai réglé la taille du fichier de données innodb sur 512 Go juste temporairement, après avoir échoué à faire fonctionner le système avec 4 To, ce qui est en fait ce que je veux pour un test). Je démarre essentiellement l'installation de MySQL à partir de zéro, donc ma première exécution de mysqld a été faite avec l'option --initialize-insecure
option. Cette opération a pris un certain temps (à peu près le temps auquel je m'attendais, compte tenu de la taille configurée pour le fichier de données et du taux de transfert du disque observé dans le Gestionnaire de tâches) et a finalement produit la structure de fichier habituelle sous le nom configuré de datadir
. Il s'agit notamment de la mysql
avec plusieurs *.ibd
ce qui, je n'en suis pas sûr, est censé se produire. Néanmoins, aucune erreur n'apparaît dans les journaux de mySQL, et la ligne de progression qui se termine à 524200 suggère que le tablespace a été initialisé.
2021-10-21T09:47:55.686131Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-10-21T09:47:55.692239Z 0 [Warning] InnoDB: innodb-page-size has been changed from the default value 16384 to 65536.
100 200 300 400 500 <snip> 523900 524000 524100 524200
100 200 300 400 500 <snip> 26200 26300 26400 26500
100 200 300 400 500 <snip> 26200 26300 26400 26500
2021-10-21T09:56:54.318875Z 0 [Warning] InnoDB: New log files created, LSN=130881
2021-10-21T09:56:54.471343Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-10-21T09:56:54.533557Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 389cd84c-3255-11ec-8327-005056971dce.
2021-10-21T09:56:54.536035Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-10-21T09:56:56.339721Z 0 [Warning] CA certificate ca.pem is self signed.
2021-10-21T09:56:56.436944Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
J'ai donc changé l'option pour raw
et lancez le service (je l'avais déjà créé auparavant). Le service se termine immédiatement, indiquant qu'il voulait créer un tablespace (encore une fois ?) parce qu'il ne le trouvait pas, et que c'est une mauvaise idée si les redo logs existent - ce qui est le cas, la page --initialize-insecure
les a créés, comme prévu.
2021-10-21T10:08:09.625276Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-10-21T10:08:09.625424Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2021-10-21T10:08:09.625800Z 0 [Note] MySQL (mysqld 5.7.29) starting as process 3356 ...
2021-10-21T10:08:09.634217Z 0 [Warning] InnoDB: innodb-page-size has been changed from the default value 16384 to 65536.
2021-10-21T10:08:09.634627Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2021-10-21T10:08:09.634873Z 0 [Note] InnoDB: Uses event mutexes
2021-10-21T10:08:09.635033Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier
2021-10-21T10:08:09.635262Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2021-10-21T10:08:09.636051Z 0 [Note] InnoDB: Number of pools: 1
2021-10-21T10:08:09.636460Z 0 [Note] InnoDB: Not using CPU crc32 instructions
2021-10-21T10:08:09.638441Z 0 [Note] InnoDB: Initializing buffer pool, total size = 52G, instances = 16, chunk size = 128M
2021-10-21T10:08:10.597917Z 0 [Note] InnoDB: Completed initialization of buffer pool
2021-10-21T10:08:11.118090Z 0 [Note] InnoDB: The first innodb_system data file '//./E:' did not exist. A new tablespace will be created!
2021-10-21T10:08:11.118733Z 0 [ERROR] InnoDB: redo log file '.\ib_logfile0' exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log files before creating new system tablespace.
2021-10-21T10:08:11.119256Z 0 [ERROR] InnoDB: InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.
2021-10-21T10:08:11.336787Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2021-10-21T10:08:11.337058Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2021-10-21T10:08:11.337286Z 0 [ERROR] Failed to initialize builtin plugins.
2021-10-21T10:08:11.337474Z 0 [ERROR] Aborting
2021-10-21T10:08:11.337615Z 0 [Note] Binlog end
2021-10-21T10:08:11.337839Z 0 [Note] Shutting down plugin 'CSV'
2021-10-21T10:08:11.338806Z 0 [Note] MySQL: Shutdown complete
Qu'est-ce qui m'échappe ? Pourquoi MySQL ne trouve-t-il pas le fichier de données du disque brut après l'avoir initialisé ?