Rumah > Soal Jawab > teks badan
Saya menjalankan mysql sebagai bekas init bagi penggunaan kubernetes.
Atas pelbagai sebab saya perlu memulakan mysql/memulihkan sandaran mysql dalam bekas init -> simpan ke dalam pvc dan kemudian pod utama akan menjadi pod mysql dengan data yang dilampirkan padanya.
Ini kerana saya perlu mengambil gambar cakera, dan saya akan meminta CI memantau syot kilat sehingga pod sedia/berjalan.
Jadi saya tidak boleh membuang dump.sql ke dalam docker-entrypoint-initdb.d dan selesai dengannya.
Ini kerana sumber kubernetes tangkapan jilid akan diduduki sebelum pemulihan/penyediaan data. Itulah sebabnya saya perlu menyediakan data dalam bekas init.
Masalah yang saya hadapi ialah bekas init memerlukan arahan untuk mengatasi entrypoint.sh (untuk benar-benar memulakan mysql dll)
Setakat ini saya mempunyai skrip bash ini yang dijalankan apabila bekas bermula.
./entrypoint.sh --ignore-db-dir=lost+found echo "done"(这只是为了测试目的,看看它是否被处理,但实际上没有) mysql -u root -ppassword < /data/backups/backup.sql mysql -u root -ppassword < /sql-files/sql-files.sql
Masalahnya, pintu masuk dijalankan, tetapi kemudian tersangkut
2022-01-14T15:07:54.809983Z 0 [Note] Event Scheduler: Loaded 0 events 2022-01-14T15:07:54.810442Z 0 [Note] mysqld: ready for connections. Version: '5.7.36' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
dan tidak pernah meneruskan ke langkah seterusnya skrip bash. Saya cuba menambah & pada akhirnya untuk dijalankan di latar belakang, tetapi itu tidak menyelesaikan masalah.
Ada sesiapa yang mengalami masalah ini? Bagaimanakah saya boleh menjalankan titik masuk secara manual dan kemudian melaksanakan beberapa arahan.
Saya juga mencuba ini, ia sepatutnya berjalan di latar belakang dan keluar, tetapi masih tidak.
#!/bin/sh start_mysql () { sleep 30 #mysql -u root -ppassword < /data/backups/backup.sql #mysql -u root -ppassword < /sql-files/sql-files.sql echo "hi" sleep 30 echo "done 123354543543" >> /data/backups/test.txt echo "actually done" exit 0 } start_mysql & ./entrypoint.sh --ignore-db-dir=lost+found
P粉6836651062024-03-27 11:39:41
Anda boleh mulakan mysql tidur di latar belakang sebelum mysqld. Adakah ini berfungsi untuk anda?
start_mysql { sleep 30 mysql -u root -ppassword < /data/backups/backup.sql mysql -u root -ppassword < /sql-files/sql-files.sql } start_mysql & ./entrypoint.sh