Tidak dapat memindahkan data MySQL ke drive eksternal

1

Saya tidak dapat memulai mysql setelah memindahkan data ke hard drive eksternal.

Pengaturan saya (Raspbian):

  • Folder data MySQL default: / var / lib / mysql
  • Target folder data MySQL: / media / exthdd / mysql_data

Dan ini adalah bagaimana saya mencoba untuk memindahkan data mysql saya:

  1. sudo service mysql stop
  2. sudo mkdir /media/exthdd/mysql_data
  3. sudo cp -adR /var/lib/mysql/ /media/exthdd/mysql_data
  4. sudo chown mysql:mysql -R /media/exthdd/mysql_data
  5. sudo chmod 771 -R /media/exthdd/mysql_data/
  6. sudo nano /etc/mysql/my.cnf
  7. datadir = /media/exthdd/mysql_data
  8. sudo service mysql start

Ini kesalahan yang saya dapatkan setelahnya:

Pekerjaan untuk mysql.service gagal. Lihat 'systemctl status mysql.service' dan 'journalctl -xn' untuk detailnya.

Menjalankan journalctl -xnsaya mendapat:

Tidak ada file jurnal yang ditemukan.

Untuk systemctl status mysql.service

mysql.service - LSB: Mulai dan hentikan daemon server database mysql

Dimuat: dimuat (/etc/init.d/mysql)

Aktif: gagal (Hasil: keluar-kode) sejak Sat 2016-08-20 18:58:48 CST; 2 mnt 4 dtk yang lalu

Proses: 27436 ExecStop = / etc / init.d / mysql stop (kode = keluar, status = 0 / SUKSES)

Proses: 373 ExecStart = / etc / init.d / mysql mulai (kode = keluar, status = 1 / GAGAL)

Dan log kesalahan sudo cat /var/log/mysql/error.logmemiliki ini:

160820 19:05:50 mysqld_safe Memulai daemon mysqld dengan basis data dari / media / exthdd / mysql_data

160820 19:05:50 [Peringatan] Menggunakan awalan opsi unik key_buffer alih-alih key_buffer_size tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Silakan gunakan nama lengkap saja.

160820 19:05:50 [Catatan] / usr / sbin / mysqld (mysqld 5.5.49-0 + deb8u1) dimulai sebagai proses 2403 ...

160820 19:05:50 [Peringatan] Menggunakan awalan opsi unik myisam-recover bukan myisam-recover-options sudah usang dan akan dihapus dalam rilis mendatang. Silakan gunakan nama lengkap saja.

160820 19:05:50 [Catatan] Plugin 'FEDERATED' dinonaktifkan. / usr / sbin / mysqld: Tabel 'mysql.plugin' tidak ada

160820 19:05:50 [GALAT] Tidak bisa membuka tabel mysql.plugin. Silakan jalankan mysql_upgrade untuk membuatnya.

160820 19:05:50 InnoDB: Tumpukan memori InnoDB dinonaktifkan

160820 19:05:50 InnoDB: Mutex dan rw_locks menggunakan builtin atom GCC

160820 19:05:50 InnoDB: Tabel terkompresi menggunakan zlib 1.2.8

160820 19:05:50 InnoDB: Menggunakan AIO asli Linux

160820 19:05:50 InnoDB: Menginisialisasi kumpulan buffer, ukuran = 128.0M

160820 19:05:50 InnoDB: Inisialisasi kolam buffer yang lengkap

160820 19:05:50 InnoDB: format file yang didukung tertinggi adalah Barracuda. InnoDB: Pemindaian log berkembang melewati pos pemeriksaan lsn 49439

160820 19:05:50 InnoDB: Database tidak dimatikan secara normal! InnoDB: Mulai pemulihan kerusakan. InnoDB: Membaca informasi tablespace dari file .ibd ... InnoDB: Memulihkan kemungkinan halaman data yang setengah ditulis dari doublewrite InnoDB: buffer ... InnoDB: Melakukan pemulihan: memindai hingga urutan nomor log 1595675

160820 19:05:51 InnoDB: Memulai kumpulan catatan log yang diterapkan ke database ... InnoDB: Kemajuan dalam persen: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 89 91 92 93 94 95 96 97 98 99 InnoDB: Berlaku batch selesai

160820 19:05:51 InnoDB: Menunggu utas latar dimulai

160820 19:05:52 InnoDB: 5.5.49 dimulai; nomor urut log 1595675

160820 19:05:52 [Catatan] Nama host server (bind-address): '127.0.0.1'; port: 3306

160820 19:05:52 [Catatan] - '127.0.0.1' diselesaikan ke '127.0.0.1';

160820 19:05:52 [Catatan] Soket server dibuat di IP: '127.0.0.1'.

160820 19:05:52 [GALAT] Kesalahan fatal: Tidak bisa membuka dan mengunci tabel privilege: Tabel 'mysql.host' tidak ada

160820 19:05:52 mysqld_safe mysqld dari file pid /var/run/mysqld/mysqld.pid berakhir

[UPDATE] Saya telah memperbarui mysql ke 5.6.30-1, tetapi masalahnya tetap ada (meskipun kesalahannya berbeda sekarang). Juga, jangan bingung, saya membuat symlink dari / var / lib / mysql -> / media / exthdd / mysql

orangepi @ OrangePI: / var / lib / mysql $ layanan sudo mysql mulai orangepi @ OrangePI: / var / lib / mysql $ sudo service status mysql

● mysql.service - Server Komunitas MySQL

Dimuat: dimuat (/lib/systemd/system/mysql.service; diaktifkan)

Aktif: tidak aktif (mati) sejak Senin 2016-08-22 03:55:30 CST; 40-an yang lalu

Proses: 8151 ExecStartPost = / usr / share / mysql / mysql-systemd-start mulai> (kode = keluar, status = 0 / SUKSES)

Proses: 8150 ExecStart = / usr / bin / mysqld_safe (kode = keluar, status = 0 / SUKSES)

Proses: 8148 ExecStartPre = / usr / share / mysql / mysql-systemd-start pre> (kode = keluar, status = 0 / SUKSES) PID Utama: 8150 (kode = keluar, status = 0 / SUKSES)

22 Agustus 03:55:00 OrangePI mysqld_safe [8150]: 160822 03:55:00 mysqld_safe Tidak dapat masuk ke log kesalahan dan syslog secara bersamaan. Hapus semua --log-error configura ... ke efek.

22 Agustus 03:55:00 OrangePI mysqld_safe [8150]: 160822 03:55:00 mysqld_safe Masuk ke '/var/log/mysql/error.log'.

22 Agustus 03:55:00 OrangePI mysqld_safe [8150]: 160822 03:55:00 mysqld_safe Memulai daemon mysqld dengan basis data dari / var / lib / mysql

22 Agustus 03:55:00 OrangePI mysqld_safe [8150]: 160822 03:55:00 mysqld_safe mysqld dari file pid /var/run/mysqld/mysqld.pid berakhir

22 Agustus 03:55:30 OrangePI systemd [1]: Memulai MySQL Community Server. Petunjuk: Beberapa baris elips, gunakan -l untuk ditampilkan secara penuh.

Dan lagi log kesalahan:

orangepi @ OrangePI: / var / lib / mysql $ sudo cat /var/log/mysql/error.log

160822 03:55:00 mysqld_safe Memulai daemon mysqld dengan basis data dari / var / lib / mysql

2016-08-22 03:55:00 0 [Peringatan] Menggunakan awalan opsi unik key_buffer alih-alih key_buffer_size sudah usang dan akan dihapus dalam rilis mendatang. Silakan gunakan nama lengkap saja.

2016-08-22 03:55:00 0 [Peringatan] TIMESTAMP dengan nilai DEFAULT implisit sudah tidak digunakan lagi. Silakan gunakan opsi server --explicit_defaults_for_timestamp (lihat dokumentasi untuk detail lebih lanjut).

2016-08-22 03:55:00 0 [Catatan] / usr / sbin / mysqld (mysqld 5.6.30-1) dimulai sebagai proses 8516 ...

2016-08-22 03:55:00 8516 [Peringatan] Tidak dapat membuat file uji /var/lib/mysql/OrangePI.lower-test

2016-08-22 03:55:00 8516 [Peringatan] Tidak dapat membuat file uji /var/lib/mysql/OrangePI.lower-test / usr / sbin / mysqld: Tidak dapat mengubah dir ke '/ var / lib / mysql / '(Errcode: 13 - Izin ditolak)

2016-08-22 03:55:00 8516 [GALAT] Gagal

2016-08-22 03:55:00 8516 [Catatan] Binlog berakhir

2016-08-22 03:55:00 8516 [Catatan] / usr / sbin / mysqld: Shutdown complete

160822 03:55:00 mysqld_safe mysqld dari file pid /var/run/mysqld/mysqld.pid berakhir

Ia mengatakan tidak dapat membuat file uji, tetapi mysql memang memiliki semua izin dan memiliki semua folder / file mysql.

Tomas Stibrany
sumber
Anda mungkin ingin mencoba rsync untuk proses penyalinan alih-alih cp
nijave
Menyalin bukanlah masalahnya. Saya memverifikasi saya menyalin semua file. Saya bahkan mencoba untuk memindahkan seluruh folder - tidak membantu.
Tomas Stibrany

Jawaban:

1

Masalah Anda adalah bahwa tabel mysql dari database mysql utama hilang atau rusak. Kemungkinan besar itu tidak disalin. Tabel yang dimaksud adalah mysql.host

jadi pertama-tama, pastikan setiap file, /var/lib/mysqldisalin, khususnya file dan direktori yang bukan bagian dari database yang Anda buat. Karena Anda menggunakan MySQL 5.5.49, yang merupakan versi lama. Saya merekomendasikan memperbarui server Anda ke versi yang lebih stabil. Versi stabil terbaru adalah 5.7.14

Versi 5.6.7 dan di atasnya tidak lagi menggunakan tabel ini, oleh karena itu jika Anda memutakhirkan ke versi ini atau lebih tinggi, Anda bisa menggunakan mysql_upgradeperintah untuk memutakhirkan basis data Anda dan harus mengembalikan server Anda ke urutan yang berfungsi.

Tetapi jika karena alasan tertentu Anda harus menggunakan versi MySQL 5.5, ada MySQL 5.5.51 yang merupakan versi stabil terakhir dari cabang 5.5. Ada beberapa opsi yang bisa Anda coba. Anda dapat menggunakan mysql_install_dbuntuk mencoba membuat ulang Database MySQL. Atau jika itu tidak berhasil, Anda harus menghapus Database MySQL dan menginstal ulang server Anda untuk membuatnya meregenerasi tabel ini.

Untuk lebih jelasnya, database yang saya maksud adalah database utama MySQL yang menyimpan informasi tentang server dan juga pengguna, dll. Bukan Database Anda yang telah Anda buat.

Frostalf
sumber
Terima kasih atas jawaban Anda. Saya telah memperbarui mysql seperti yang Anda katakan (meskipun hanya untuk v5.6.30-1), tetapi sekarang ia mengatakan tidak dapat membuat file uji meskipun ia memiliki semua izin.
Tomas Stibrany
Mungkin su untuk pengguna berjalan mysql dan menguji untuk memastikan Anda dapat membaca / menulis
nijave
@ ThomasStibrany Ok, saya meneliti penyebabnya, dan penyebab umumnya adalah, apakah Anda telah mengaktifkan SELinux dan harus dinonaktifkan. Atau server mysql Anda tidak memiliki izin baca / tulis ke direktori temp yang dikonfigurasi untuk digunakan. Biasanya yang /temp namun mungkin berbeda untuk Anda.
Frostalf
0

Terpecahkan!

Itu bukan apparmor (SELinux, atau izin untuk /temp, itu adalah izin ke folder induk dari hdd eksternal saya .

Jadi untuk menjadi jelas bagi pembaca masa depan:

Saya ingin memindahkan data mysql dari /var/lib/mysqlke /media/exthdd/mysql_data.

Setelah saya memindahkan data, saya mengatur mysqlizin untuk mysql_datafolder dengan benar

drwxrwx --- 7 mysql mysql 4096 22 Agustus 20:52 mysql_data

TETAPI /media/exthddizin folder induk dikecualikan mysql.

drwxrwx --- 4 orangepi www-data 4096 22 Agustus 20:28 owncloud

Jadi sekarang saya punya 2 pilihan:

  1. Izinkan akses ke exthdd untuk semua pengguna (chmod 777)
  2. Tambahkan mysql ke grup data-www (grup data-www memiliki direktori)

Saya memilih opsi kedua:

sudo usermod -a -G www-data mysql

Dan biola!

sudo service mysql start

sudo service mysql status

mysql.service - Server Komunitas MySQL

Dimuat: dimuat (/lib/systemd/system/mysql.service; diaktifkan)

Aktif: aktif (berjalan) sejak Senin 2016-08-22 21:03:52 CST; 3s yang lalu

(Karena @Frostalf sangat membantu saya menerima jawabannya)

Tomas Stibrany
sumber