Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menukar direktori data MySQL ke lokasi lain di Ubuntu 16.04

Bagaimana untuk menukar direktori data MySQL ke lokasi lain di Ubuntu 16.04

王林
王林ke hadapan
2023-08-31 21:33:021116semak imbas

如何在 Ubuntu 16.04 上将 MySQL 数据目录更改为另一个位置

Dalam artikel ini kita akan belajar cara menukar direktori data MySQL atau menempatkan semula data pangkalan data MySQL ke lokasi baharu, keadaan ini mungkin digunakan apabila pangkalan data berkembang dengan sangat pantas atau atas sebab-sebab keselamatan tertentu kita mahu Pindahkan salinan direktori data ke lokasi baru.

Prasyarat

  • Komputer Ubuntu dengan keistimewaan sudo sebagai pengguna bukan root.
  • MySQL dipasang dan berjalan.
  • Volume atau lokasi baharu yang kita mahu alihkan lokasi data pangkalan data, lokasi baharu ialah /mnt/data_vol/MySQL kerana data_vol ialah volum baharu yang disambungkan ke komputer

Tukar lokasi folder data MySQL

Bersambung Sebelum , kami mula-mula mencari lokasi semasa direktori data

$ 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>

Apabila digesa untuk kata laluan root untuk MySQL, masukkan kata laluan. Jalankan arahan berikut untuk memahami direktori data kerja semasa MySQL.

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

Seperti yang ditunjukkan dalam output, pangkalan data MySQL menggunakan /var/lib/MySQL sebagai folder lalai untuk direktori data. Sebelum kami mengubah suai apa-apa, kami akan menyemak integriti data, kami akan menghentikan MySQL dan menyemak status

$ sudo systemctl stop mysql

kerana systemctl tidak akan menunjukkan apa-apa daripada arahan perkhidmatan

$ 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.

Sebaik sahaja kami mengesahkan bahawa MySQL dihentikan, kami akan meletakkan data Beralih ke lokasi baharu. Untuk mengalihkan data, kami akan menggunakan Rsync dengan pilihan –a, yang mengekalkan kebenaran pada fail data, dan –v yang memaparkan output verbose.

Di bawah ialah arahan lengkap untuk mengalihkan data ke lokasi baharu –

$ 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

Selepas rsync, berjaya mengalihkan folder data ke lokasi baharu. Atas sebab keselamatan, kami akan mengekalkan folder data sehingga kami mengesahkan bahawa data berada di lokasi baharu dan kami akan menamakan semula direktori data semasa daripada /var/lib/mysql kepada /var/lib/mysql_backup . Di bawah ialah arahan untuk menukar direktori data semasa.

Di bawah adalah arahan untuk menukar direktori data semasa –

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

Sekarang kami akan menukar direktori data lalai, untuk menukar kami mempunyai banyak cara tetapi kami akan mengedit fail yang terletak di /etc/mysql/mysql.conf.d/ mysqld.cnf mysqld.cnf fail dalam .

Edit mysqld.cnf dengan arahan berikut

$ 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

Tukar tetapan alias Apparmor

Selain itu, kita perlu mengedit /etc/apparmor.d/tunables/alias

At bahagian bawah daripada fail, kita perlu menambah alias Baris berikut dalam peraturan.

$ 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

Selepas mengedit fail, kita perlu memulakan semula apparmor.

Berikut ialah arahan untuk memulakan semula apparmor.

Memandangkan kami menukar direktori data lalai, kami perlu menjalankan arahan berikut yang akan mencipta struktur folder direktori minimum untuk lulus persekitaran skrip.

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

Sekarang kita akan memulakan semula perkhidmatan mysql.

$ sudo systemctl start mysql

Sekarang kami akan menyemak status perkhidmatan MySQL menggunakan arahan berikut

$ 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 direktori data baru telah ditukar, kami akan menjalankan arahan berikut

$ mysql -uroot -p
Output:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.13-0ubuntu0.16.04.2 (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> select @@datadir
+----------------------+
| @@datadir            |
+----------------------+
| /mnt/data_vol/mysql/ |
+-----------------+
1 row in set (0.00 sec)
mysql>

Setelah kami mengesahkan bahawa direktori data telah berubah, kami akan memadam direktori data lalai, Direktori ini terletak di /var/lib/mysql_backup Di bawah adalah arahan untuk memadam direktori pangkalan data lama.

$ sudo rm –rf /var/lib/mysql_backup

Dalam konfigurasi dan langkah di atas, kami belajar untuk menempatkan semula direktori data MySQL ke lokasi baharu, yang akan membantu kami melindungi atau menyimpan lebih banyak data ke lokasi lain.

Atas ialah kandungan terperinci Bagaimana untuk menukar direktori data MySQL ke lokasi lain di Ubuntu 16.04. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam