কম্পিউটার

উবুন্টু 16.04 এ মাইএসকিউএল ডেটা ডিরেক্টরিকে অন্য অবস্থানে কীভাবে পরিবর্তন করবেন


এই নিবন্ধে, আমরা শিখব কিভাবে MySQL ডেটা ডিরেক্টরি পরিবর্তন করতে হয় বা MySQL ডেটাবেস ডেটাকে নতুন অবস্থানে স্থানান্তর করতে হয়, এই পরিস্থিতিটি ব্যবহার করা যেতে পারে যখন ডাটাবেস খুব দ্রুত বৃদ্ধি পাচ্ছে, বা কিছু নিরাপত্তার কারণে আমরা ডেটা ডিরেক্টরি সরাতে চাই। নতুন অবস্থানে।

পূর্বশর্ত

  • সুডো অনুমতি সহ একটি নন-রুট ব্যবহারকারী সহ একটি উবুন্টু মেশিন।
  • MySQL ইনস্টল করা এবং কাজ করছে৷
  • একটি নতুন ভলিউম বা অবস্থান যেখানে আমরা ডাটাবেসের ডেটা অবস্থান সরাতে চাই, নতুন অবস্থান হবে /mnt/data_vol/MySQL কারণ data_vol হল মেশিন বা সার্ভারের সাথে সংযুক্ত নতুন ভলিউম।

MySQL ডেটা ফোল্ডারের অবস্থান পরিবর্তন করা হচ্ছে

আমরা আরও এগিয়ে যাওয়ার আগে, আমরা প্রথমে ডেটা ডিরেক্টরির বর্তমান অবস্থান খুঁজে বের করব

$ 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>
সাফ করতে '\c' টাইপ করুন

মাইএসকিউএল-এর রুট পাসওয়ার্ডের জন্য অনুরোধ করা হলে, অনুগ্রহ করে পাসওয়ার্ডটি লিখুন। MySQL-এর বর্তমান কার্যরত ডাটা ডিরেক্টরি জানতে নিচের কমান্ডটি চালান।

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

যেহেতু আউটপুট দেখাবে যে MySQL ডাটাবেস /var/lib/MySQL কে ডেটা ডিরেক্টরি হিসাবে ডিফল্ট ফোল্ডার হিসাবে ব্যবহার করে। আমরা প্রথমে কিছু পরিবর্তন করার আগে, আমরা ডেটার অখণ্ডতা পরীক্ষা করব, আমরা MySQL বন্ধ করব এবং স্থিতি পরীক্ষা করব

$ sudo systemctl stop mysql

যেহেতু systemctl সার্ভিস কমান্ডের জন্য কিছু প্রদর্শন করবে না

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

একবার, আমরা নিশ্চিত করি যে MySQL বন্ধ হয়ে গেছে, আমরা ডেটাটিকে নতুন অবস্থানে নিয়ে যাব। ডেটা সরানোর জন্য, আমরা Rsync ব্যবহার করব –একটি বিকল্প যা ডেটা ফাইলের অনুমতি সংরক্ষণ করে এবং –v যা ভার্বোস আউটপুট দেখায়।

নতুন অবস্থানে ডাটা সরানোর সম্পূর্ণ কমান্ড নিচে দেওয়া হল –

$ 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

rsync এর পরে, সফলভাবে ডেটা ফোল্ডারটিকে নতুন অবস্থানে নিয়ে যান। নিরাপত্তার কারণে আমরা ডেটা ফোল্ডারটি রাখব যতক্ষণ না নিশ্চিত করা হয় যে ডেটা নতুন অবস্থানে রয়েছে, আমরা বর্তমান ডেটা ডিরেক্টরির নাম পরিবর্তন করে /var/lib/mysql থেকে /var/lib/mysql_backup করব। বর্তমান ডাটা ডাইরেক্টরি পরিবর্তন করার কমান্ড নিচে দেওয়া হল।

নীচে বর্তমান ডাটা ডিরেক্টরি পরিবর্তন করার কমান্ড রয়েছে –

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

এখন, আমরা ডিফল্ট ডেটা ডিরেক্টরি পরিবর্তন করব, পরিবর্তন করার জন্য আমাদের অনেক উপায় আছে, কিন্তু আমরা mysqld.cnf ফাইলটি সম্পাদনা করব যা /etc/mysql/mysql.conf.d/mysqld.cnf এ অবস্থিত। পি>

mysqld.cnf সম্পাদনা করতে, নীচের কমান্ডটি রয়েছে

$ 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

অ্যাপারমার উপনাম সেটিংস পরিবর্তন করা হচ্ছে

এছাড়াও, আমাদের /etc/apparmor.d/tunables/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

ফাইলটি এডিট হয়ে গেলে, আমাদের অ্যাপারমার রিস্টার্ট করতে হবে।

নিচে অ্যাপারমার রিস্টার্ট করার কমান্ড দেওয়া হল।

যেহেতু আমরা ডিফল্ট ডেটা ডিরেক্টরি পরিবর্তন করেছি, আমাদের নিচের কমান্ডটি চালানোর প্রয়োজন ছিল যা স্ক্রিপ্ট পরিবেশগুলি পাস করার জন্য ন্যূনতম ডিরেক্টরি ফোল্ডার কাঠামো তৈরি করবে৷

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

এখন আমরা mysql পরিষেবাগুলি পুনরায় চালু করব৷

$ sudo systemctl start mysql

এখন আমরা নিচের কমান্ড দিয়ে MySQL পরিষেবার স্থিতি পরীক্ষা করব

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

নতুন ডেটা ডিরেক্টরি পরিবর্তিত হয়েছে তা নিশ্চিত করতে, আমরা নীচের কমান্ডটি চালাব

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

একবার আমরা নিশ্চিত করি যে ডেটা ডিরেক্টরি পরিবর্তন করা হয়েছে, আমরা ডিফল্ট ডেটা ডিরেক্টরিটি সরিয়ে ফেলব যা /var/lib/mysql_backup-এ, পুরানো ডাটাবেস ডিরেক্টরি অপসারণের জন্য নীচে নির্দেশ রয়েছে৷

$ sudo rm –rf /var/lib/mysql_backup

উপরের কনফিগারেশন এবং ধাপে, আমরা MySQL ডেটা ডিরেক্টরিকে নতুন অবস্থানে স্থানান্তর করতে শিখেছি যা আমাদেরকে সুরক্ষিত করতে বা একটি ভিন্ন অবস্থানে আরও ডেটা সংরক্ষণ করতে সাহায্য করবে৷


  1. উবুন্টুতে ডিফল্ট ওয়েব ব্রাউজার কীভাবে পরিবর্তন করবেন

  2. উবুন্টুতে স্ক্রিন রেজোলিউশন কীভাবে পরিবর্তন করবেন

  3. Windows 10 এ ডিফল্ট ইনস্টলেশন ডিরেক্টরি কিভাবে পরিবর্তন করবেন

  4. এক্সেলের অন্য অবস্থানে অনুলিপি করার জন্য কীভাবে উন্নত ফিল্টার প্রয়োগ করবেন