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"
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'
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
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
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.
- Direktori ruang cakera tidak mencukupi
- 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
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;
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
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.