Rumah  >  Soal Jawab  >  teks badan

Memulakan bekas untuk dijalankan pada MySQL menggunakan Kubernetes

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粉315680565P粉315680565206 hari yang lalu359

membalas semua(1)saya akan balas

  • P粉683665106

    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

    balas
    0
  • Batalbalas