Pindahkan database mysql ke drive lain linux

Pada artikel ini, kita akan belajar bagaimana mengubah Direktori Data MySQL atau memindahkan data Database MySQL ke lokasi baru, situasi ini dapat digunakan ketika database tumbuh sangat cepat, atau untuk beberapa alasan keamanan kita ingin memindahkan direktori data.

Prasyarat

  • Mesin Ubuntu dengan pengguna non-root dengan izin Sudo
  • MySQL diinstal dan berfungsi
  • Volume atau lokasi baru di mana kita ingin memindahkan lokasi data database, lokasi baru tersebut adalah /mnt/data_vol/MySQL karena data_vol adalah volume baru yang terpasang pada mesin atau server

Mengubah Lokasi Folder Data MySQL

Sebelum melangkah lebih jauh, pertama-tama kita akan menemukan lokasi direktori data saat ini

$ mysql –u root –p
Output:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 472
Server version: 5.6.30-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Saat dimintai kata sandi root MySQL, harap masukkan kata sandi. Jalankan perintah di bawah ini untuk mengetahui direktori data kerja saat ini untuk MySQL

Mysql> select @@datadir;
Output:
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
_

Sebagai output akan menunjukkan bahwa database MySQL menggunakan /var/lib/MySQL sebagai folder default sebagai direktori data. Sebelum kita memodifikasi sesuatu terlebih dahulu, kita akan memeriksa integritas datanya, kita akan menghentikan MySQL dan memeriksa statusnya

$ sudo systemctl stop mysql

Karena systemctl tidak akan menampilkan apa pun untuk perintah layanan

$ sudo systemctl status mysql
Output:
mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Mon 2016-09-12 13:57:43 IST; 1s ago
   Process: 17669 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
   Process: 17668 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
   Process: 17664 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 17668 (code=exited, status=0/SUCCESS)
Sep 12 13:55:14 ubuntu-16 systemd[1]: Starting MySQL Community Server...
Sep 12 13:55:15 ubuntu-16 systemd[1]: Started MySQL Community Server.
Sep 12 13:57:40 ubuntu-16 systemd[1]: Stopping MySQL Community Server...
Sep 12 13:57:43 ubuntu-16 systemd[1]: Stopped MySQL Community Server.

Setelah kami mengonfirmasi bahwa MySQL dihentikan, kami akan memindahkan data ke lokasi baru. Untuk memindahkan data, kami akan menggunakan Rsync dengan opsi –a yang mempertahankan izin file data dan –v yang menampilkan keluaran verbose

Di bawah ini adalah perintah lengkap untuk memindahkan data ke lokasi baru –

$ rsync –av /var/lib/mysql /mnt/data_vol/
OutPut:
sending incremental file list
mysql/
mysql/auto.cnf
mysql/debian-5.7.flag
mysql/ib_buffer_pool
mysql/ib_logfile0
mysql/ib_logfile1
mysql/ibdata1
mysql/mysql/
mysql/mysql/columns_priv.MYD
mysql/mysql/columns_priv.MYI
mysql/mysql/columns_priv.frm
mysql/mysql/db.MYD
mysql/mysql/db.MYI
mysql/mysql/db.frm
mysql/mysql/db.opt
….
mysql/sys/x@0024user_summary.frmmysql/sys/x@0024user_summary_by_file_io.frm
mysql/sys/x@0024user_summary_by_file_io_type.frm
mysql/sys/x@0024user_summary_by_stages.frm
mysql/sys/x@0024user_summary_by_statement_latency.frm
mysql/sys/x@0024user_summary_by_statement_type.frm
mysql/sys/x@0024wait_classes_global_by_avg_latency.frm
mysql/sys/x@0024wait_classes_global_by_latency.frm
mysql/sys/x@0024waits_by_host_by_latency.frm
mysqlsys//x@0024waits_by_user_by_latency.frm
mysql/sys/x@0024waits_global_by_latency.frm
sent 199,384,083 bytes received 6,858 bytes 132,927,294.00 bytes/sec
total size is 199,307,568 speedup is 1.00
_

Setelah rsync berhasil memindahkan folder data ke lokasi baru. Untuk alasan keamanan, kami akan menyimpan folder data hingga memastikan bahwa data berada di lokasi baru, kami akan mengganti nama direktori data saat ini dari /var/lib/mysql menjadi /var/lib/mysql_backup. di bawah ini adalah perintah untuk mengubah direktori data saat ini

Di bawah ini adalah perintah untuk mengubah direktori data saat ini –

$ sudo mv /var/lib/mysql /var/lib/mysql_backup

Sekarang, kita akan mengubah direktori data default, untuk mengubah kita memiliki banyak cara, tetapi kita akan mengedit file mysqld. cnf yang terletak di /etc/mysql/mysql. conf. d/mysqld. cnf

Untuk mengedit mysqld. cnf, di bawah ini adalah perintahnya

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
Output:
[mysqld_safe]
socket    = /var/run/mysqld/mysqld.sock
nice      = 0
[mysqld]
#
# * Basic Settings
#
user             = mysql
pid-file         = /var/run/mysqld/mysqld.pid
socket           = /var/run/mysqld/mysqld.sock
port             = 3306
basedir          = /usr
datadir          = /mnt/data_vol/mysql/
tmpdir           = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
_

Mengubah Pengaturan Apparmor Alias

Juga, kami perlu mengedit /etc/apparmor. d/merdu/alias

Di bagian bawah file, kami perlu menambahkan baris berikut di aturan alias

$ sudo vi /etc/apparmor.d/tunables/alias
Output:
# ------------------------------------------------------------------
#
# Copyright (C) 2010 Canonical Ltd.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License published by the Free Software Foundation.
#
# ------------------------------------------------------------------
# Alias rules can be used to rewrite paths and are done after variable
# resolution. For example, if '/usr' is on removable media:
# alias /usr/ -> /mnt/usr/,
#
# Or if mysql databases are stored in /home:
# alias /var/lib/mysql/ -> /home/mysql/,
alias /var/lib/mysql/ -> /mnt/data_vol/mysql

Setelah file diedit, kita perlu me-restart apparmor

Di bawah ini adalah perintah untuk me-restart apparmor

Karena kami telah mengubah direktori data default, kami perlu menjalankan perintah di bawah ini yang akan membuat struktur folder direktori minimal untuk meneruskan lingkungan skrip

$ sudo mkdir /var/lib/mysql/mysql –p

Sekarang kita akan me-restart layanan mysql

$ sudo systemctl start mysql
_

Sekarang kita akan memeriksa status layanan MySQL dengan perintah di bawah ini

$ sudo systemctl status mysql
Output:
mysql.service - MySQL Community Server
    Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2016-09-12 14:17:27 IST; 23s ago
   Process: 18481 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCC
   Process: 18477 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCES
  Main PID: 18480 (mysqld)
     Tasks: 28 (limit: 512)
    Memory: 137.3M
   CPU: 329ms
CGroup: /system.slice/mysql.service
        └─18480 /usr/sbin/mysqld
Sep 12 14:17:26 ubuntu-16 systemd[1]: Starting MySQL Community Server...
Sep 12 14:17:27 ubuntu-16 systemd[1]: Started MySQL Community Server.
_

Untuk memastikan bahwa direktori data baru diubah, kami akan menjalankan perintah di bawah ini

Mysql> select @@datadir;
Output:
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
_0

Setelah kami mengkonfirmasi bahwa direktori data diubah, kami akan menghapus direktori data default yang ada di /var/lib/mysql_backup, di bawah ini adalah perintah untuk menghapus direktori database lama

Mysql> select @@datadir;
Output:
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
_1

Dalam konfigurasi dan langkah-langkah di atas, kami telah belajar untuk memindahkan direktori data MySQL ke lokasi baru yang akan membantu kami mengamankan atau menyimpan lebih banyak data ke lokasi yang berbeda

Bagaimana cara memindahkan MySQL ke drive lain?

3 Jun 2022•Pengetahuan PrinterLogic .
Hentikan layanan MySQL
Buat Folder di drive baru (mis. g. D. \Database MySQL\)
Berikan Kontrol Penuh kepada pengguna LAYANAN JARINGAN. .
Salin folder "Data" ke lokasi data baru. .
Buat salinan cadangan file "my. file ini". .
Edit "my. ini" menggunakan Wordpad. .
Mulai ulang layanan MySQL

Bagaimana Anda memindahkan direktori data MySQL ke lokasi baru di Linux?

Langkah 1 - Pilih lokasi baru. Template CentOS kami tidak memiliki partisi /home tetapi menyimpannya di partisi /. .
Langkah 2 - Matikan MySQL. systemctl hentikan mysqld
Langkah 3 - Pindahkan data. .
Langkah 4 - Konfigurasikan MySQL. .
Langkah 5 - Mulai MySQL. .
Langkah 6 - Hapus jalur basis data lama

Di mana database MySQL disimpan Linux?

MySQL menggunakan direktori /var/lib/mysql sebagai direktori data default untuk sistem berbasis Linux

Bisakah saya menyalin direktori data MySQL saja?

Menyalin seluruh folder data . shut down mysqld, zip up your entire MySQL data directory, and copy it to the new server's data directory.