Dengan aplikasi seni bina perkhidmatan mikro yang meluas, Docker telah menjadi pilihan penggunaan yang sangat popular. Walau bagaimanapun, bagi mereka yang baru menggunakan Docker untuk penggunaan perkhidmatan mikro dan masih dalam fasa pembelajaran, di mana untuk meletakkan pangkalan data boleh menjadi persoalan yang mengelirukan. Artikel ini akan meneroka tempat untuk meletakkan pangkalan data dalam perkhidmatan mikro Docker dan cara mengendalikan penyimpanan berterusan dan sandaran pangkalan data.
Pertama, mari kita semak beberapa asas perkhidmatan mikro dan Docker.
Apakah perkhidmatan mikro?
Perkhidmatan mikro ialah seni bina perisian berdasarkan perkhidmatan kecil dan autonomi Perkhidmatan ini direka bentuk mengikut fungsi perniagaan, dan setiap perkhidmatan boleh digunakan, ditingkatkan, dikembangkan dan diselenggara secara bebas. Perkhidmatan yang berbeza boleh menggunakan tindanan teknologi yang berbeza untuk memaksimumkan fleksibiliti dan kebolehskalaan.
Apakah itu Docker?
Docker ialah aplikasi yang berjalan pada sistem pengendalian Linux dan merupakan teknologi kontena yang boleh digunakan untuk membungkus dan menjalankan aplikasi. Bekas Docker ialah format pembungkusan serba lengkap, boleh laku dan mudah alih yang boleh mengandungi aplikasi dan semua kebergantungan yang diperlukannya (cth., masa jalan, perpustakaan, pembolehubah persekitaran, dll.).
Sekarang, mari kita kembali kepada isu penempatan pangkalan data dalam perkhidmatan mikro Docker.
Dalam perkhidmatan mikro Docker, pangkalan data biasanya dibahagikan kepada dua jenis: pangkalan data hubungan dan pangkalan data bukan hubungan. Contohnya, MySQL, PostgreSQL dan Oracle ialah pangkalan data hubungan, manakala MongoDB, Cassandra dan Redis ialah pangkalan data bukan hubungan. Di sini kita akan memberi tumpuan kepada pangkalan data hubungan.
Menjalankan pangkalan data sebagai bekas ialah amalan yang paling biasa dalam perkhidmatan mikro Docker. Untuk pangkalan data hubungan seperti MySQL, kita boleh menggunakan imej MySQL rasmi. Dengan cara ini kita boleh menggunakan dan memulakan pangkalan data dengan mudah, dan bekas pangkalan data boleh dihantar dan digunakan dengan bekas lain.
Walau bagaimanapun, kelemahan kaedah ini ialah bekas Docker bersifat sementara dan data dalam bekas tidak disimpan selepas bekas dihentikan. Ini bermakna jika kontena ranap atau perlu dimulakan semula, semua data dalam pangkalan data akan hilang. Oleh itu, kita perlu menggunakan kaedah penyimpanan yang berterusan untuk mengelakkan situasi ini.
Salah satu cara paling biasa untuk mengekalkan data ialah menggunakan volum Docker. Kelantangan Docker ialah peranti storan berterusan bebas dalam Docker yang boleh digunakan dengan bekas. Dengan memasang volum ke dalam bekas pangkalan data, kami boleh menyimpan data pada cakera dan bukannya dalam bekas. Dengan cara ini, data kekal dalam kelantangan walaupun bekas itu dipadamkan atau dicipta semula.
Apabila menggunakan volum Docker, kita perlu memberi perhatian kepada beberapa perkara:
Untuk pangkalan data MySQL, anda boleh menggunakan langkah berikut untuk melekapkan volum ke dalam bekas Docker:
$ docker volume create mysql-data
$ docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -d mysql:latest
Dalam arahan di atas, kami melekapkan volum ke direktori /var/lib/mysql bekas, yang merupakan direktori pangkalan data lalai untuk MySQL .
Apabila menggunakan volum Docker, jika data dalam volum sangat penting, anda harus membuat sandaran data dengan kerap. Terdapat banyak alat dalam Docker yang boleh menyandarkan data secara automatik dalam jumlah. Untuk pangkalan data MySQL, kita boleh menggunakan perintah mysqldump untuk menyandarkan pangkalan data ke cakera setempat atau di tempat lain.
$ docker exec mysql-server sh -c 'exec mysqldump --all-databases -u root -p"$MYSQL_ROOT_PASSWORD"' > /my/backup/folder/all-databases.sql
Dalam arahan di atas, kami menyandarkan pangkalan data ke direktori /my/backup/folder.
Satu lagi cara biasa untuk meletakkan pangkalan data ialah memasang pangkalan data pada hos dan bukannya menjalankan pangkalan data sebagai bekas. Kelebihan kaedah ini ialah data pangkalan data boleh disimpan secara berterusan pada mesin hos tanpa perlu menggunakan volum untuk menyimpan data. Walau bagaimanapun, jika kita perlu menggunakan berbilang hos, adalah tidak mudah untuk meletakkan pangkalan data pada setiap hos. Pada masa ini, kita perlu menggunakan teknologi pengelompokan pangkalan data lain untuk memastikan penyegerakan data antara berbilang hos.
Ringkasan
Dalam perkhidmatan mikro Docker, peletakan pangkalan data adalah isu yang sangat kompleks, dan sifat sementara kontena dan penyimpanan data yang berterusan perlu dipertimbangkan. Dengan menjalankan pangkalan data sebagai bekas dan menggunakan volum untuk mengekalkan data, kami boleh menggunakan dan mengurus pangkalan data kami dengan mudah. Walau bagaimanapun, kami juga perlu memberi perhatian untuk melindungi data dalam volum dan menyandarkan data dengan kerap. Jika anda perlu menggunakan berbilang hos, anda perlu mempertimbangkan teknologi pengelompokan pangkalan data lain.
Atas ialah kandungan terperinci Di manakah pangkalan data diletakkan dalam perkhidmatan mikro docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!