Server mysql ubuntu telah hilang

Mengalami masalah saat mengimpor dump SQL Anda, baik melalui baris perintah atau melalui konsol manajemen kontainer, inilah solusinya

$ ./mysql -u root -p my_db < file.sql
Enter password: 
ERROR 2006 (HY000) at line 1: MySQL server has gone away

Pesan eror. KESALAHAN 2006 (HY000). Server MySQL telah hilang, lihat di atas

Keterangan. Ini disebabkan oleh file impor SQL yang terlalu besar atau bidang yang memuat terlalu banyak informasi, sehingga melebihi pengaturan max_allowed_packet

Sistem. Linux

Larutan. tingkatkan paket maksimum yang diizinkan dengan mengubah parameter di my. File cnf akan menyelesaikan masalah ini

Intervensi manual cenderung terputus-putus dan, karena merupakan hal yang hanya dilakukan satu kali dalam situasi tertentu (mis. g. , kueri berjalan lama yang buruk), mungkin akan diketahui oleh DBA. Pt-kill mungkin kurang terlihat, karena sering kali dibiarkan berjalan sebagai solusi untuk mencegah kueri panjang yang buruk tersebut membebani sumber daya sistem sumber daya. Memeriksa daftar proses sistem harus membawa perintah ke permukaan

Kerang

1

2

3

$ ps xauf . grep pt - bunuh

tara 6069 0. 1 0. 1 111416 29452 poin / . S+ 10:57 0. 00 . . \_ perl / usr . 0. 0. 1/bin/pt-kill --interval 1s --busy-time 5s --match-info (SELECT) h=127.0.0.1 -- cetak -- bunuh

tara 6913 0. 0 0. 0 21532 1112 poin / . S+ 11:00 0. 00 . \_ grep -- color=auto pt-kill

Cara yang sangat mudah adalah dengan menggunakan plugin audit yang tersedia untuk Server Percona untuk MySQL untuk menentukan dari mana asal perintah kill.

Kerang

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<AUDIT_RECORD>

  <NAMA>Kueri</NAME>

  <REKAM>624484743_2020-06-30T17:38. 14< / REKAM>

  <TIMESTAMP>2020-06-30T17:57. 35 UTC< / TIMESTAMP>

  <COMMAND_CLASS>bunuh</COMMAND_CLASS>

  <CONNECTION_ID>17</CONNECTION_ID>

  <STATUS>0</STATUS>

  <SQLTEXT>BUNUH QUERY 16</SQLTEXT>

  <PENGGUNA>taras[taras] @ localhost []</USER>

  <HOST>localhost</HOST>

  <OS_USER></OS_USER>

  <IP></IP>

  <DB></DB>

< / AUDIT_RECORD>

Ini menunjukkan nama host, pengguna, dan waktu ketika koneksi terputus

2. Transfer Potongan Data Besar

Misalnya, saat menggunakan bidang BLOB untuk menyimpan data biner dalam tabel atau ada pernyataan INSERT yang berisi banyak baris. Ini mungkin terjadi saat menggunakan klien MySQL CLI (salah satu kasus memuat dump SQL), atau dapat terjadi dalam aplikasi saat mencoba menyimpan data BLOB (misalnya, dari unggahan file)

Ada batasan yang diterapkan MySQL pada jumlah data yang dapat dikirimkan per kueri, dan variabel max_allowed_packet mendefinisikannya

Jadi, dalam kedua kasus, kita perlu menentukan ke tabel mana data ditulis, misalnya, mengambil file SQL untuk pernyataan INSERT INTO dan menerapkan logging di ujung aplikasi. Dengan cara ini, pernyataan akan disimpan bersama dengan kesalahan yang mencegah penyelesaiannya. Pernyataan parsial dapat ditangkap (karena BLOB bisa menjadi beban untuk dicatat), tetapi selama ada nama tabel, dimungkinkan untuk memeriksa struktur tabel dan melihat apakah itu berisi data biner.

Contoh pernyataan INSERT dengan data biner (terpotong)

Kerang

1

MASUKKAN KELUAR t1 NILAI (1, x'89504....82)

Untuk memungkinkan eksekusi kueri yang lebih besar, variabel perlu disesuaikan

Kerang

1

SET GLOBAL max_allowed_packet = 128M ;

Variabel dapat diatur per sesi atau secara global, tergantung pada kasus penggunaan

3. Koneksi Ditutup oleh Timeout

Ini sepele, tetapi aplikasi dapat menggunakan kembali koneksi yang sudah ada. Selama waktu tidak aktif atau lalu lintas rendah, ada kemungkinan beberapa koneksi tidak akan digunakan untuk sementara waktu dan ditutup di ujung MySQL. Itu paling baik dilacak dengan pencatatan aplikasi;

Kerang

1

2

mysql> SET SESI wait_timeout = 5 ;

Kueri OK, 0 baris affected (0.00 dtk)

Tunggu selama 5 detik

Kerang

1

2

3

4

5

6

7

8

9

10

11

12

mysql> pilih 1 ;

ERROR 2006 (HY000): MySQL server telah pergi pergi

Tidak koneksi. Mencoba untuk menghubungkan kembali. . .

Koneksi id. 16

Database saat ini. *** TIDAK ADA ***

 

+---+

. 1 .

+---+

. 1 .

+---+

1 baris di set (0.01 dtk)

Biasanya, koneksi dibangun kembali, dan aplikasi melanjutkan operasi normal;

Kerang

1

SET GLOBAL wait_timeout = 57600 ;

Nilai default untuk variabel adalah 28800 detik (8 jam), yang cukup untuk sebagian besar kasus

Selain itu, menutup koneksi secara bersih dari ujung aplikasi, setelah beberapa saat tidak aktif, menghilangkan masalah ini

4. Server MySQL Sebenarnya Telah Hilang

Yang ini mungkin skenario terburuk yang mungkin terjadi ketika MySQL mogok pada kueri atau karena alasan lain, mis. g. , pembunuh OOM mematikan prosesnya. Namun, itu juga bisa disebabkan oleh restart bersih

Dalam hal ini, seseorang harus memeriksa uptime MySQL dan log, log kesalahan MySQL, dan syslog. Itu harus menunjukkan apakah server restart terjadi dan jika ada kesalahan yang mengarah ke restart

Jika server benar-benar macet, sekarang saatnya untuk menemukan penyebab sebenarnya. Periksa pelacak bug, karena masalah mungkin telah dilaporkan dan mungkin sudah diperbaiki; . Jika itu adalah restart bersih, periksa apakah pembaruan otomatis diaktifkan atau jika orang lain memulai ulang layanan secara interaktif (ya, kurangnya komunikasi juga merupakan masalah)

Mengapa koneksi MySQL saya terputus?

Alasan paling umum untuk kesalahan server MySQL hilang adalah waktu server habis dan koneksi ditutup . Dalam hal ini, Anda biasanya mendapatkan salah satu dari kode kesalahan berikut (yang Anda dapatkan bergantung pada sistem operasi). Klien tidak dapat mengirim pertanyaan ke server.

Tidak dapat menyambung kembali ke MySQL setelah 1 upaya). Server MySQL telah pergi?

Server MySQL hilang (kesalahan 2006) memiliki dua penyebab dan solusi utama. Waktu server habis dan sambungan ditutup. Untuk memperbaikinya, periksa variabel wait_timeout mysql di my. file konfigurasi cnf cukup besar , misal wait_timeout = 28800.

Di mana server MySQL berada di Ubuntu?

Direktori data default untuk server database MySQL adalah /var/lib/mysql juga. Tetapi file konfigurasi berbeda untuk server database MySQL. Untuk MySQL, file konfigurasinya adalah /etc/mysql/mysql.

Mengapa server MySQL tidak berfungsi?

biasanya berarti tidak ada server MySQL yang berjalan di sistem atau Anda menggunakan nama file soket Unix atau nomor port TCP/IP yang salah saat mencoba menyambung ke server . Anda juga harus memeriksa bahwa port TCP/IP yang Anda gunakan belum diblokir oleh firewall atau layanan pemblokiran port. . You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.