Rumah > Artikel > pangkalan data > Bagaimana untuk menukar direktori data MySQL ke lokasi lain di Ubuntu 16.04
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.
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
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/mysqlSelepas 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 –pSekarang kita akan memulakan semula perkhidmatan mysql.
$ sudo systemctl start mysqlSekarang 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!