Étant donné que le répertoire de données MySQL a été placé dans le répertoire racine lors de l'installation de la base de données, l'espace de stockage est désormais insuffisant. Je souhaite déplacer le répertoire de données vers un autre répertoire via mv, mais les données Une fois le répertoire déplacé vers un autre répertoire de données, le démarrage de la base de données échoue.
Ce test est basé sur MySQL 8.0.31
mysql> shutdown; Query OK, 0 rows affected (0.02 sec)
shell> pwd /mysql80
shell> mv /mysql80 /data shell> cd /data/mysql80/svr shell> ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql
shell> chown -R mysql.mysql /data
shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf
shell> /data/mysql80/svr/mysql/bin/mysqld_safe \ --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
mysqld : Fichier '/mysql80/dbdata/data5001/log/binlog.000012' introuvable (OS errno 2 - Aucun fichier ou répertoire de ce type )
2023-02-27T10:38:09.240576 +08:00 0 [ERREUR] [MY-010958] [Serveur] Impossible d'ouvrir le fichier journal.2023-02-27T10:38:09.240657+ 08:00 0 [ERREUR] [MY-010041] [Serveur] ] Impossible d'initialiser le journal tc2023-02-27T10:38:09.240718+08:00 0 [ERREUR] [MY-010119] [Serveur ] Abandon
2023-02-27T10:38:10.548605 +08:00 0 [Système] [MY-010910] [Serveur] /data/mysql80/svr/mysql/bin/mysqld : Arrêt terminé (mysqld 8.0. 31) MySQL Community Server - GPL.
#🎜🎜 #
L'erreur signalée ici montre que le fichierbinlog
est introuvable et que le répertoire debinlog</ code> affiché dans l'erreur est toujours le même qu'avant, mais le répertoire dans le fichier de configuration a été modifié#🎜🎜 #<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:bash;">shell> grep &#39;log-bin&#39; my5001.cnf log-bin=/data/mysql80/dbdata/data5001/log/binlog log-bin-trust-function-creators</pre><div class="contentsignin">Copier après la connexion</div></div><br/>7 Résolution de problèmes</p></blockquote>Enfin, grâce à la recherche, il a été constaté que le chemin absolu de chaque fichier <code>binlog
est stocké dans l'adresse du fichierbinlog.index
, le chemin ici est toujours le chemin précédent, le contenu est le suivant : # 🎜🎜#shell> cat binlog.index /mysql80/dbdata/data5001/log/binlog.000001 /mysql80/dbdata/data5001/log/binlog.000002 /mysql80/dbdata/data5001/log/binlog.000003 /mysql80/dbdata/data5001/log/binlog.000004 /mysql80/dbdata/data5001/log/binlog.000005 /mysql80/dbdata/data5001/log/binlog.000006 /mysql80/dbdata/data5001/log/binlog.000007 /mysql80/dbdata/data5001/log/binlog.000008 /mysql80/dbdata/data5001/log/binlog.000009 /mysql80/dbdata/data5001/log/binlog.000010 /mysql80/dbdata/data5001/log/binlog.000011 /mysql80/dbdata/data5001/log/binlog.000012Copier après la connexionModifiez le chemin absolu de
binlog
dans le fichierbinlog.index
:binlog
文件,并且报错显示的binlog
的目录还是之前的,但是配置文件中的目录已经修改shell> sed -i 's#/mysql80#/data/mysql80#g' binlog.index shell> cat binlog.index /data/mysql80/dbdata/data5001/log/binlog.000001 /data/mysql80/dbdata/data5001/log/binlog.000002 /data/mysql80/dbdata/data5001/log/binlog.000003 /data/mysql80/dbdata/data5001/log/binlog.000004 /data/mysql80/dbdata/data5001/log/binlog.000005 /data/mysql80/dbdata/data5001/log/binlog.000006 /data/mysql80/dbdata/data5001/log/binlog.000007 /data/mysql80/dbdata/data5001/log/binlog.000008 /data/mysql80/dbdata/data5001/log/binlog.000009 /data/mysql80/dbdata/data5001/log/binlog.000010 /data/mysql80/dbdata/data5001/log/binlog.000011 /data/mysql80/dbdata/data5001/log/binlog.000012Copier après la connexion7.问题解决
最后通过查找发现
binlog.index
文件中存放着每个binlog
文件的绝对路径地址,这里的路径还是之前路径,内容如下:shell> /data/mysql80/svr/mysql/bin/mysqld_safe --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &Copier après la connexion修改
binlog.index
文件中binlog
的绝对路径:sed -i 's#/mysql80#/data/mysql80#g' relaylog.indexCopier après la connexion8.启动数据库
# 重启实例 mysql> restart; # 启动主从复制 mysql> start replica;Copier après la connexion数据库启动成功。
9.作为从节点
需要注意的是,如果该实例还作为其他实例的从节点,还需要设置 relaylog.index 文件中relay log的绝对路径,否则会报如下错误: 错误日志报错:
2023-02-27T15:56:55.224372+08:00 0 [ERROR] [MY-010599] [Repl] log /mysql80/dbdata/data5002/log/relaylog.000002 listed in the index, but failed to stat.
2023-02-27T15:56:55.224422+08:00 0 [ERROR] [MY-011059] [Repl] Error counting relay log space.
2023-02-27T15:56:55.226571+08:00 0 [ERROR] [MY-010426] [Repl] Slave: Failed to initialize the master info structure for channel ''; its record may still be present in 'mysql.slave_master_info' table, consider deleting it.
2023-02-27T15:56:55.226622+08:00 0 [ERROR] [MY-010529] [Repl] Failed to create or recover replication info repositories.执行 start replica 时也会报错:
# 客户端报错
mysql> start replica;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
# error log报错
2023-02-27T15:57:53.858798+08:00 8 [ERROR] [MY-013124] [Repl] Slave SQL for channel '': Slave failed to initialize relay log info structure from the repository, Error_code: MY-01312410.问题解决
修改
8. 🎜🎜#rrreeerelaylog.index
rrreeeLa base de données a démarré avec succès.
9. En tant que nœud esclave
#🎜🎜# Il est à noter que si cette instance sert également de nœud esclave pour d'autres instances, vous devez également définir le chemin absolu du journal de relais dans le fichier relaylog.index, sinon l'erreur suivante sera signalée : Erreur de journal d'erreur : #🎜🎜##🎜🎜##🎜🎜#2023-02-27T15:56:55.224372+08:00 0 [ERREUR. ] [MY-010599] [Repl] journal / mysql80/dbdata/data5002/log/relaylog.000002 répertorié dans l'index, mais n'a pas réussi à stat.#🎜🎜#2023-02-27T15:56:55.224422+08:00 0 [ERREUR] [MY-011059] [Repl] Erreur de comptage de l'espace du journal du relais.#🎜🎜#2023-02-27T15:56:55.226571+08:00 0 [ERREUR] [MY-010426] [Repl] Esclave : échec de initialisez la structure d'information principale du canal '' ; son enregistrement peut toujours être présent dans la table 'mysql.slave_master_info', pensez à le supprimer.#🎜🎜#2023-02-27T15:56:55.226622+08:00 0 [ERREUR] [ MY-010529] [Repl] Échec de la création ou de la récupération des référentiels d'informations de réplication.#🎜🎜##🎜🎜##🎜🎜#Une erreur sera également signalée lors de l'exécution de la réplique de démarrage : #🎜🎜##🎜🎜##🎜🎜 ## Erreur client #🎜🎜#mysql> démarrer la réplique #🎜🎜#ERROR 1872 (HY000) : l'esclave n'a pas réussi à initialiser la structure des informations du journal de relais à partir du référentiel#🎜🎜## erreur du journal des erreurs#🎜🎜#2023-02- 27T15:57:53.858798+08:00 8 [ERREUR] [MY-013124] [Repl] SQL de l'esclave pour le canal '' : l'esclave n'a pas réussi à initialiser la structure des informations du journal de relais à partir du référentiel, code d'erreur : MY-013124#🎜🎜## 🎜🎜##🎜🎜#10.Solution du problème#🎜 🎜##🎜🎜#Modifier le chemin absolu du journal du relais dans le fichierrelaylog.index
#🎜🎜#rrreee#🎜🎜#Redémarrer le base de données et démarrez la réplication maître-esclave#🎜🎜#rrreee#🎜🎜 #À ce stade, la réplication maître-esclave revient à la normale. #🎜🎜#Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!