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:
sudo service mysql stop
sudo mkdir /media/exthdd/mysql_data
sudo cp -adR /var/lib/mysql/ /media/exthdd/mysql_data
sudo chown mysql:mysql -R /media/exthdd/mysql_data
sudo chmod 771 -R /media/exthdd/mysql_data/
sudo nano /etc/mysql/my.cnf
datadir = /media/exthdd/mysql_data
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 -xn
saya 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.log
memiliki 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.
Jawaban:
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/mysql
disalin, 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.14Versi 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_upgrade
perintah 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_db
untuk 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.
sumber
/temp
namun mungkin berbeda untuk Anda.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/mysql
ke/media/exthdd/mysql_data
.Setelah saya memindahkan data, saya mengatur
mysql
izin untukmysql_data
folder dengan benarTETAPI
/media/exthdd
izin folder induk dikecualikanmysql
.Jadi sekarang saya punya 2 pilihan:
Saya memilih opsi kedua:
sudo usermod -a -G www-data mysql
Dan biola!
sudo service mysql start
sudo service mysql status
(Karena @Frostalf sangat membantu saya menerima jawabannya)
sumber