Mengenai pangkalan data yang tidak sesuai untuk diletakkan di docker, terdapat dua artikel bengkok Satu disiarkan oleh poster asal, dan yang kedua ialah artikel ini, diterjemahkan
Masih sudut pandangan yang sama:
Apabila volum kecil, anda boleh melakukannya secara santai Apabila volum besar, beberapa perkara tidak akan berfungsi dengan cara yang betul pangkalan data, anda memerlukan sokongan pelbagai sistem, termasuk sistem Middleware, sistem kontena.
Jika pangkalan data anda boleh menskalakan secara automatik, pemulihan bencana, bertukar dan dilengkapi dengan penyelesaian berbilang nodnya sendiri, docker ialah penyelesaian yang lebih baik.
Tetapi jika tidak, jangan gunakan docker.
Teks asal juga menjadikannya sangat jelas:
在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。
Apabila trafik kecil, apa-apa sahaja boleh dimasukkan ke dalam kontena. Pangkalan data, aplikasi, hadoop, pelbagai nod, nginx.
Apabila volum adalah besar, perkhidmatan berkaitan penyimpanan tidak sesuai untuk perkhidmatan tanpa kewarganegaraan seperti lapisan aplikasi dan lapisan perniagaan sesuai untuk perkhidmatan intensif memori seperti caching boleh disimpan.
Ringkasnya, terdapat tiga isu, pemulihan bencana, prestasi dan ketekalan data.
Setakat pangkalan data tradisional seperti MySQL, terdapat begitu banyak masalah yang boleh saya senaraikan:
Bagaimana untuk menyimpan mysql?
Apakah yang perlu saya lakukan jika pangkalan data utama mysqld berlutut?
Apakah yang perlu saya lakukan jika pelayan perpustakaan utama berlutut?
Apa yang perlu saya lakukan jika hamba mysqld melutut?
Apa yang perlu saya lakukan jika budak dok melutut?
Bolehkah mysql dikembangkan dengan cepat melalui bekas apabila puncak semakin hampir? rancangan?
Penyelesaian penukaran induk-hamba data? Bagaimana untuk memastikan konsistensi?
Volume semasa tempoh puncak cukup besar, dan kadangkala kapasiti mesin fizikal hanya cukup untuk satu proses mysql.
Jadi ia juga satu mesin, kenapa mysql tidak boleh dimulakan terus?
Mengapa kita perlu meletakkan bekas di luar? Berapakah kehilangan prestasi?
Bagaimana untuk menaik taraf mysql?
Adakah volum data akan kehilangan data? (dah banyak kali jumpa bekas rosak...)
Tetapi mysql bukan tidak boleh disimpan sepenuhnya. Perniagaan yang tidak sensitif terhadap kehilangan data (seperti produk yang ditemui oleh carian JD.com) boleh didigitalkan dan menggunakan sharding pangkalan data untuk meningkatkan daya pengeluaran dengan menambah bilangan kejadian.
Bagi isu yang dinyatakan dalam artikel asal, beberapa perkara mempunyai kelemahan, tetapi ia difikirkan dengan baik. Sebagai contoh, soalan berikut sangat bermasalah (tentang direktori data kongsi):
Setakat pangkalan data yang saya hubungi setakat ini, hanya pangkalan data seperti cassandra (ada juga tidb dan cockroachdb, tetapi saya tidak menemui kes penggunaan di syarikat besar setakat ini) sesuai untuk kontena.
Tetapi cassandra sendiri juga hampir menjadi tanpa kerakyatan: ia menyediakan pemulihan bencana, pengembangan kapasiti dan penyelesaian penukaran sendiri.
Berikut ialah sebutan JD.com.
JD.com adalah outlier, tetapi JD.com juga telah menyebut masalah yang sama dan perkara yang memerlukan perhatian.
Jika tiada masalah dengan satu mesin, ia masih bermanfaat dalam beberapa kes, contohnya, apabila pangkalan data Oracle syarikat saya melaraskan parameter sebelum ini, pangkalan data ranap dan tidak dapat dimulakan masa itu, jadi saya menjalankannya secara langsung. Hanya arahkan direktori data ke yang asal
Tidak kira bagaimana anda mencipta kluster, bukan mudah untuk menyediakannya secara manual menggunakan docker atau alatan seperti swarm. Adalah lebih baik untuk membinanya secara langsung pada mesin fizikal untuk menyelamatkan masalah
Terdapat syarikat di luar negara yang pakar dalam penyelesaian penyimpanan data buruh pelabuhan Contohnya, konvoi kumpulan dan penternak
Docker lebih sesuai untuk stateless dan tidak akan mengubah perkhidmatan.
Jika terdapat sejumlah besar kluster: Tulis fail docker. Kemudian apabila kod itu dimuat naik ke gudang kod, selepas menggunakan fail docker, biarkan skrip keluaran membina perkhidmatan docker dalam kelompok dan masukkan kod perkhidmatan ke dalamnya.
Bukan sahaja MySQL, tetapi serupa dengan redis dan mc tidak sesuai untuk dimasukkan ke dalam docker Dalam erti kata lain, meletakkan pangkalan data dalam docker hanya untuk menggunakan docker, dan tidak banyak faedahnya.
Ya, kerana ciri-ciri docker menentukan bahawa ia tidak sesuai untuk penyimpanan data Bukan sahaja pangkalan data, tetapi juga semua perkhidmatan berkaitan storan tidak sesuai untuk menggunakan docker.
Mengenai pangkalan data yang tidak sesuai untuk diletakkan di docker, terdapat dua artikel bengkok Satu disiarkan oleh poster asal, dan yang kedua ialah artikel ini, diterjemahkan
Masih sudut pandangan yang sama:
Apabila volum kecil, anda boleh melakukannya secara santai Apabila volum besar, beberapa perkara tidak akan berfungsi dengan cara yang betul pangkalan data, anda memerlukan sokongan pelbagai sistem, termasuk sistem Middleware, sistem kontena.
Jika pangkalan data anda boleh menskalakan secara automatik, pemulihan bencana, bertukar dan dilengkapi dengan penyelesaian berbilang nodnya sendiri, docker ialah penyelesaian yang lebih baik.
Tetapi jika tidak, jangan gunakan docker.
Teks asal juga menjadikannya sangat jelas:
Apabila trafik kecil, apa-apa sahaja boleh dimasukkan ke dalam kontena. Pangkalan data, aplikasi, hadoop, pelbagai nod, nginx.
Apabila volum adalah besar, perkhidmatan berkaitan penyimpanan tidak sesuai untuk perkhidmatan tanpa kewarganegaraan seperti lapisan aplikasi dan lapisan perniagaan sesuai untuk perkhidmatan intensif memori seperti caching boleh disimpan.
Ringkasnya, terdapat tiga isu, pemulihan bencana, prestasi dan ketekalan data.
Setakat pangkalan data tradisional seperti MySQL, terdapat begitu banyak masalah yang boleh saya senaraikan:
Bagaimana untuk menyimpan mysql?
Apakah yang perlu saya lakukan jika pangkalan data utama mysqld berlutut?
Apakah yang perlu saya lakukan jika pelayan perpustakaan utama berlutut?
Apa yang perlu saya lakukan jika hamba mysqld melutut?
Apa yang perlu saya lakukan jika budak dok melutut?
Bolehkah mysql dikembangkan dengan cepat melalui bekas apabila puncak semakin hampir? rancangan?
Penyelesaian penukaran induk-hamba data? Bagaimana untuk memastikan konsistensi?
Volume semasa tempoh puncak cukup besar, dan kadangkala kapasiti mesin fizikal hanya cukup untuk satu proses mysql.
Jadi ia juga satu mesin, kenapa mysql tidak boleh dimulakan terus?
Mengapa kita perlu meletakkan bekas di luar? Berapakah kehilangan prestasi?
Bagaimana untuk menaik taraf mysql?
Adakah volum data akan kehilangan data? (dah banyak kali jumpa bekas rosak...)
Tetapi mysql bukan tidak boleh disimpan sepenuhnya.
Perniagaan yang tidak sensitif terhadap kehilangan data (seperti produk yang ditemui oleh carian JD.com) boleh didigitalkan dan menggunakan sharding pangkalan data untuk meningkatkan daya pengeluaran dengan menambah bilangan kejadian.
Bagi isu yang dinyatakan dalam artikel asal, beberapa perkara mempunyai kelemahan, tetapi ia difikirkan dengan baik. Sebagai contoh, soalan berikut sangat bermasalah (tentang direktori data kongsi):
Setakat pangkalan data yang saya hubungi setakat ini, hanya pangkalan data seperti cassandra (ada juga tidb dan cockroachdb, tetapi saya tidak menemui kes penggunaan di syarikat besar setakat ini) sesuai untuk kontena.
Tetapi cassandra sendiri juga hampir menjadi tanpa kerakyatan: ia menyediakan pemulihan bencana, pengembangan kapasiti dan penyelesaian penukaran sendiri.
Berikut ialah sebutan JD.com.
JD.com adalah outlier, tetapi JD.com juga telah menyebut masalah yang sama dan perkara yang memerlukan perhatian.
Malah, banyak penyesuaian telah dilakukan untuk berlabuh.
Anda boleh melihat perkongsian JD.com.
Tidak sesuai, tidak boleh
Jika tiada masalah dengan satu mesin, ia masih bermanfaat dalam beberapa kes, contohnya, apabila pangkalan data Oracle syarikat saya melaraskan parameter sebelum ini, pangkalan data ranap dan tidak dapat dimulakan masa itu, jadi saya menjalankannya secara langsung. Hanya arahkan direktori data ke yang asal
Tidak kira bagaimana anda mencipta kluster, bukan mudah untuk menyediakannya secara manual menggunakan docker atau alatan seperti swarm. Adalah lebih baik untuk membinanya secara langsung pada mesin fizikal untuk menyelamatkan masalahTerdapat syarikat di luar negara yang pakar dalam penyelesaian penyimpanan data buruh pelabuhan Contohnya, konvoi kumpulan dan penternak
Docker lebih sesuai untuk stateless dan tidak akan mengubah perkhidmatan.
Jika terdapat sejumlah besar kluster:
Tulis fail docker. Kemudian apabila kod itu dimuat naik ke gudang kod, selepas menggunakan fail docker, biarkan skrip keluaran membina perkhidmatan docker dalam kelompok dan masukkan kod perkhidmatan ke dalamnya.
Bukan sahaja MySQL, tetapi serupa dengan redis dan mc tidak sesuai untuk dimasukkan ke dalam docker Dalam erti kata lain, meletakkan pangkalan data dalam docker hanya untuk menggunakan docker, dan tidak banyak faedahnya.
Ya, kerana ciri-ciri docker menentukan bahawa ia tidak sesuai untuk penyimpanan data Bukan sahaja pangkalan data, tetapi juga semua perkhidmatan berkaitan storan tidak sesuai untuk menggunakan docker.
Saya tidak dapat mengetahui direktori mana imej mysql rasmi menyimpan data.