Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menyelesaikan masalah yang MySQL gagal dimulakan selepas mengalihkan direktori data

Bagaimana untuk menyelesaikan masalah yang MySQL gagal dimulakan selepas mengalihkan direktori data

WBOY
WBOYke hadapan
2023-05-26 10:13:052528semak imbas

Gambaran keseluruhan latar belakang

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.

Penghasilan semula masalah

Ujian ini berdasarkan MySQL 8.0.31

1 Tutup pangkalan data

mysql> shutdown;
Query OK, 0 rows affected (0.02 sec)

2 direktori data semasa

shell> pwd
/mysql80

3 Alihkan keseluruhan direktori data MySQL ke direktori lain melalui mv

shell>  mv /mysql80 /data
shell>  cd /data/mysql80/svr
shell>  ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql

4 Ubah suai kumpulan pemilik

shell> chown -R mysql.mysql /data

5 direktori data dalam fail konfigurasi

shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf

6 Mulakan pangkalan data

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)

2023-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.

Ralat yang dilaporkan di sini menunjukkan bahawa Fail

tidak ditemui, dan direktori binlog yang ditunjukkan dalam ralat masih sama seperti sebelumnya, tetapi direktori dalam fail konfigurasi telah diubah suai binlog

shell> grep &#39;log-bin&#39; my5001.cnf 
log-bin=/data/mysql80/dbdata/data5001/log/binlog
log-bin-trust-function-creators

7

Akhirnya, melalui carian, didapati bahawa alamat laluan mutlak setiap fail

disimpan dalam fail

, 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 &#39;s#/mysql80#/data/mysql80#g&#39; 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
binlog8 Mulakan pangkalan data

shell> /data/mysql80/svr/mysql/bin/mysqld_safe 
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &

Pangkalan data berjaya dimulakan.

9. Sebagai nod hamba

Perlu diingat bahawa jika kejadian itu juga digunakan sebagai nod hamba untuk kejadian lain, anda juga perlu menetapkan laluan mutlak log masuk geganti fail relaylog.index, jika tidak, ia akan melaporkan Ralat berikut: Ralat log ralat:

2023-02-27T15:56:55.224372+08:00 0 [ERROR] [MY-010599] [ Repl] log /mysql80/dbdata/data5002/log /relaylog.000002 disenaraikan dalam indeks, tetapi gagal untuk statistik.
2023-02-27T15:56:55.224422+08:00 0 [ERROR] [MY]0110 [Repl] Ralat mengira ruang log geganti.

2023-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.
2023-02-27T15:56:55.226622+08:00 0 [ERROR] [MY-010529] [Repl] Gagal mencipta atau pulihkan repositori maklumat replikasi.

Ralat juga akan dilaporkan semasa melaksanakan replika permulaan:

# Ralat pelanggan
mysql> 1872 (HY000): Hamba gagal untuk memulakan struktur maklumat log geganti daripada repositori

# 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

Ubah suai laluan mutlak log geganti dalam fail

sed -i &#39;s#/mysql80#/data/mysql80#g&#39; relaylog.index

Semula Mulakan pangkalan data dan mulakan replikasi tuan-hambarelaylog.index

# 重启实例
mysql> restart;
# 启动主从复制
mysql> start replica;

Pada masa ini, replikasi tuan-hamba kembali normal.

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam