Memandangkan direktori data MySQL diletakkan dalam direktori akar semasa memasang pangkalan data, kini terdapat ruang storan yang tidak mencukupi, saya ingin mengalihkan direktori data ke direktori lain melalui mv, tetapi data direktori dipindahkan ke Selepas direktori data lain, memulakan pangkalan data gagal.
Ujian ini berdasarkan 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 &
Pada masa ini, memulakan pangkalan data gagal dan log ralat melaporkan ralat berikut:
<. 🎜>mysqld: Fail '/mysql80/dbdata/data5001/log/binlog .000012' tidak dijumpai (OS errno 2 - Tiada fail atau direktori sedemikian)Ralat yang dilaporkan di sini menunjukkan bahawa Fail2023-02-27T10:38:09.240506 +08:08:08 ERROR] [MY-010958] [Server] Tidak dapat membuka fail log
2023-02-27T10:38:09.240657+08:00 0 [ERROR] [MY-010041] [Server] Tidak dapat memulakan tc log.
2023-02-27T10:38:09.240718+08:00 0 [RALAT] [MY-010119] [Pelayan] Menggugurkan
2023-02-27T10:38:10.548:605+08:605+08:605 MY-010910] [Pelayan] /data/mysql80/svr/mysql/ bin/mysqld: Penutupan selesai (mysqld 8.0.31) Pelayan Komuniti MySQL - GPL.
tidak ditemui, dan direktori binlog
yang ditunjukkan dalam ralat masih sama seperti sebelumnya, tetapi direktori dalam fail konfigurasi telah diubah suai binlog
shell> grep 'log-bin' my5001.cnf log-bin=/data/mysql80/dbdata/data5001/log/binlog log-bin-trust-function-creators
, di sini Laluan masih laluan sebelumnya, dan kandungannya adalah seperti berikut: binlog.index
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.000012
binlog
Ubah suai laluan mutlak dalam fail : binlog.index
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.000012
binlog
8 Mulakan pangkalan data shell> /data/mysql80/svr/mysql/bin/mysqld_safe --defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &
9. Sebagai nod hamba
2023-02-27T15:56:55.224422+08:00 0 [ERROR] [MY]0110 [Repl] Ralat mengira ruang log geganti.# Ralat pelanggan2023-02-27T15:56:55.226571+08:00 0 [ERROR] [MY-010426] [Repl] Hamba: Gagal memulakan struktur maklumat induk untuk saluran '' ; rekodnya mungkin masih ada dalam jadual 'mysql_master_info', pertimbangkan untuk memadamkannya.
Ralat juga akan dilaporkan semasa melaksanakan replika permulaan:
2023-02-27T15:56:55.226622+08:00 0 [ERROR] [MY-010529] [Repl] Gagal mencipta atau pulihkan repositori maklumat replikasi.
mysql> 1872 (HY000): Hamba gagal untuk memulakan struktur maklumat log geganti daripada repositoriUbah suai laluan mutlak log geganti dalam fail# laporan ralat log ralat
2023-02-27T15:57:53.858798+08:00 8 [ERROR] [MY-013124] [ Repl] Slave SQL untuk saluran '': Slave gagal memulakan struktur maklumat log geganti daripada repositori, Error_code: MY-013124
10
sed -i 's#/mysql80#/data/mysql80#g' relaylog.index
Semula Mulakan pangkalan data dan mulakan replikasi tuan-hambarelaylog.index
# 重启实例 mysql> restart; # 启动主从复制 mysql> start replica;
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah yang MySQL gagal dimulakan selepas mengalihkan direktori data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!