Mysql dari dump untuk mengisi hanya satu jadual. Kami membuat dump (sandaran) pangkalan data menggunakan utiliti mysqldump. Mewujudkan struktur pangkalan data tanpa data

Siaran ini mengandungi arahan yang paling biasa digunakan untuk membuat atau menggunakan salinan sandaran pangkalan data MySQL.

Nah, saya hanya bosan dengan sentiasa mencari kunci apabila saya "tiba-tiba" memerlukannya.

Sedikit teori...

MySQLDUMP ialah alat yang membolehkan anda membuat sandaran pangkalan data MySQL. Hasilnya, kami mendapat fail .sql dengan dump pangkalan data. Fail ini mengandungi Kod Sql dalam bentuk teks, iaitu. anda sentiasa boleh membukanya dengan editor teks untuk dilihat, diedit, dll...
Anda boleh memulihkan pembuangan sedemikian menggunakan utiliti mysql melalui STDIN.

Dengan cara ini, terdapat juga utiliti yang dipanggil MySqlHotCopy, yang paling sesuai digunakan untuk membuat sandaran panas, kerana ia mengunci pangkalan data dan menyalin fail pangkalan data ke lokasi yang dikehendaki. Tetapi perkara ini hanya akan berfungsi jika ia dijalankan pada pelayan itu sendiri, ia hanya berfungsi dengan jadual MyISAM dan Arkib dan lebih sesuai untuk pangkalan data yang besar.
Anda boleh memulihkan data dengan menyalin fail yang disimpan ke direktori data MySQL.

Tetapi, secara umum, ini bukan tentang dia... mungkin saya akan menulis tentang "salinan panas" dalam artikel lain...

Mencipta Sandaran Pangkalan Data

Mari kita mulakan dengan arahan yang paling biasa untuk membuang tapak site.ru ke dalam fail site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql

    Lebih lanjut mengenai kunci:
  • -u(--user=...) ialah nama pengguna pangkalan data;
  • -h(—host=…) ialah hos di mana pelayan itu sendiri berada. Jika pelayan adalah setempat, maka parameter ini sama ada tidak boleh digunakan atau anda boleh memasukkan localhost di sana. Juga perlu diingat bahawa ip pelayan selepas kunci mesti ditulis tanpa ruang;
  • -hlm(--password=...) ialah kata laluan pengguna. Jika kunci ini tidak digunakan, maka penyambungan ke pangkalan data akan dapat dilakukan jika tiada kata laluan. Juga, tiada siapa yang melarang memasukkan kata laluan ke dalam arahan, dan tidak sepatutnya ada ruang selepas kunci (contohnya: -p1234567890, di mana 1234567890 ialah kata laluan);
  • site_ru ini adalah nama pangkalan data pada pelayan MySql;
  • site_ru.sql ini ialah fail dump.

Untuk membuat salinan sandaran beberapa pangkalan data, anda boleh menggunakan kunci -B dan tentukan beberapa pangkalan data, berikut adalah contoh:

Mysqldump -uroot -h10.30.30.10 -p site_ru site2_ru site3_ru > sites.sql

Jika keadaan tidak memberi anda masa untuk berfikir, dan anda perlu membuat salinan sandaran semua pangkalan data, maka dalam situasi ini anda boleh menggunakan kunci --semua-pangkalan data, berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p -A > all-db.sql

By the way, ada nuansa.

Jika anda membuat sandaran pangkalan data semasa berjalan, dan, lebih-lebih lagi, pelayan yang digunakan secara aktif, maka anda berisiko memutuskan sambungan logik. Terdapat beberapa cara untuk mengelakkan perkara ini.

Cara pertama ialah mengunci meja, i.e. anda boleh menggunakan parameter --lock-tables, berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p --lock-tables site_ru > site_ru.sql

Tetapi pada masa membuat sandaran, permintaan pelanggan akan digantung... dan oleh itu mungkin terdapat tamat masa.

Cara kedua ialah menggunakan suis --flush-log semasa membuat sandaran. Kunci ini akan ditutup log lama tindakan dan akan mencipta yang baru. Jika seseorang menulis sesuatu semasa membuat salinan, ini akan dicerminkan pada permulaan log dan kemungkinan untuk memindahkan perubahan ini ke pangkalan data. Seterusnya, untuk memastikan, selepas melengkapkan sandaran, anda perlu menjalankan perintah mysqladmin -flush-logs dan meninggalkan salinan log binari kedua.

Memulihkan sandaran pangkalan data

Di sini utiliti "mysql" sudah pun memerintah. Berikut ialah contoh:

Mysql -uroot -h10.30.30.10 -p site_ru< site_ru.sql

Cara lain, lebih bertele-tele:

Mysql -uroot -p Masukkan kata laluan: Selamat datang ke monitor MySQL. Perintah berakhir dengan ; atau\g. Id sambungan MySQL anda ialah 35 Versi pelayan: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) Hak Cipta (c) 2000, 2016, Oracle dan/atau ahli gabungannya. Hak cipta terpelihara. Oracle ialah tanda dagangan berdaftar Oracle Corporation dan/atau ahli gabungannya. Nama lain mungkin merupakan tanda dagangan pemilik masing-masing. Taip "help;" atau "\h" untuk mendapatkan bantuan. Taip "\c" untuk mengosongkan pernyataan input semasa. mysql> gunakan site_ru; mysql> source site_ru.sql;

Nah, jika pangkalan data anda disimpan dalam arkib gz, maka anda boleh menggabungkan arahan mysql dan zcat seperti ini:

Zcat site_ru.sql.gz | mysql -uroot -h10.30.30.10 -p site_ru

Lebih banyak pilihan untuk menggunakan mysqldump

Sebagai contoh, kita memerlukan pangkalan data dalam zon dev, kotak pasir, boleh dikatakan, dan saiz pangkalan data utama adalah sangat besar. Anda boleh menggunakan kekunci -where="true limit 150", yang kami akan menyatakan secara eksplisit sampel data tidak lebih daripada 150 rekod. Berikut ialah contoh:

Mysqldump -uroot -h10.30.30.10 -p --where="had benar 150" site_ru > site_ru.sql

Jika kita hanya memerlukan struktur tanpa data, maka kita boleh menggunakan suis --no-data, berikut ialah contoh

Mysqldump -uroot -h10.30.30.10 -p --no-data site_ru > site_ru.sql

Jika kita memerlukan salinan hanya satu jadual, maka berikut ialah arahan contoh:

Mysqldump -u root -p testdb tablename > testdb_table_backup.sql

Jika kita memerlukan salinan pencetus, prosedur dan peristiwa (penjadual terbina dalam), maka berikut ialah contoh:

Mysqldump --no-create-info --no-data --triggers --rutin --events -uroot -p site_ru | gzip > ~/database.sql.gz

Anda juga boleh membuat pembuangan pangkalan data yang diarkibkan dengan segera. Anda boleh melakukannya seperti ini:

Mysqldump -uroot -p site_ru | gzip > /path/to/site_ru.sql.gz

Dan anda juga boleh menentukan tarikh arkib itu dibuat, seperti ini:

Mysqldump -uroot -p site_ru | gzip > `tarikh +/path/to/site_ru.sql.%Y%m%d.%H%M%S.gz`

Kekunci untuk menggunakan mysqldump

Berikut ialah kunci mysqldump yang paling popular:

Kembangkan senarai...

  • --add-drop-database - Menambah pernyataan DROP DATABASE sebelum setiap penyata CREATE DATABASE.
  • --add-drop-table — Menambah pernyataan DROP TABLE sebelum setiap pernyataan CREATE TABLE.
  • --add-locks - Menambah kenyataan LOCK TABLES sebelum pelaksanaan dan kenyataan UNLOCK TABLE selepas pelaksanaan setiap pembuangan jadual (untuk mempercepatkan akses kepada MySQL).
  • --all-databases, -A — Menyimpan semua jadual daripada semua pangkalan data yang diuruskan oleh pelayan semasa.
  • --allow-keywords - Benarkan penciptaan nama lajur yang sepadan dengan kata kunci. Ketiadaan konflik dipastikan dengan menambah nama jadual sebagai awalan pada nama setiap lajur.
  • —komen, -i — Parameter ini membolehkan anda menambah pada tempat pembuangan Maklumat tambahan, seperti versi mysqldump, versi MySQL, nama hos di mana pelayan MySQL berada.
  • --compact Pilihan ini menyebabkan mysqldump mencipta dump menggunakan format paling padat yang mungkin. Parameter adalah bertentangan dengan -komen.
  • --compatible=name — Parameter menjana output yang serasi dengan DBMS lain atau yang lebih lama versi MySQL. Daripada kata kunci nama, anda boleh menggunakan: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" . Anda boleh menggunakan berbilang nilai, dipisahkan dengan koma.
  • --complete-insert, -c — Gunakan bentuk lengkap pernyataan INSERT (dengan nama lajur).
  • --create-options - Menambah maklumat tambahan pada kenyataan CREATE TABLE. Ini boleh menjadi jenis jadual, nilai AUTO_INCREMENT awal dan parameter lain.
  • --databases, -B — Parameter membenarkan anda untuk menentukan nama beberapa pangkalan data yang anda ingin buat dump.
  • --delayed — Gunakan arahan INSERT DELAYED apabila memasukkan baris.
  • --delete-master-logs - Pelayan replikasi induk memadam log binari (logbin) secara automatik selepas dump berjaya dibuat menggunakan mysqldump. Pilihan ini secara automatik mendayakan pilihan "--master-data".
  • --disable-keys, -K - Untuk setiap jadual, kelilingi penyataan INSERT dengan ungkapan /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; dan /*!40000 ALTER TABLE tbl_name DAYS KEYS */; dalam output hasil pembuangan. Ini akan mempercepatkan memuatkan data ke pelayan untuk jadual seperti MyISAM, kerana indeks dibuat selepas semua data dimasukkan.
  • --extended-insert, -e — Gunakan arahan INSERT dengan yang baru sintaks berbilang baris(meningkatkan kekompakan dan prestasi pengendali input).
  • --flush-logs, -F — Tulis data ke cakera syslog daripada penimbal pelayan MySQL sebelum memulakan pembuangan.
  • --force, -f — Teruskan walaupun ralat berlaku semasa proses penciptaan dump.
  • —hex-blob — Parameter membolehkan anda mewakili data binari dalam medan jenis BINARI, VARBINA, BLOB dan BIT dalam format perenambelasan. Jadi urutan "abc" akan digantikan dengan 0x616263.
  • --ignore-table=db_name.tbl_name — Membenarkan jadual tbl_name bagi pangkalan data db_name diabaikan semasa membuat dump. Jika anda perlu mengecualikan beberapa jadual daripada tempat pembuangan, anda mesti menggunakan beberapa parameter "--ignore-table", menyatakan satu jadual dalam setiap parameter.
  • --insert-ignore — Menambah kata kunci ABAIKAN ke dalam pernyataan INSERT.
  • --lock-all-tables, -x — Menentukan pilihan ini menyebabkan semua jadual dalam semua pangkalan data dikunci sementara pembuangan penuh semua pangkalan data dibuat.
  • --lock-tables, -l — Menentukan pilihan ini mengunci jadual pangkalan data yang mana dump sedang dibuat.
  • --no-autocommit - Termasuk semua penyata INSERT pada jadual yang sama dalam satu transaksi, menghasilkan pemuatan data yang lebih cepat.
  • --no-create-db, -n — Menekan lambakan kenyataan CREATE DATABASE yang ditambah secara automatik apabila menggunakan pilihan --databases dan --all-databases.
  • --no-data, -d — Menindas penciptaan pernyataan INSERT dalam dump, yang boleh berguna apabila membuang struktur pangkalan data tanpa data itu sendiri.
  • —pilih — Parameter bertujuan untuk mengoptimumkan kelajuan sandaran data dan merupakan pintasan yang merangkumi pilihan berikut: —cepat —add-drop-table —add-lock —create-options —disable-keys —extended-insert —kunci -tables —set-charset . Sejak MySQL 4.1, pilihan --opt digunakan secara lalai, i.e. Semua pilihan di atas didayakan secara lalai, walaupun ia tidak dinyatakan. Untuk mengecualikan tingkah laku ini, anda mesti menggunakan parameter --skip-opt
  • --order-by-primary - Menentukan parameter menyebabkan perkara ini berlaku. bahawa setiap jadual diisih mengikut kunci utamanya atau indeks unik pertama.
  • --port, -P - Nombor port TCP, digunakan untuk menyambung ke hos.
  • —protocol=(TCP|SOKET|PIPE|MEMORY) — Parameter membenarkan anda menetapkan protokol untuk menyambung ke pelayan.
  • —cepat, -q — Membolehkan anda mula menjana tempat pembuangan tanpa menunggu muatan penuh data daripada pelayan dan dengan itu menjimatkan memori.
  • --quote-names, -Q — Meletakkan pangkalan data, jadual dan nama lajur dalam backtick `. Pada MySQL 4.1, pilihan ini didayakan secara lalai.
  • --replace - Menambah kata kunci REPLACE pada pernyataan INSERT. Pilihan ini mula-mula muncul dalam MySQL 5.1.3.
  • --result-file=/path/to/file, -r /path/to/file — Parameter menghantar dump ke fail fail. Pilihan ini amat berguna pada Windows, tanpa menggunakan baris arahan. apabila anda boleh mengubah hala hasil ke fail menggunakan urutan > dan >>.
  • --routines, -R — Pilihan ini mencipta pembuangan prosedur dan fungsi yang disimpan. Tersedia dengan MySQL 5.1.2.
  • --single-transaction - Pilihan mencipta dump sebagai satu transaksi.
  • —skip-comments — Parameter ini membolehkan anda menyekat output maklumat tambahan ke tempat pembuangan.
  • --socket=/path/to/socket, -S /path/to/socket — Fail soket untuk menyambung ke localhost.
  • —tab=/path/, -T /path/ — Apabila menggunakan parameter ini, dua fail berasingan dicipta dalam direktori laluan untuk setiap jadual: tbl_name.sql, yang mengandungi pernyataan CREATE TABLE dan tbl_name.txt, yang mengandungi data jadual dipisahkan tab . Format data boleh diganti secara eksplisit menggunakan pilihan --fields-xxx dan --lines-xxx.
  • --tables - Mengatasi parameter --databases (-B). Semua argumen yang mengikuti parameter ini dianggap sebagai nama jadual.
  • —triggers — Mencipta longgokan pencetus. Pilihan ini didayakan secara lalai. Untuk melumpuhkannya, gunakan pilihan --skip-triggers.
  • --events, -E — Mencipta tempat pembuangan acara. Lihat Penjadual Acara MySQL atau pengurus acara terbina dalam dalam MySQL.
  • —tz-utc — apabila menggunakan parameter ini, operator seperti SET TIME_ZONE=’+00:00′ akan ditambahkan pada tempat pembuangan, yang akan membolehkan tempat pembuangan ditukar dalam zon waktu yang berbeza.
  • --verbose, -v — Mod keluaran lanjutan. Kesimpulan lagi maklumat terperinci tentang kerja program.
  • --version, -V — Paparkan maklumat tentang versi program.
  • —where=’where-condition’, -w ‘where-condition’ — Buang hanya rekod yang dipilih. Sila ambil perhatian bahawa tanda petikan diperlukan.
  • --xml, -X — Mewakili pembuangan pangkalan data sebagai XML.
  • --first-slave, -x — Mengunci semua jadual dalam semua pangkalan data.
  • —debug=…, -# — Pantau kemajuan program (untuk nyahpepijat).
  • --help - Output maklumat latar belakang dan keluar dari program.

Salam, kawan-kawan! 🙂

Hari ini saya memutuskan untuk meneruskan perbualan tentang bekerja dengan MySQL dalam konsol dan memberi perhatian kepada prosedur untuk mengeksport pangkalan data MySQL.

Dalam artikel ini saya akan bercakap tentang cara membuang pangkalan data MySQL, serta memuat naik data dari MySQL ke Fail Excel dan format csv.

Kami akan pertimbangkan pelbagai pilihan persampelan maklumat daripada: mencipta lambakan satu atau beberapa pangkalan data, mengeksport data daripada jadual individu dan hasil sewenang-wenangnya PILIH permintaan.

Kami juga akan bercakap tentang cara mengeluarkan data daripada pangkalan data MySQL dalam konsol pelayan dan baris arahan MySQL.

Dalam artikel ini saya tidak akan bercakap tentang cara mengeksport data daripada menggunakan phpMyAdmin dan alatan visual yang lain.

Pertama, kerana sudah ada bahan yang mencukupi mengenai topik ini di Internet. Lebih-lebih lagi, ia adalah bahan berkualiti tinggi, yang saya tidak berminat untuk menyalin-tampal.

Dan, kedua, saya telah pun menyemak secara ringkas proses pengeluaran maklumat daripada pangkalan data MySQL ke fail SQL dalam salah satu artikelnya, di mana dia bercakap tentang.

Jadi jika anda tidak pemaju profesional atau pentadbir sistem, yang mungkin mendapati maklumat tentang bekerja dengan konsol berguna, dan anda hanya datang untuk arahan tentang cara mengeksport pangkalan data ke phpMyAdmin, kemudian anda boleh mengehadkan diri anda untuk membaca maklumat pada pautan di atas.

Saya mahu anda memahami saya dengan betul: Saya tidak mahu menyinggung perasaan anda dalam apa jua cara, tetapi saya hanya mahu anda menghabiskan masa anda dengan faedah maksimum untuk perniagaan anda dan mendapatkan apa yang anda cari.

Ini menyimpulkan bahagian pengenalan dan kami beralih kepada semakan arahan konsol untuk mencipta dump pangkalan data MySQL, yang saya memutuskan untuk mengisih mengikut jumlah data yang disimpan: bermula daripada mengeksport keseluruhan pangkalan data, berakhir dengan jadual individu dan keputusan pertanyaan sewenang-wenangnya.

Mencipta longgokan pangkalan data MySQL melalui konsol

Saya ingin membuat penjelasan kecil pada awalnya.

Lambakan pangkalan data ialah fail dengan set SQL arahan, yang, apabila dilancarkan, membolehkan anda membuat pangkalan data dan jadual, serta mengisinya dengan maklumat. Lambakan diperlukan bagi mereka yang ingin memuat turun pangkalan data MySQL untuk menyalinnya ke pelayan lain atau dalam pangkalan data sedia ada.

Juga, jika sesiapa tidak sedar, sandaran pangkalan data MySQL, pada asasnya, pembuangannya dibuat pada tempoh masa tertentu, yang membolehkan anda memulihkan struktur dan data pangkalan data jika perlu.

Eksport data hanyalah mengekstrak maklumat daripada jadual ke dalam bentuk teks Untuk kerja selanjutnya dengan penyunting teks atau grafik.

Oleh itu, arahan untuk tindakan ini akan berbeza sedikit.

Untuk mencipta dump pangkalan data, MySQL mempunyai utiliti terbina dalam yang dipanggil mysqldump, yang mesti digunakan di luar baris arahan MySQL dalam konsol pelayan atau shell lain.

Jadi, untuk pilihan yang paling mudah dan paling biasa - mengeksport data daripada pangkalan data tertentu ke Konsol MySQL Untuk memindahkannya ke pelayan lain atau salinan dalaman, anda perlu menjalankan arahan berikut:

Nama pengguna Mysqldump -u -p database_name > path_and_dump_file_name

Utiliti ini boleh membuat lambakan pangkalan data MySQL hanya dalam bentuk fail dengan arahan SQL, jadi tidak kira sambungan yang anda pilih untuk fail anda, kandungannya akan sama dalam apa jua keadaan. Dan jangan lupa untuk menyemak kebenaran menulis direktori di mana ia akan ditempatkan sebelum mengeksport maklumat daripada MySQL supaya fail itu boleh dibuat.

Jika tiba-tiba anda perlu membuat pembuangan dengan semua pangkalan data pada pelayan, kemudian gunakan pilihan seterusnya arahan:

Nama pengguna Mysqldump -u -p --all-databases > path_and_dump_file_name

Untuk membuang hanya beberapa pangkalan data tertentu, anda perlu memanggil mysqldump dengan parameter berikut:

Nama pengguna Mysqldump -u -p --databases database_name1, database_name2, ... > path_and_dumpfile_name

Akibatnya, dalam setiap kes anda akan menerima longgokan pangkalan data MySQL yang mengandungi arahan untuk mencipta struktur jadual yang terkandung (medan, jenisnya, indeks, kunci, dll.), serta operasi untuk mengisinya dengan data.

Pilihan ini hanya sesuai untuk memulihkan dan menyalin keseluruhan pangkalan data.

Bagaimana untuk membuat sandaran jadual MySQL tertentu dan menerima datanya bentuk yang boleh dibaca, kita akan bercakap lebih lanjut.

Melambakkan jadual MySQL dan mengeksport data

Untuk membuat longgokan jadual pangkalan data MySQL tertentu, kami memerlukan utiliti yang sama mysqldump, dipanggil dengan parameter berikut:

Nama pengguna Mysqldump -u -p nama_pangkalan data table_name1, table_name2, ... > path_and_dumpfile_name

Apabila memanggil mysqldump, anda boleh menentukan jadual yang diperlukan sebagai nilai parameter --meja, apabila digunakan parameter --pangkalan data akan diabaikan:

Mysqldump -u nama pengguna -p --databases database_name1, database_name2 --tables table_name1, table_name2, ... > path_and_dumpfile_name

Contoh di atas akan memaparkan ralat berikut:

Mysqldump: Mendapat ralat: 1049: Pangkalan data tidak diketahui "database_name1," semasa memilih pangkalan data

Seperti yang anda lihat, hanya pangkalan data terkini daripada senarai akan digunakan. Pada dasarnya, tingkah laku ini agak logik, kerana Jadual yang ditentukan mungkin tidak muncul dalam semua pangkalan data.

Okay, kami telah menerima lambakan jadual pangkalan data MySQL. Ia boleh digunakan untuk memulihkannya atau menyalinnya bersama-sama dengan struktur.

Tetapi bagaimana jika anda hanya perlu mendapatkan maklumat yang disimpan di dalamnya dan, sebaik-baiknya, dalam bentuk yang boleh dibaca supaya anda boleh menghantarnya kepada pengurus dan melihatnya dalam editor teks atau hamparan biasa? MySQL mempunyai alat untuk ini juga.

Pilihan untuk memanggil utiliti akan membantu kami mencapai rancangan kami mysql daripada konsol dengan parameter tertentu:

Nama pengguna Mysql -u -p database_name -e "PILIH * DARI nama_jadual"

Perintah ini akan membolehkan kami melaksanakan permintaan ke pangkalan data yang diperlukan dan memaparkan hasilnya dalam konsol tanpa masuk ke dalam baris arahan MySQL.

Nah, untuk tidak mengeluarkan data ke konsol, tetapi untuk menulisnya ke fail, anda perlu menambah arahan seperti berikut:

Nama pengguna Mysql -u -p -e "PILIH * DARI nama jadual" > laluan_dan_nama fail

Terima kasih kepada pembinaan ini, kami bukan sahaja boleh mendapatkan data yang disimpan dalam semua medan jadual, tetapi juga dalam bidang tertentu. Untuk melakukan ini, cuma gantikan simbol kad bebas (*) dengan simbol yang diperlukan, dipisahkan dengan koma.

Hasilnya, output akan menjadi fail teks biasa yang akan mengandungi nama medan dalam bentuk pengepala dan maklumat mengenainya untuk semua rekod. Ia boleh dibuka seperti biasa penyunting teks, tidak kira apa resolusi yang anda berikan semasa menciptanya.

Jika anda ingin mengeksport data daripada pangkalan data MySQL dalam format xls atau csv supaya fail yang terhasil dipaparkan dengan betul dalam editor hamparan, maka kami akan memberitahu anda cara melakukannya sedikit kemudian :)

Mencipta sandaran dan mengeluarkan data daripada pangkalan data MySQL menggunakan pertanyaan

Kami bercakap tentang cara membuang pangkalan data MySQL - satu atau beberapa, serta jadual individu. Tetapi kadangkala dalam amalan terdapat kes apabila anda perlu mengeksport set data yang tidak terhad kepada satu jadual. Atau anda perlu memilih hanya beberapa data daripada jadual.

Pembangun projek korporat terutamanya sering menghadapi perkara ini apabila pengurus meminta mereka menyediakan semua jenis data statistik. Atau apabila anda perlu membuat sandaran bahagian tertentu jadual untuk memulihkannya dengan cepat.

Untuk sandaran kami memerlukan utiliti yang sama mysqldump, yang perlu dipanggil seperti ini:

Mysqldump -u user_name -p database_name table_name --where "lookup" > path_and_dump_file_name

Akibatnya, kami akan menerima fail dengan arahan SQL untuk mencipta jadual dengan keseluruhan strukturnya, yang, selepas penciptaan, akan diisi dengan maklumat yang dipilih menggunakan pertanyaan carian.

Jika kita hanya perlu mendapatkan data yang disimpan dalam satu atau lebih jadual, maka kita perlu mengubah suai perintah yang digunakan dalam kes sebelumnya apabila mendapatkan semula semua data dalam jadual, hanya dengan beberapa penjelasan:

Mysql -u user_name -p -e "SELECT * FROM table_name WHERE lookup" > path_and_file_name

Seperti yang anda fahami, sebagai tambahan kepada pelbagai penjelasan yang dinyatakan dalam permintaan menggunakan arahan DI MANA, anda boleh menggunakan yang lain binaan SQL: SERTAI, KESATUAN dan lain-lain.

Anda boleh mengumpul sebarang statistik yang anda mahu :)

Tindakan yang sama juga boleh dilakukan apabila bekerja pada baris arahan MySQL menggunakan arahan berikut:

PILIH * DARI database_table WHERE carian KE OUTFILE "path_and_file_name";

Perintah ini direka khusus untuk mencipta fail dengan hasil pensampelan. Selain itu, hasilnya bukan sahaja boleh dieksport ke fail, tetapi juga ditulis kepada pembolehubah, dan data output boleh diformatkan dalam pelbagai cara.

Jika perkara di atas adalah kes anda, maka anda boleh menemui senarai lengkap parameter dan pilihan untuk memanggil arahan ini di sini - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

Di penghujungnya lawatan singkat untuk mysqldump Saya ingin memberi pilihan untuk memanggil arahan dengan senarai parameter untuk mencipta dump yang dioptimumkan bagi pangkalan data MySQL dan jadual, memulihkan pangkalan data dan jadual individu yang akan mengambil masa kurang daripada dengan panggilan biasa:

Nama pengguna Mysqldump -u -h host_or_IP_MySQL_server -p --no-autocommit --opt database_name > path_and_dump_file_name;

Demi eksperimen saya gunakan pilihan ini untuk membuang pangkalan data MySQL bersaiz 143 MB. Pemulihan berikutnya mengambil masa 59 saat berbanding 1 minit dan 3 saat apabila pangkalan data dipulihkan daripada dump yang dibuat dengan memanggil mysqldump tanpa parameter khas.

Saya bersetuju bahawa ini adalah perkara kecil. Tetapi ini hanya dalam kes isipadu yang diberi data. Jika anda menggunakan teknik ini apabila mencipta dump yang lebih besar daripada 1GB, perbezaannya akan menjadi lebih ketara.

Jika anda menghadapi situasi sedemikian, jangan lupa untuk mengarkibkan dahulu tempat pembuangan pangkalan data MySQL. Yang terbaik ialah tar.gz. Kemudian pemulihan akan mengambil masa yang lebih singkat.

Eksport data daripada MySQL ke Excel dan fail csv

Bukan tanpa alasan saya menggabungkan maklumat tentang mengeluarkan maklumat daripada MySQL ke dalam dua format ini dalam satu blok, kerana... ia sangat serupa, ia digunakan dengan cara yang lebih kurang sama (untuk menstruktur maklumat dalam bentuk jadual) dan arahan yang sama untuk eksport akan dipanggil.

Seperti yang anda ketahui, satu-satunya perbezaan yang ketara antara format ini ialah itu sambungan xls dan xlsx mempunyai fail yang dibuat dalam program Microsoft Office Excel, yang hanya berfungsi pada Windows, tetapi fail csv s adalah lebih universal dan operasi dengannya boleh dilakukan dalam banyak editor.

Ini tidak bermakna bahawa xls tersedia di mana-mana kecuali Microsoft Office Excel, tidak akan dibuka. OpenOffice yang sama mengesahkan sebaliknya.

Tetapi untuk kemungkinan sedemikian sokongan ini mesti ada dalam produk perisian. csv boleh dibaca walaupun dalam editor teks biasa seperti Notepad, tetapi borang ini tidak boleh dibaca sepenuhnya.

Biar saya mulakan dengan fakta bahawa hanya hasil boleh dieksport ke xls atau csv pertanyaan SQL, yang kami belajar bekerja dengan lebih awal, kerana adalah mustahil untuk mengeluarkan keseluruhan pangkalan data ke dalam satu fail dalam satu operasi.

Pertama, ini tidak optimum, kerana... fail sebegitu tidak mungkin dibuka jika terdapat sejumlah besar maklumat yang disimpan dalam pangkalan data. Dan, kedua, tidak jelas cara membahagikan maklumat di dalam fail ke dalam jadual dan medan.

Tidak, sudah tentu mungkin untuk melakukan ini, tetapi ia tidak mungkin dilakukan dengan satu arahan dan secara umum tidak mungkin sesiapa akan melakukan ini dalam konsol. Saya fikir untuk tujuan ini anda memerlukan perisian khas atau sekurang-kurangnya skrip.

Jika anda tiba-tiba tahu bagaimana anda boleh mengeksport maklumat daripada keseluruhan pangkalan data MySQL ke dalam satu atau beberapa fail xls dalam konsol sekaligus, kemudian tulis mengenainya dalam ulasan. Saya fikir membaca tentang ini akan berguna untuk ramai orang.

Jadi, jika kita bercakap tentang cara mengeksport data dari MySQL ke xls dan csv, maka ini boleh dilakukan secara langsung dalam konsol pelayan melalui utiliti mysql atau dalam, kerja yang saya perkenalkan kepada anda dalam artikel saya sebelum ini.

Mari kita mulakan mengikut urutan.

Anda boleh mengeksport data daripada pangkalan data MySQL ke format csv dan xls terus dalam konsol pelayan menggunakan arahan berikut.

hidup Linux sistem:

Nama pengguna Mysql -u -d nama_pangkalan data -p -e "PILIH * DARI jadual_pangkalan data;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

Pada dasarnya, jika benar-benar perlu, anda boleh menggunakan arahan ini untuk mengeksport data MySQL ke fail Excel. Tetapi, secara jujur, saya tidak menangani perkara ini dalam amalan dan saya tidak tahu apa yang akan berlaku pada akhirnya, kerana... Saya sedang bekerja pada Windows. Jika anda menggunakan arahan ini di bawah Linux, sila tulis dalam ulasan tentang hasil kerja anda. Saya fikir maklumat itu akan menarik minat semua orang.

hidup Windows:

Eksport data daripada jadual MySQL dalam csv dengan arahan di atas masuk dalam kes ini, malangnya, ia tidak akan mungkin, kerana Windows, tidak seperti Linux, tidak mempunyai terbina dalam arahan konsol untuk bekerja dengan benang, yang sed dalam Linux.

Sudah tentu, anda boleh memasangnya, tetapi ia terlalu menyusahkan. Sebagai alternatif, anda boleh menggunakan CygWin- emulator Konsol Linux untuk sistem Windows.

Ia bagus jika anda sudah memasangnya. Jika tidak, mengeksport data daripada pangkalan data MySQL menggunakan kaedah yang dipilih akan membawa kita terlalu banyak masalah.

Tetapi mengekstrak maklumat ke dalam fail xls semudah 5 kopecks :) Sangat mudah untuk melancarkannya dengan cara berikut yang saya cuba sendiri:

Nama pengguna Mysql -u -d nama_pangkalan data -p -e "PILIH * DARI jadual_pangkalan data;" > laluan_dan_nama_fail.xls

Fail ini dibuka dalam Microsoft Office Excel tanpa sebarang masalah sama sekali. Satu-satunya perkara ialah apabila membukanya, mesej dipaparkan pada skrin memberi amaran bahawa format sebenar fail yang dibuka berbeza daripada sambungan yang ditentukan.

Tetapi apabila mengesahkan tindakan itu, dokumen itu dibuka tanpa kesukaran - semua maklumat dibahagikan kepada sel dalam bentuk di mana ia disimpan dalam jadual itu sendiri.

Saya tidak tahu, mungkin jika anda melakukan sebarang tindakan khusus dalam Microsoft Office Excel, masalah akan timbul pada masa hadapan; Saya tidak menggali sedalam itu. Apabila melihat data seperti biasa, sekurang-kurangnya, saya tidak nampak apa-apa yang luar biasa.

Jika anda menghadapi sebarang masalah semasa menggunakan fail xls yang dieksport daripada MySQL, sama ada dalam program ini atau dalam program lain, sila beritahu saya dalam komen.

Menggunakan kaedah yang diterangkan di atas, anda boleh mengeksport kandungan pangkalan data MySQL ke fail csv, pada dasarnya. Tetapi kemudian data dari medan jadual yang berbeza akan ditulis secara beramai-ramai, tanpa pembatas, yang mungkin tidak dipaparkan dengan baik dalam pelbagai program untuk bekerja dengan jadual, di mana ia biasanya berfungsi dengan fail csv.

OpenOffice, dengan cara ini, tidak peduli :) Ia secara automatik mengehadkan maklumat yang diperolehi dalam cara kami mengeksport kandungan pangkalan data MySQL ke xls. Saya tidak tahu bagaimana dia melakukannya, tetapi saya mengesyorkan menggunakannya :)

Nah, Microsoft Office Excel yang sama memaparkan semua maklumat yang sepadan dengan satu rekod dalam jadual, menulisnya dalam satu sel tanpa sebarang pembatas. Saya rasa, itu Dengan cara yang sama Lebih banyak editor meja akan datang.

Oleh itu, apabila mengeksport pangkalan data MySQL ke fail csv, anda perlu melakukannya dengan mengasingkan maklumat watak istimewa, dilihat oleh editor.

Dan kemudian saya secara beransur-ansur mendekati kaedah kedua Eksport MySQL data dalam csv dan xls, yang melibatkan penggunaan baris arahan MySQL.

Jadi, untuk mengeksport data MySQL ke fail csv dengan cara ini, kami memerlukan arahan berikut:

PILIH * DARI pangkalan data_jadual KE OUTFILE "path_and_file_name.csv" MEDAN DITAMATKAN OLEH "," DILARANGKAN OLEH """ TALIAN DITAMATKAN OLEH "\n";

Hasil daripada pelaksanaannya, anda akan menerima fail csv dalam laluan yang anda tentukan semasa membuat panggilan, yang akan dibuka dengan betul dalam kebanyakan editor hamparan moden. Untuk berjaga-jaga, saya ingatkan anda untuk berlari perintah ini hanya diperlukan selepas menyambung ke pangkalan data MySQL.

Perintah ini juga bagus untuk mengeksport data MySQL ke fail xls untuk paparan yang betul dalam Microsoft Office Excel. Hanya dalam kes ini kita tidak memerlukan pemisah, kerana mereka akan mengganggu pembahagian maklumat ke dalam sel:

PILIH * DARI pangkalan data_jadual KE OUTFILE "path_and_file_name.xls";

Walau bagaimanapun, dalam amalan, tidak semuanya semudah yang saya terangkan. Semasa menjalankan arahan, anda mungkin menghadapi ralat berikut dalam konsol yang menghalang eksport daripada selesai:

ERROR 1290 (HY000): Pelayan MySQL sedang berjalan dengan pilihan --secure-file-priv jadi ia tidak dapat melaksanakan pernyataan ini

Ia disebabkan oleh fakta bahawa pelayan MySQL anda telah dimulakan dengan pilihan --secure-file-priv. Secara peribadi, saya menghadapi masalah ini kerana fakta bahawa untuk bekerja di konsol saya menggunakan kit pengedaran MySQL yang disertakan dalam kit OpenServer WAMP, yang seterusnya melancarkan pelayan MySQL dengan cara ini.

Terdapat dua cara untuk menyelesaikan masalah:

Kaedah pertama kelihatan terlalu rumit kepada saya, kerana... Saya perlu menyelidiki konfigurasi OpenServer, yang tidak ditulis oleh saya dengan semua keadaan berikutnya 🙂 Oleh itu, saya memutuskan untuk mengambil jalan kedua. Jika anda berjumpa masalah serupa- ulang selepas saya.

Mula-mula anda perlu pergi ke baris arahan MySQL dan jalankan salah satu daripada arahan berikut:

TUNJUKKAN PEMBOLEH UBAH SEPERTI "secure_file_priv"; PILIH @@GLOBAL.secure_file_priv;

Hasil daripada melaksanakan kedua-duanya akan menjadi nilai pembolehubah global MySQL secure_file_priv, yang mengandungi laluan ke direktori yang melaluinya operasi eksport dan import data MySQL boleh dilakukan (pada masa hadapan, pautan ke artikel tentang import data).

Itu. apabila menggunakan arahan MUAT DATA Dan PILIH... KE OUTFILE fail yang dieksport dan diimport hanya boleh didapati dalam direktori ini.

Dalam kes saya, pembolehubah ini biasanya ditetapkan kepada NULL, kerana Saya, seperti yang telah saya katakan, menggunakan utiliti MySQL daripada pengedaran yang disertakan dalam OpenServer untuk berfungsi dalam konsol. Nilai ini menunjukkan bahawa operasi eksport dan import data MySQL menggunakan arahan yang ditentukan telah ditutup sepenuhnya.

Seperti yang ternyata kemudian, ini adalah situasi biasa apabila menggunakan pelayan WAMP dan MAMP berkotak.

Malangnya, dalam kes saya, tidak mungkin menggunakan kaedah biasa untuk menukar nilai pembolehubah global MySQL:

SET pembolehubah_nama = nilai;

Akibatnya, saya hanya melihat ralat berikut dalam konsol:

ERROR 1238 (HY000) pada baris 1: Pembolehubah "secure_file_priv" ialah pembolehubah baca sahaja.

Akibatnya, untuk menukar nilai pembolehubah secure_file_priv dan buka operasi eksport dan import, saya perlu pergi ke fail konfigurasi MySQL mysql.ini, yang terletak dalam direktori akar pengedaran MySQL, atau boleh diakses dengan cara lain jika MySQL disertakan dengan WAMP/LAMP/ anda Binaan pelayan MAMP.

Dengan cara ini, jika anda ingin menukar laluan ke direktori kili pertukaran fail, anda perlu melakukan perkara yang sama.

Dalam kes saya, pembolehubah ini telah wujud dalam konfigurasi, hanya dalam bentuk komen:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Jika anda tidak memilikinya, tuliskannya dari awal di bahagian (sekurang-kurangnya bagi saya ia terletak di sana).

Saya tidak mengulasnya dan memutuskan untuk menggunakannya dalam bentuk di mana ia ditulis. Itu. apabila mengeksport data daripada MySQL dan mengimportnya semula, fail saya kini akan disimpan dalam direktori c:\openserver\userdata\temp\.

Selepas menukar konfigurasi (apa-apa sahaja, dengan cara itu), jangan lupa untuk memulakan semula pelayan anda atau perkhidmatan berasingan yang tetapannya anda edit, jika boleh, untuk perubahan itu berkuat kuasa!

Yang pasti, selepas memulakan semula pelayan MySQL, paparkan pembolehubah sekali lagi secure_file_priv dan salin nilainya ke papan keratan.

Dan sekarang kita perlu memanggil arahan seperti pada mulanya, hanya sebelum nama fail ke mana maklumat dari pangkalan data MySQL akan disimpan, tulis laluan yang disimpan dalam pembolehubah yang kita ubah dalam bentuk berikut:

PILIH * DARI pangkalan data_jadual KE OUTFILE "secure_file_priv_value\file_name.csv";

Selepas ini, mengeksport data dari MySQL berfungsi dalam kes saya.

Perkara penting! Jika anda bekerja dengan MySQL di bawah Windows, maka jangan lupa untuk menukar "\" kepada "/" apabila menentukan laluan ke fail, jika tidak ralat akan menjadi --secure-file-priv masih akan terus muncul.

Ini ialah artikel tentang cara membuang pangkalan data MySQL dan jadualnya, serta data output daripada jadual MySQL ke pelbagai format, sampai ke penghujungnya. Tulis ulasan anda dalam ulasan dan kongsi dengan semua orang pilihan skrip anda yang paling kerap anda gunakan dalam amalan.

Jika anda menyukai artikel tersebut, anda boleh mengucapkan terima kasih kepada pengarang dengan menyiarkan semula artikel tersebut media sosial atau kewangan menggunakan borang di bawah, supaya anda boleh membayar untuk pengehosan asas.

Semoga berjaya kepada semua orang dan jumpa lagi! 🙂

P.S.: jika anda memerlukan laman web atau perlu membuat perubahan kepada yang sedia ada, tetapi tidak ada masa atau keinginan untuk ini, saya boleh menawarkan perkhidmatan saya.

Lebih daripada 5 tahun pengalaman pembangunan laman web profesional. Bekerja dengan PHP

Idea artikel adalah untuk mencipta panduan berkualiti tinggi untuk memasang dan bekerja dengan program mysqldump. Menggunakan banyak contoh dan mengumpul segala-galanya pilihan yang berguna dan parameter untuk bekerja dengan utiliti ini. Sukar untuk memuatkan segala-galanya ke dalam satu artikel, jadi semuanya akan menjadi pendek dan tepat. Jika ada yang salah faham, sila komen artikel tersebut.

Bahagian:

Pemasanganmysqldump:

Apakah mysqldump?

MySQLdump- Ini aplikasi pelayan, yang membolehkan anda membuat sandaran (selepas ini dirujuk sebagai dump) pangkalan data dan menyimpannya dalam fail berasingan. Pada masa yang sama, anda boleh membuat tetapan pembuangan yang fleksibel: beberapa atau semua pangkalan data, mengarkib dalam gzip, menambah kunci, perintah lepas dan banyak lagi. Juga boleh import terbalik sandaran pangkalan data. Boleh dilakukan dengan menggunakan PHP, tetapi ini tidak boleh diterima untuk projek besar yang mempunyai berat data yang banyak.

Program ini sangat berguna dalam mengeksport dan mengimport data daripada pangkalan data. Ia boleh dipasang sebagai standard pada pengehosan anda (lebih tepat pelayan mysql). Tetapi untuk mengasah kemahiran anda dalam bekerja dengan mysqldump dan mempelajari cara memasangnya, anda boleh memasangnya di denwer. Itulah yang akan kita lakukan sekarang.

Muat turun mysqldump

Anda sentiasa boleh memuat turun program mysqldump di tapak web kami, dan memuat turun aplikasi adalah percuma sepenuhnya. Muat turun mysqldump dari pautan terus di bawah.

Bagaimana untuk memasang mysqldump?

Kami akan memasang di tempatan Pelayan Denwer. Memasang aplikasi adalah mudah dan mudah, untuk melakukan ini, ikut arahan dan tangkapan skrin yang disediakan di bawah.

1. Salin fail mysqldump.exe ke folder Denver:

D:\WebServers\usr\local\mysql5\bin\
Dalam kes ini, anda mungkin mempunyai nama yang sedikit berbeza untuk folder mysql5, contohnya mysql-5.1 atau diubah suai sedikit. Oleh itu, untuk lebih jelas, di bawah ialah tangkapan skrin:

2. Lancarkan Denver

Pasti anda sendiri tahu cara melancarkan Denwer.


3. Lancarkan konsol:

Mula->Lari->cmd.exe atau pada Windows 7: Mula->Cari->Entercmd.exe->Masuk, seperti yang ditunjukkan dalam tangkapan skrin:

4. Ujian:

Menggunakan arahan dalam konsol, pergi ke cakera maya Denver (saya ada W:\) dan ke folder dengan aplikasi mysqldump. Untuk mengesahkan pelaksanaan arahan, tekan Enter.

Masukkan arahan:

W:- pergi ke cakera maya Denver

CDusr\tempatan\mysql5\tong sampah– pergi ke folder dengan aplikasi

mysqldump -uroot your_db_name>file_name.sql– menguji, membuang pangkalan data sewenang-wenangnya ke dalam fail, yang akan disimpan dalam folder bin.

Pemasangan saya berjaya, saya harap pemasangan anda juga. Dalam folder bin kita dapati fail sandaran pangkalan data. Untuk mengetahui cara menggunakan program dengan lebih meluas, baca bahagian artikel berikut.

Bermula: eksport dan import pangkalan data

Eksport pangkalan data

Kami telah memasang aplikasi dan mempelajari cara menggunakan konsol. Kami telah pun melakukan pembuangan ujian. Sekarang mari kita lakukan pembuangan pangkalan data mudah ke dalam direktori yang kita perlukan. Untuk melakukan ini, saya mencipta pangkalan data yang digunakan sebelum ini dipanggil "ujian". Ia terletak pada pelayan denwer tempatan. Di bawah disediakan arahan langkah demi langkah konsol untuk membuang pangkalan data ujian ke dalam folder yang dikehendaki dan fail yang dikehendaki.

W: cdusr\local\mysql5\bin mysqldump -uroot test>D:\test\easydump.sql

Tangkapan skrin di bawah menunjukkan fail dump dalam folder ujian:

Eksport selesai dengan jayanya. Sekarang mari cuba mengimport fail ini kembali ke pelayan kami.

Import Pangkalan Data

Untuk mengimport pangkalan data, kosongkan pangkalan data dalam phpmyadmin dan gunakan arahan berikut dalam cmd.exe:

Ujian Mysql -uroot

Nota penting: jika semasa mengeksport kami gunakan mysqldump..., maka apabila mengimport anda perlu memulakan arahan dengan mysql. Contoh ini ialah penggunaan asas aplikasi mysqldump untuk membuat sandaran pangkalan data. Anda akan menemui lebih banyak arahan dan contoh dalam bahagian dan artikel.

Contoh MySQLdump

Di bawah adalah contoh yang paling biasa digunakan untuk menggunakan mysqldump. Dengan mana anda bukan sahaja boleh membuat sandaran, tetapi juga menambah beberapa parameter Salinan simpanan: pemampatan menggunakan gzip, menambah tarikh sandaran, membuang hanya beberapa jadual atau struktur pangkalan data, menggunakan tetapan fleksibel. Pilihan ini membolehkan anda meningkatkan kelajuan pelaksanaan dump dan menggunakan ruang cakera dengan berhati-hati.

Mencipta tempat pembuangan sampah

mysqldump –uUSER -h82.82.82.82 -pPASSWORD DATABASE > /path/to/file/dump.sql

-u atau --pengguna=...- Nama pengguna

-h atau --tuan rumah=... - hos jauh(untuk localhost anda boleh meninggalkan parameter ini)

-hlm atau --kata laluan- minta kata laluan

pangkalan data- nama pangkalan data yang dieksport

/path/to/file/dump.sql- laluan dan fail untuk dump

Kami membuang beberapa pangkalan data, untuk ini kami menggunakan atribut --databases atau ringkasnya –B, lihat contoh di bawah:

Mysqldump -uroot -h82.82.82.82 -p -B pangkalan data1 pangkalan data2 pangkalan data3 > pangkalan data.sql

Jika anda ingin membuat pembuangan semua pangkalan data, anda mesti menggunakan parameter –all-databases atau –A dalam bentuk yang dipendekkan, lihat contoh:

Mysqldump -uroot -h82.82.82.82 -p -A > all-databases.sql

Mewujudkan struktur pangkalan data tanpa data

Untuk melakukan ini, anda perlu menggunakan parameter --no-data seperti yang ditunjukkan dalam contoh di bawah:

Mysqldump --no-data - uUSER -pPASSWORD DATABASE > /path/to/file/schema.sql

Buat longgokan hanya satu atau beberapa jadual pangkalan data

mysqldump -uUSER -pPASSWORD DATABASE JADUAL1 JADUAL2 JADUAL3 > dump.sql

Buat tempat pembuangan dan arkibkannyagzip

mysqldump -u PENGGUNA -pPASSWORD PANGKALAN DATA | gzip > /path/to/outputfile.sql.gz

Buat dump dengan tarikh dalam nama fail

mysqldump -uUSER -pPASSWORD DATABASE | gzip > `tarikh +dump.sql.%Y%m%d.%H%M%S.gz`

Menggunakan atribut tambahan

mysqldump -Q -c -e -uUSER -pPASSWORD DATABASE > /path/to/file/dump.sql

Seperti yang dinyatakan sebelum ini, atribut ini mengurangkan saiz fail akhir dan mempercepatkan proses sandaran. Lebih tepat:

-Q membungkus nama dalam petikan belakang

-c melakukan sisipan penuh, termasuk nama lajur

-e membuat sisipan lanjutan.

Hari ini saya ingin bercakap tentang lambakan pangkalan data. Ungkapan ini sendiri pernah menakutkan, walaupun secara umum tidak ada yang menakutkan di dalamnya. Jadi pertama, dan soalan utama: apakah itu pembuangan pangkalan data? Jawapan untuk ini adalah mudah tanpa diduga - pembuangan pangkalan data ialah fail dengan kandungannya, yang membolehkan anda memulihkan pangkalan data dari awal. Itu. ia hanya salinannya. Jadi mengapa longgokan pangkalan data tidak dipanggil "salinan pangkalan data"? Intinya ialah dump itu sendiri bukanlah pangkalan data, ia hanya membenarkan anda menciptanya semula. Maksudnya ialah pangkalan data boleh disimpan fail yang berbeza bergantung pada versi pangkalan data, pada jenis sistem operasi dan faktor lain. Itu. Mencari semua fail satu pangkalan data dalam sistem dan memindahkannya ke sistem lain adalah sangat sukar. Untuk memudahkan tugas ini, dump pangkalan data digunakan.

Mengapa perlu memindahkan pangkalan data?

Pertama, untuk membuat sandaran, atau memulihkan titik, sebelum membuat perubahan penting pada struktur - agar dapat melancarkan semula jika timbul sebarang masalah. Sebagai contoh, anda memasang komponen pihak ketiga, tetapi akibatnya tapak tersebut ternyata tidak boleh beroperasi dan anda perlu memulihkan operasinya dengan cepat. Di sinilah keperluan untuk menggunakan pembuangan pangkalan data timbul.

Kedua, apabila membuat laman web, ia biasanya pertama kali dilakukan pada mesin tempatan di bawah pelayan web maya dan hanya kemudian dipindahkan ke pengehosan. Dan jika semuanya lebih atau kurang jelas dengan pemindahan fail, maka memindahkan pangkalan data adalah tugas yang tidak begitu jelas dapat diselesaikan. Di sini juga, anda tidak boleh melakukannya tanpa pembuangan pangkalan data.

Jadi, kami mengetahui apa itu longgokan pangkalan data. Satu-satunya soalan yang tinggal ialah bagaimana untuk menggunakannya. Mari kita pertimbangkan tugas standard dalam pengaturcaraan web - memindahkan tapak web yang dibuat pada mesin tempatan ke pengehosan web. Saya tidak akan menerangkan secara terperinci pemindahan fail; Saya akan menumpukan pada pangkalan data. Jadi, kami mempunyai pangkalan data MySql dan tugas untuk memindahkannya ke pengehosan web. Untuk tidak mencipta semula roda, kami akan menggunakan utiliti phpMyAdmin yang digunakan secara meluas, yang, sebagai peraturan, sentiasa dipasang oleh pembekal anda, dan ia juga disertakan dalam Denver. Akhirnya, utiliti itu juga percuma dan tersedia untuk dimuat turun di laman web rasmi. Ia berjalan pada pelayan web dan ditulis dalam bahasa php, yang membolehkan anda menggunakannya terus dalam penyemak imbas. Itu. Tidak sepatutnya ada sebarang masalah di sini, jika ia timbul, tulis dalam komen dan kami akan menyelesaikannya.

Mari mulakan membuat longgokan pangkalan data. Buka phpMyAdmin, pilih pangkalan data yang kami perlukan dan klik pada "tab" Eksport". Akibatnya anda akan mendapat sesuatu seperti ini:

Di sini anda perlu memilih semua jadual (atau jadual yang anda perlukan untuk melancarkan semula perubahan) dan masukkan butang radio nilai SQL. Dalam bahagian Struktur, anda boleh menandakan medan pertama "Tambah DROP TABLE / VIEW / PROSEDUR / FUNGSI / EVENT" supaya sebelum mengimport dump, jadual yang sepadan dalam pangkalan data destinasi dipadamkan; jika ia dipindahkan buat kali pertama, kotak semak boleh dibiarkan tanpa tanda. Dalam tetingkap yang sama di bawah kita melihat bahagian "Simpan sebagai fail":

Sebenarnya, tandakan "Simpan sebagai fail" dan tulis nama fail yang dikehendaki. Longgokan pangkalan data boleh diarkibkan, tetapi lazimnya tidak cukup besar untuk menjadikan pemampatan fail itu berbaloi. Klik butang "GO" dan dapatkan tetingkap penjimatan fail standard dalam penyemak imbas:
. Fail yang disimpan ialah dump pangkalan data. Jika anda membukanya dalam notepad yang sama, anda akan melihat pada permulaan baris seperti

PhpMyAdmin SQL Dump
-- versi 3.2.3
-- http://www.phpmyadmin.net

Fail itu sendiri terdiri daripada pertanyaan untuk mencipta dan memasukkan nilai ke dalam jadual, ditulis dalam bahasa SQL. Sama sekali tidak ada bomoh di sini, semuanya sangat jelas. Sekarang tugas seterusnya ialah mengimport dump. Tidak ada yang rumit dengan dia juga. Pergi ke panel kawalan pengehosan anda, cari phpMyAdmin di sana, dan lancarkannya. Anda mungkin perlu menentukan log masuk/kata laluan, bergantung pada tetapan hoster. Nah, maka tindakannya serupa - pilih pangkalan data yang dikehendaki, klik tab "Import", kami melihat tetingkap berikut:

Dalam bahagian "Fail untuk diimport", menggunakan butang "Semak imbas", nyatakan fail pembuangan pangkalan data, di bawah kami masukkan pengekodan - dalam joomla, secara lalai ia adalah utf-8. Di bawah ialah bahagian "Import separa" dan medan "Bilangan rekod (pertanyaan) untuk dilangkau dari bintang" yang boleh anda masukkan nilai angka- bilangan baris yang diproses dalam satu laluan, sekiranya seluruh pangkalan data tidak mempunyai masa untuk diimport semasa hayat skrip. Nilai lalai "0" sepadan dengan mengimport keseluruhan pangkalan data dalam satu skrip dijalankan. Dalam amalan saya, saya tidak pernah berhadapan dengan hakikat bahawa pangkalan itu tidak mempunyai masa untuk mengisi satu pas, walaupun ini tidak bermakna kes sedemikian tidak berlaku. Nilai medan yang tinggal tidak perlu diubah, hanya tekan butang "GO". Itu sahaja, longgokan pangkalan data telah diimport.

Dan akhirnya, beberapa penjelasan.

1) Mengapa saya menerangkan kaedah mengimport/mengeksport semua jadual dan bukan keseluruhan pangkalan data? Hakikatnya ialah selalunya anda perlu berurusan dengan prosedur import/eksport apabila memindahkan data dari pelayan web ke mesin tempatan dan sebaliknya. Tetapi sangat kerap pada akses mesin tempatan digunakan akaun"root" tanpa kata laluan. Kami tidak mampu melakukan ini dengan hosting. Dan pangkalan data mengandungi bukan sahaja data, tetapi juga "keistimewaan" - hak untuk mengaksesnya pengguna tertentu. Untuk mengelak daripada membuat/memadam pengguna setiap kali dan memberikan hak akses kepada mereka, pendekatan digunakan di mana hanya struktur jadual dan data di dalamnya direkodkan dalam pembuangan pangkalan data. Jika anda hanya membuat sandaran untuk pelayan yang sama, adalah mungkin untuk membuat pembuangan keseluruhan pangkalan data.

2) Mengapa phpMyAdmin? Maksudnya di sini sama sekali tidak ada alternatif untuknya - hanya terdapat banyak daripada mereka, terdapat lebih banyak perkara yang berfungsi dan lebih mudah. Hanya phpMyAdmin log masuk set standard untuk kebanyakan perkhidmatan pengehosan bersama, i.e. Anda tidak perlu melakukan apa-apa untuk memasangnya. Itu. kami hanya membukanya dan membuang pangkalan data. Dan sudah tentu, menggunakan phpMyAdmin boleh berguna untuk banyak tugas - seperti menguji pertanyaan, melihat struktur jadual dan data di dalamnya.

Nah, sebenarnya itu sahaja yang saya ingin beritahu anda dalam artikel ini. Komen dialu-alukan seperti biasa.

Sokongan tapak Novosibirsk