Memulakan bekas untuk dijalankan pada MySQL menggunakan Kubernetes
P粉315680565
P粉315680565 2024-03-26 19:48:31
0
1
351

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粉315680565
P粉315680565

membalas semua(1)
P粉683665106

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!