Rumah pangkalan data tutorial mysql Menganalisis isu yang berkaitan dengan pemulihan kegagalan permulaan kontena Mysql

Menganalisis isu yang berkaitan dengan pemulihan kegagalan permulaan kontena Mysql

Sep 13, 2021 pm 04:45 PM
docker nas

Selepas memulakan semula NAS semalam, saya mendapati NAS ranap semula pagi ini. Anda hanya boleh menutup paksa dan mulakan semula.
Sebelum memulakan bekas docker, saya melaraskan memori bekas mysql kepada 512M. Kemudian, secara tragis, saya mendapati bahawa ia tidak boleh dimulakan. Kemudian saya mendapat tahu bahawa kegagalan untuk memulakan bukan disebabkan saya menyesuaikan ingatan.

Lihat log, paparan adalah seperti berikut:

2020-12-27T02:43:53.375776Z 0 mysqld: [Amaran] Fail konfigurasi boleh tulis dunia '/etc/mysql/my .cnf' diabaikan.
2020-12-27T02:43:53.375776Z 0 mysqld: Ralat pada realpath() pada '/var/lib/mysql-files' (Ralat 2 - Tiada fail atau direktori sedemikian)
2020-12 -27T02:43:53.375776Z 0 [ERROR] [MY-010095] [Server] Gagal mengakses direktori untuk --secure-file-priv. Sila pastikan direktori itu wujud dan boleh diakses oleh Pelayan MySQL value : /var /lib/mysql-files
2020-12-27T02:43:53.376005Z 0 [ERROR] [MY-010119] [Server] Menggugurkan

Baidu, penyelesaiannya ialah dengan semula jalankan bekas mysql , dan tambah -v /mnt/md0/User/wzp/home/www/mysql-files:/var/lib/mysql-files/ pada konfigurasi sebelumnya.

Sekarang inilah masalahnya Apabila saya menjalankan bekas mysql sebelum ini, saya tidak merekodkan arahan run yang lengkap. Nasib baik, anda boleh melihatnya melalui alat rekcod. Apa yang lebih baik ialah alat ini boleh dijalankan melalui docker. Oleh kerana sistem NAS saya bukan pengedaran Linux, banyak alat seperti npm dan yum tidak boleh dipasang.

Untuk maklumat tentang penggunaan rekcod, sila rujuk linuxea: Bagaimana untuk menghasilkan semula arahan untuk melihat parameter docker run

Ringkasnya, penggunaannya adalah seperti berikut:

1 docker install rekcod

$ docker pull nexdrew/rekcod
$ alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod"
Salin selepas log masuk

2 Cara menggunakan:

[root@TNAS-012664 ~]# rekcod mysql ==>mysql是我的容器名
docker run --name mysql --runtime runc -v /mnt/md0/User/wzp/home/www/mysql/:/var/lib/mysql -p 3306:3306/tcp --net bridge --restart no -h 39964e9e508a --expose 3306/tcp --expose 33060/tcp -e 'MYSQL_ROOT_PASSWORD=123456' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'GOSU_VERSION=1.12' -e 'MYSQL_MAJOR=5.7' -e 'MYSQL_VERSION=5.7.30-1debian10' -d -t -i --entrypoint "docker-entrypoint.sh" mysql 'mysqld'
Salin selepas log masuk

Anda boleh melihat bahawa fail pangkalan data saya diletakkan dalam direktori /mnt/md0/User/wzp/home/www/mysql/ Saya telah menyemak fail direktori dan data tidak boleh hilang.

Jadi, saya mencipta bekas mysql2 baharu dengan arahan berikut:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456  --name mysql2 -v /mnt/md0/User/wzp/home/www/mysql/:/var/lib/mysql  -v /mnt/md0/User/wzp/home/www/mysql-files:/var/lib/mysql-files/    mysql

Kemudian, saya memasuki mysql2 dan mendapati saya tidak dapat menyambung ke pangkalan data
docker exec -it mysql2 /bin/bash

Semak status mysql

root@0e83698acbfb:/# mysqld status
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/docker.cnf' is ignored.
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/mysql.cnf' is ignored.
2020-12-27T02:39:41.865252Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-12-27T02:39:41.865455Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 105
2020-12-27T02:39:41.871715Z 0 [ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2020-12-27T02:39:41.872541Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-12-27T02:39:41.872776Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20)  MySQL Community Server - GPL.
root@0e83698acbfb:/# Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!^C
Salin selepas log masuk

Gunakan kaedah berikut untuk memulakan mysqld dalam mod akar

root@0e83698acbfb:/# mysqld --user=root
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/docker.cnf' is ignored.
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/mysql.cnf' is ignored.
2020-12-27T02:40:57.169719Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-12-27T02:40:57.169896Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 116
2020-12-27T02:40:57.184807Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-12-27T02:40:57.241048Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
2020-12-27T02:40:58.241783Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
2020-12-27T02:40:59.242983Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
2020-12-27T02:41:00.244290Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
2020-12-27T02:41:01.245762Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
2020-12-27T02:41:02.247539Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11
Salin selepas log masuk

Skrin terus mencetak Tidak dapat mengunci ./ibdata1 ralat : 11, dan hanya boleh dipaksa untuk mengganggu oleh CTRL-C. Selepas mencari di Baidu, terdapat dua cara untuk menyelesaikan masalah ini

1 Rujuk mysql [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
Analisis artikel ini menunjukkan bahawa ralat adalah terutamanya disebabkan oleh dua sebab berikut Malangnya, kaedah dalam artikel tidak dapat menyelesaikan masalah saya.

  1. Direktori ruang cakera tidak mencukupi
  2. Fail ibdata1 diduduki oleh proses lain

2 Rujuk laporan mysqld InnoDB: Tidak dapat untuk mengunci ralat ./ibdata1: 11Artikel ini menyelesaikan masalah saya dengan sempurna. Operasi berikut dilakukan terutamanya.

2.1 Mula-mula, masukkan direktori tempat pangkalan data mysql saya berada
cd /mnt/md0/User/wzp/home/www/mysql

2.2 Kemudian namakan semula ibdata1 dan fail lain, dan kemudian cp mereka kembali. Saya tidak begitu faham mengapa sebenarnya ini dilakukan.

[root@TNAS-012664 www]# cd /mnt/md0/User/wzp/home/www/mysql/
[root@TNAS-012664 mysql]# ls
 auto.cnf          binlog.index      client-key.pem   dci            '#ib_16384_0.dblwr'   ib_logfile0     mautic               nianbao    performance_schema   robot             shangbiao          undo_001         zeng
 baike             ca-key.pem        company_works    dianzicaipiao  '#ib_16384_1.dblwr'   ib_logfile1     mysql                niuwan     private_key.pem      sara_wiki         sjzt_ry6           undo_002
 bigdatapaltfrom   ca.pem            copyrightdata    gs_data         ib_buffer_pool      '#innodb_temp'   mysql.ibd            pachong    public_key.pem       server-cert.pem   sys                wenshu
 binlog.000001     client-cert.pem   db_huayun        hy_dci_admin    ibdata1              integrate       mysql_upgrade_info   pachong2   qianliu_wiki         server-key.pem    ucenter_huayunyy   yuanqixiaoshuo
[root@TNAS-012664 mysql]# mv ibdata1 ibdata1.bak
[root@TNAS-012664 mysql]# mv ib_logfile0 ib_logfile0.bak
[root@TNAS-012664 mysql]# mv ib_logfile1 ib_logfile1.bak
[root@TNAS-012664 mysql]# cp -a ibdata1.bak ibdata1
[root@TNAS-012664 mysql]# cp -a ib_logfile0.bak ib_logfile0
[root@TNAS-012664 mysql]# cp -a ib_logfile1.bak ib_logfile1
Salin selepas log masuk

2.3 Kemudian saya memadamkan bekas mysql2 sebelumnya, menjalankan bekas mysql2 sekali lagi dengan arahan berikut, dan mendapati bahawa saya boleh menyambung ke pangkalan data mysql.

[root@TNAS-012664 ~]# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456  --name mysql2 -v /mnt/md0/User/wzp/home/www/mysql/:/var/lib/mysql  -v /mnt/md0/User/wzp/home/www/mysql-files:/var/lib/mysql-files/    mysql
1e031247ea46e82f6205db68e7fb1b55389c87e5e2cb13517f9e1ac17d514509
[root@TNAS-012664 ~]# docker exec -it mysql2 /bin/bash
root@1e031247ea46:/# mysql -uroot -p
mysql: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
Salin selepas log masuk

Fikirkan semuanya akan baik-baik saja setelah bekas mysql siap? Tidak, terlalu naif. Terdapat satu lagi episod menanti saya. Saya baru sahaja menyelesaikan bekas mysql di sini, dan tiba-tiba saya mendapati bekas wiki saya hilang tanpa sebab. Nasib baik, fail pangkalan data ada dan semuanya boleh dipulihkan seperti sebelumnya.

1 Gunakan arahan berikut untuk mencipta dua wiki baharu

docker run --name sarawiki --link mysql2:mysql -p 8086:80 -d sarawang85/mediawiki:1.0.0
docker run --name qianliuwiki --link mysql2:mysql -p 8083:80 -d sarawang85/mediawiki:1.0.0
Salin selepas log masuk

2 Kemudian salin fail LocalSettings.php yang disandarkan dan imej logo ke dalam bekas, dan anda selesai.

PS, jika anda mengedit bekas keadaan berhenti dalam antara muka gui docker, seperti menetapkan had memori, bekas baharu dengan nama yang sama sebenarnya akan dibuat. Kerana saya mendapati bahawa selepas saya melakukan ini, saya telah digesa untuk memasang semula apabila saya mengakses wiki saya.

PS sekali lagi, mysql backup mesti diletakkan dalam agenda segera. Had memori mysql tidak boleh dihadkan oleh bekas sahaja, my.cnf juga mesti diubah sewajarnya.

Pembelajaran yang disyorkan: "tutorial video mysql"

Atas ialah kandungan terperinci Menganalisis isu yang berkaitan dengan pemulihan kegagalan permulaan kontena Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Mengubah Sumber Imej Docker di China Cara Mengubah Sumber Imej Docker di China Apr 15, 2025 am 11:30 AM

Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.

Cara membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Cara menjalankan arahan Docker Cara menjalankan arahan Docker Apr 15, 2025 am 11:24 AM

Bagaimana cara menjalankan arahan Docker? Pasang Docker dan mulakan daemon. Perintah Docker Biasa: Docker Images: Paparan Docker Imej PS: Paparan Docker Container Run: Run Container Docker Stop: Stop Container Docker RM: Padam Container Berinteraksi dengan Kontena Menggunakan Docker Command: Docker Exec: Execute Command Docker Lampir

Cara Membina Repositori Swasta oleh Docker Cara Membina Repositori Swasta oleh Docker Apr 15, 2025 am 11:06 AM

Anda boleh membina repositori peribadi Docker untuk menyimpan dan menguruskan imej kontena dengan selamat, memberikan kawalan dan keselamatan yang ketat. Langkah -langkah termasuk: mewujudkan repositori, memberikan akses, mengerahkan repositori, menolak imej, dan menarik imej. Kelebihan termasuk keselamatan, kawalan versi, mengurangkan trafik rangkaian dan penyesuaian.

Cara memanggil Docker LNMP Cara memanggil Docker LNMP Apr 15, 2025 am 11:15 AM

Docker LNMP Container Call Langkah: Jalankan bekas: Docker Run -D -Name LNMP -Container -P 80:80 -P 443: 443 LNMP -Stack Untuk mendapatkan IP Container: Docker Memeriksa LNMP -Container | GREP IPADDRESS ACCESS Laman web: http: // & lt; container ip & gt; /index.phpssh akses: docker exec -it lnmp -container bash akses mysql: mysql -u roo

Cara Menyelamatkan Gambar Docker Cara Menyelamatkan Gambar Docker Apr 15, 2025 am 11:54 AM

Untuk menyimpan imej di Docker, anda boleh menggunakan arahan Docker Commit untuk membuat imej baru, yang mengandungi keadaan semasa bekas yang ditentukan, Sintaks: Docker Commit [Options] Nama Imej Container ID. Untuk menyimpan imej ke repositori, anda boleh menggunakan arahan PUSH Docker, Sintaks: Docker Push Nama Imej [: TAG]. Untuk mengimport imej yang disimpan, anda boleh menggunakan arahan tarik docker, sintaks: docker tarik nama imej [: tag].

Cara Membaca Versi Docker Cara Membaca Versi Docker Apr 15, 2025 am 11:51 AM

Untuk mendapatkan versi Docker, anda boleh melakukan langkah -langkah berikut: Jalankan arahan Docker "Docker -version" untuk melihat versi klien dan pelayan. Untuk MAC atau Windows, anda juga boleh melihat maklumat versi melalui tab versi Docktop GUI atau menu desktop Docker.

See all articles