আমার ডিফল্ট মাইএসকিউএল ডেটা ডিরেক্টরিকে অন্য পথে পরিবর্তন করা কি সম্ভব? আমি কি পুরানো অবস্থান থেকে ডাটাবেসগুলি অ্যাক্সেস করতে সক্ষম হব?
আমার ডিফল্ট মাইএসকিউএল ডেটা ডিরেক্টরিকে অন্য পথে পরিবর্তন করা কি সম্ভব? আমি কি পুরানো অবস্থান থেকে ডাটাবেসগুলি অ্যাক্সেস করতে সক্ষম হব?
উত্তর:
নিম্নলিখিত কমান্ডটি ব্যবহার করে মাইএসকিউএল বন্ধ করুন:
sudo /etc/init.d/mysql stop
/var/lib/mysql
নিম্নলিখিত কমান্ডটি ব্যবহার করে বিদ্যমান ডেটা ডিরেক্টরি (ডিফল্ট অবস্থিত ) অনুলিপি করুন :
sudo cp -R -p /var/lib/mysql /newpath
নিম্নলিখিত কমান্ডের সাথে মাইএসকিউএল কনফিগারেশন ফাইলটি সম্পাদনা করুন:
sudo gedit /etc/mysql/my.cnf # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
প্রবেশের জন্য সন্ধান করুন datadir
এবং /var/lib/mysql
নতুন ডেটা ডিরেক্টরিতে পথটি (যা হওয়া উচিত ) পরিবর্তন করুন ।
টার্মিনালে, কমান্ডটি প্রবেশ করুন:
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
শুরু লাইন জন্য সন্ধান করুন /var/lib/mysql
। /var/lib/mysql
নতুন পথের সাথে লাইনে পরিবর্তন করুন ।
সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।
কমান্ড দিয়ে অ্যাপআর্মার প্রোফাইলগুলি পুনরায় চালু করুন:
sudo /etc/init.d/apparmor reload
কমান্ডটি দিয়ে মাইএসকিউএল পুনরায় চালু করুন:
sudo /etc/init.d/mysql restart
এখন মাইএসকিউএল এ লগইন করুন এবং আপনি আগের মতো একই ডাটাবেসগুলি অ্যাক্সেস করতে পারেন।
alias /var/lib/mysql/ -> /newpath/,
দ্রুত এবং করা সহজ:
# Create new directory for MySQL data
mkdir /new/dir/for/mysql
# Set ownership of new directory to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql
# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql
# Stop MySQL before copying over files
service mysql stop
# Copy all files in default directory, to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/
/etc/my.cnf
ফাইলটি সম্পাদনা করুন এবং [mysqld]
এই লাইনটি যুক্ত করুন:
datadir=/new/dir/for/mysql/
আপনি যদি কেজএফএস ব্যবহার করছেন (ক্লাউডলিনাক্স সহ বা তার বাইরে) এবং মাইএসকিউএল ডিরেক্টরিটি পরিবর্তন করতে চান তবে আপনাকে এই ফাইলটিতে নতুন ডিরেক্টরি যুক্ত করতে হবে:
/etc/cagefs/cagefs.mp
এবং তারপরে এই কমান্ডটি চালান:
cagefsctl --remount-all
আপনাকে বর্তমান তথ্যটি নতুন ডিরেক্টরিতে অনুলিপি করতে হবে এবং my.cnf
আপনার মাইএসকিউএল পরিবর্তন করতে হবে ।
[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/
সার্ভার চলমান না থাকলে আপনাকে ডাটাবেস অনুলিপি করতে হবে ।
ln -s
স্ট্যাটিক সিম্বলিক লিঙ্ক ব্যবহার করেন তবে তা কি তা তৈরি হবে না?
my.cnf
প্রথমে আপনার মাইএসকিএল সার্ভারটি বন্ধ করা উচিত। যেমন
# /etc/init.d/mysql stop
এর পরে আপনার পুরানো ডেটা ডিরেক্টরি কপি করা উচিত (যেমন / var / lib / mysql) Incl। এর মাধ্যমে আপনার নতুন ডিরেক্টরিতে সুবিধা
# cp -R -p /var/lib/mysql /new/data/dir
এখন আপনি /etc/mysql/my.cnf
নতুন তথ্য পরিবর্তন করতে পারেন এবং সার্ভার পুনরায় আরম্ভ করতে পারেন
# /etc/init.d/mysql restart
যদি আমার মতো আপনি ডেবিয়ান হন এবং আপনি মাইএসকিএল দির আপনার বাড়িতে বা / হোম / ... এর দিকে যেতে চান, সমাধানটি হ'ল:
একদিন মারিয়াডবি ডকুমেন্টেশনে আমার জন্য সমাধানটি সন্ধান করুন। আশা করি এটি কিছু লোককে সহায়তা করবে!
আমি আমার মেশিনে একটি ডাটাবেস রাখতে চেয়েছিলাম, তবে আমার বাহ্যিক হার্ড ড্রাইভেও একটি ডেটা রয়েছে এবং দুটি ব্যবহারের মধ্যে স্যুইচ করতে চাই।
আপনি যদি কোনও ম্যাক এ থাকেন এবং হোমব্রিউ ব্যবহার করে মাইএসকিউএল ইনস্টল করেছেন তবে এটি আপনার পক্ষে কাজ করা উচিত। অন্যথায়, আপনার কেবলমাত্র datadir
আপনার মেশিনে মাইএসকিউএল-এর জন্য উপযুক্ত স্থানগুলি প্রয়োগ করতে হবে।
#cd to my data dir location
cd /usr/local/var/
#copy contents of local data directory to the new location
cp -r mysql/ /Volumes/myhd/mydatadir/
#temporarily move the old datadir
mv mysql mysql.local
#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql
তারপরে আপনি কখন ফিরে যেতে চান তা কেবল করুন:
mv mysql mysql.remote
mv mysql.local mysql
এবং আপনি আবার আপনার স্থানীয় ডাটাবেস ব্যবহার করছেন। আশা করি এইটি কাজ করবে.
প্রথমে বন্ধ করুন mysqld
mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
তারপরে আপনার /etc/mysql/my.cnf
স্টার্ট মাইএসকিএলডে ডেটাডির পরিবর্তন করুন
দ্রষ্টব্য:
# 1: সম্ভবত আপনাকে নিজের সেলিনাক্স সেটিংস সামঞ্জস্য করতে হবে (ঝামেলার ক্ষেত্রে অক্ষম সেলইনাক্স দিয়ে চেষ্টা করে দেখুন), অ্যাপারমার (উবুন্টু) সমস্যাও হতে পারে।
প্রথমে আপনার মাইএসকিএল বন্ধ করুন
sudo service mysql stop
নতুন জায়গায় মাইএসকিএল ডেটা অনুলিপি করুন।
sudo cp -rp /var/lib/mysql /yourdirectory/
যদি আপনি অ্যাপারমার ব্যবহার করেন তবে নীচের ফাইলটি সম্পাদনা করুন এবং নিম্নলিখিতটি করুন
sudo vim /etc/apparmor.d/usr.sbin.mysqld
যেখানে / var / lib / by / yourdirectory / প্রতিস্থাপন করুন / তারপরে ফাইলটিতে উপস্থিত না থাকলে follwoing যুক্ত করুন
/yourdirectory/mysql/ r,
/yourdirectory/mysql/** rwk,
কমান্ড দিয়ে ফাইলটি সংরক্ষণ করুন
:wq
My.cnf ফাইলটি সম্পাদনা করুন
sudo vim /etc/mysql/my.cnf
/ Var / lib / by / yourdirectory / এর পরিবর্তে কমান্ডের সাহায্যে সংরক্ষণ করুন
:wq
অবশেষে মাইএসকিএল শুরু করুন
sudo service mysql start
raid0 সম্পর্কে আরো @see, অপ্টিমাইজেশান ICI
এই সমাধানটি ওয়ার্কবেঞ্চ ব্যবহার করে উইন্ডোজ 7 এ কাজ করে। এটি করার জন্য আপনার প্রশাসকের অধিকারের প্রয়োজন হবে। আপনি যেখানেই আপনার ডেটা সংরক্ষণ করতে চান সেখানে এটি একটি সংযোগ তৈরি করে (একটি শর্টকাটের মতো)
ওয়ার্কবেঞ্চ খুলুন এবং ইনস্ট্যান্স নির্বাচন করুন - স্টার্টআপ / শাটডাউন সার্ভারটি বন্ধ করুন
Https://bitum.com/junctionmaster.php থেকে জংশন মাস্টার ইনস্টল করুন
সি তে নেভিগেট করুন: \ প্রোগ্রামডাটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6
ডেটাতে রাইট ক্লিক করুন এবং "মুভ করুন এবং তারপরে LINK ফোল্ডারটি ..." নির্বাচন করুন "" उद्धিত এবং আপনার নতুন ডেটা ডিরেক্টরি এখানে "উদ্ধৃতি এবং লিঙ্কে ক্লিক করুন" তে সতর্কতা পয়েন্ট গন্তব্যটি গ্রহণ করুন
এখন "আপনার নতুন তথ্য ডিরেক্টরি এখানে কোট ছাড়াই" যান
সুরক্ষা ট্যাবে ডান ক্লিক করুন সম্পাদনা ক্লিক করুন প্রকারের নেটওয়ার্ক পরিষেবা যুক্ত করুন ক্লিক করুন তারপরে নামগুলি চেক করুন ঠিক আছে ক্লিক করুন পূর্ণ নিয়ন্ত্রণের অনুমতি দিন চেকবক্স এবং তারপরে ঠিক আছে ক্লিক করুন
ওয়ার্কবেঞ্চে ফিরে যান এবং সার্ভারটি শুরু করুন
এই পদ্ধতিটি উইন্ডোজ 7 এন্টারপ্রাইজে মাইএসকিউএল ওয়ার্কবেঞ্চ 6.2 ব্যবহার করে আমার পক্ষে কাজ করেছিল।
@ ব্যবহারকারী 1341296 হিসাবে সমস্ত কিছু বলেছে, আরও ...
আপনি পরিবর্তন না করাই ভাল আপনি /etc/mysql/my.cnf
পরিবর্তে নতুন ফাইল তৈরি করতে চান /etc/mysql/conf.d/ext.cnf
(কোনও নাম, তবে এক্সটেনশন হওয়া উচিত cnf
)
এবং এটি আপনার পরিবর্তন লিখুন:
[mysqld]
datadir=/vagrant/mq/mysql
এভাবে
আপনি যদি উইন্ডোজ ব্যবহারকারী হন এবং লিনাক্স ব্যবহারকারীদের জন্য সমস্ত উত্তর রয়েছে তা জানতে এখানে অবতরণ করেছেন, হতাশ হবেন না! আমি তোমার মতো সময়কে নষ্ট করতে দেব না।
সমাধানের আগে কিছুটা বুলশিট কথা:
মাইএসকিউএল আপনার তৈরি করা বিভিন্ন ডাটাবেসের ডেটা সঞ্চয় করতে একটি ডেটা ডিরেক্টরি ব্যবহার করে। ঠিক আছে, শেষ পর্যন্ত, এটি অ্যাপ্লিকেশনটিতে কিছু যুক্ত কৌতুক সহ ফাইলগুলির আকারে সেগুলি সংরক্ষণ করতে হবে এবং ডাটাবেস ক্লাসে আপনি যে ডেটাবেস ক্লাসে শিখেছিলেন সেগুলি নিশ্চিত করার জন্য ফাইল ফর্ম্যাটটি সংরক্ষণ করতে হবে।
এখন আপনি নিশ্চিত করতে চান যে ভবিষ্যতে আপনি তৈরি করতে পারেন এমন বড় ডেটাবেস সংরক্ষণের জন্য পর্যাপ্ত জায়গা রয়েছে এবং তাই আপনি ভেবেছিলেন, আরে! আমি এটিকে অন্য ড্রাইভে রাখতে চাই যা আরও বেশি জায়গা পেয়েছে।
সুতরাং আপনি নিম্নলিখিত করতে।
পদক্ষেপ - 1 : মাইএসকিউএল পরিষেবা বন্ধ করা হচ্ছে।
Window Key + R - will open Run
servies.msc - will open services manager
Locate MySQL80 (80 is for version 8.0, look for the one you've).
Stop it. (Right click, Stop)
পদক্ষেপ - 2 : বর্তমান তথ্য ডিরেক্টরিটি সন্ধান করা
Goto C:\ProgramData\MySQL\MySQL Server 8.0
ডিফল্টরূপে, এখানে নামের একটি ফোল্ডার থাকা উচিত Data
, এটি মাইএসকিউএল দ্বারা ডিফল্ট সেটিংসে ব্যবহৃত হয় (তবে তারা অন্য কোনও ভাল অবস্থান না পেয়ে থাকে) তবে এটি পরীক্ষা করা যাক।
my.ini
ফাইল সন্ধান করুন, ঠিক সেখানে থাকা উচিত।
এডিটরটিতে এটি খুলুন (নোটপ্যাড ++ সম্ভবত)।
datadir
ফাইলটিতে সন্ধানের জন্য একটি সিটিআরএল + এফ করুন।
এখানে যা উল্লেখ করা হয়েছে তা হ'ল মাইএসকিউএল বর্তমানে তথ্য ডিরেক্টরিতে ব্যবহারের জন্য আসল অবস্থান location এই আপনি পরিবর্তন করতে চান।
পদক্ষেপ - 3 : এটি একটি নতুন ডেটা ডিরেক্টরিতে প্রতিস্থাপন করা হচ্ছে।
ধরা যাক আপনি চান আপনার নতুন ডেটা ডিরেক্টরিটি ডাব্লু: __ মাইএসকিউএল_ডাটা হয়। আসুন পরিবর্তন
datadir
মান my.ini
এই মানে ফাইল। পূর্ববর্তী মানটি মন্তব্য করুন যাতে আপনার এটি মনে রাখতে না হয়।
# Path to the database root
# datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
datadir=W:/__MySQL_Data
Now ব্যবহার xcopy
ডিফল্ট কপি করতে datadir
করতে W:\
। কমান্ড প্রম্পট চালু করুন (উইন্ডো + আর, সেন্টিমিটার, প্রবেশ করুন)
>> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0" "W:\" /E /H /K /O /X
এবং অনুলিপি করা ফোল্ডারটির নতুন নাম পরিবর্তন করুন datadir
যা আপনি পরিবর্তন করেছেন। এখানে:W:/__MySQL_Data
কেন কেবল অনুলিপি করবেন না? ঠিক আছে কারণ এটি MySQL80
কओল নয়! এটি আপনাকে অনুলিপি করা ফোল্ডারে অনুমতিগুলি হারাতে সহায়তা করে, যাতে আপনি যখন পুনরায় চালু করবেন তখন এটি একটি মূর্খ ত্রুটি দেবে না: "লোকাল কম্পিউটারে মাইএসকিউএল 80 পরিষেবাটি শুরু হয়েছিল এবং তারপরে বন্ধ হয়ে গেছে। কিছু পরিষেবা স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় যদি তারা অন্যান্য পরিষেবা বা প্রোগ্রাম দ্বারা ব্যবহৃত হয় না। " - সৌজন্যে: মাইক্রোসফ্ট
পদক্ষেপ - 4 : পরিষেবাটি পুনরায় চালু করা
Well, go back to the Services Manager to Start again,
"MySQL80" that you stopped, to restart it again.
পদক্ষেপ - 5 : সম্পন্ন! এখন কাজে ফিরে এসো !!
বাক্স থেকে বাক্সে সরানো, মেশিনগুলি আপগ্রেড করার সময় আমার প্রায়শই এটি করা প্রয়োজন। আরও ভাল অবস্থানে / var / lib / mysql স্থানান্তরিত করার পাশাপাশি, আমার প্রায়শই পুরানো মাইএসকিউএল ইনস্টলেশন থেকে পুরানো ডিবি টেবিলগুলি পুনরুদ্ধার করা প্রয়োজন। এই কাজ করার জন্য...
আমাদের মাইএসকিউএলটিকে /home
ডিরেক্টরিতে স্থানান্তরিত করতে হয়েছিল কারণ এটি অন্য শারীরিক ডিস্ক থেকে ম্যাপ করা হয়েছিল। লাইভ সহজ করার জন্য, my.cnf ডিরেক্টরি পরিবর্তন না করে আমরা /home/mysql
মূল ডিরেক্টরিটির জায়গায় নতুন ডিরেক্টরিটি ম্যাপ করেছি /var/lib/mysql
। এটি আমাদের জন্য একটি কবজির মতো কাজ করে (সেন্টস 7.১ এ পরীক্ষিত)।
নতুন দির তৈরি করুন এবং সঠিক অনুমতি সেট করুন।
mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql
চলমান থাকলে মাইএসকিউএল বন্ধ করুন।
systemctl stop mysql
তথ্য সরাতে স্যার।
mv -f /var/lib/mysql/* /home/mysql
স্থায়ী মাউন্ট তৈরি করুন এবং এটি সম্পাদন করুন।
echo "/home/mysql /var/lib/mysql none bind 0 0" >> /etc/fstab
mount -a
সার্ভারটি পুনরায় চালু করুন।
systemctl start mysql
আপনি যদি এই প্রোগ্রামটিমেটিকভাবে করতে চান (gedit সহ কোনও ম্যানুয়াল পাঠ্য এন্ট্রি নেই) উপরে ব্যবহারকারী 1341296 এর উত্তরের উপর ভিত্তি করে ডকফেরাইলের একটি সংস্করণ এখানে রয়েছে:
FROM spittet/ruby-mysql
MAINTAINER you@gmail.com
RUN cp -R -p /var/lib/mysql /dev/shm && \
rm -rf /var/lib/mysql && \
sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \
/etc/init.d/mysql restart
ডকার হাবে এখানে উপলভ্য: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
প্রথমে আপনার জানা উচিত আপনার কনফিগারেশন ফাইলটি কোথায়? আপনার কনফিগারেশন ফাইলটি কোথায়?
আপনি যদি অ্যাপটি-গেট বা ইয়ম ইনস্টল করে ইনস্টল করেন。
কনফিগারেশন ফাইল উপস্থিত হতে পারে
/etc/mysql/my.cnf
তথ্য ফাইল উপস্থিত হতে পারে
/ Var / lib / MySQL
এবং আপনার যা করা উচিত তা হ'ল
এবং তারপরে কাজ শেষ।
তবে যদি আপনি এটি অ্যাপটি বা ইয়ম দিয়ে ইনস্টল না করে থাকেন তবে ডাইরেক্টরিটি এটি পছন্দ করতে পারে না এবং আপনি এর সাথে মাইএসকিএল ফাইলগুলি সন্ধান করতে পারেন
মাইএসকিএল
সুএসই ১৩.১ এর অধীনে, এটি মাইএসকিএল ডেটা ডিরেক্টরিকে অন্য কোথাও স্থানান্তর করতে, যেমন: / home / উদাহরণ_user / এবং আরও তথ্যপূর্ণ নাম দেওয়ার জন্য কাজ করে:
ইন / ভার / লিব /:
# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql
আমি মাইএসকিএল পুনরায় চালু করেছি:
# systemctl restart mysql.service
তবে সন্দেহ করুন যে এটিও প্রয়োজনীয় ছিল না।
পরিবেশের একটির জন্য আমি মাইএসকিএল ডেটা ডিরেক্টরিটি নতুন জায়গায় পরিবর্তন করেছি তবে মাইএসকিএল সার্ভার পুনরায় চালু করার সময় এটি সময় নিচ্ছিল। সুতরাং আমি বন্দরটি পরীক্ষা করে দেখলাম যে অন্য প্রক্রিয়াটি মাইএসকিএল বন্দরে শুনছিল। তাই আমি প্রক্রিয়াটি মেরে ফেলেছি এবং মাইএসকিএল সার্ভারটি পুনরায় শুরু করেছি এবং এটি ভালভাবে কাজ করেছে।
আমি ডেটা ডিরেক্টরি পরিবর্তন করার জন্য নীচের পদক্ষেপগুলি অনুসরণ করেছি যা দুর্দান্ত কাজ করেছে। লিনাক্সে mysql ডেটা ডিরেক্টরি পরিবর্তন করুন
উপরের পদক্ষেপগুলি ভিত্তি এবং মৌলিক। আমি তাদের অনুসরণ করেছিলাম এবং এখনও "মাইএসকিএল শুরু করতে ব্যর্থ হয়েছে" এর ত্রুটি পেয়েছি।
নতুন ফোল্ডারটি মাইএসকিএল ডেটা সঞ্চয় করার জন্য আপনাকে ফোল্ডারে অনুমতি এবং মালিকানা মাইএসকিএল: মাইএসকিএল রয়েছে তা নিশ্চিত করতে হবে।
এর পাশেই, মাইএসকিএল-র মূল ডিরেক্টরিটির অনুমতি এবং মালিকানা পরীক্ষা করতে হবে, যদি বলুন, / ডেটা / মাইএসকিএল / থাকে। এখানে / ডেটা / ডিরেক্টরিটি মূল: মূল হতে হবে। আমি / মাইএসকিএল এর পিতামাতার ডিরেক্টরিতে মালিকানা পরিবর্তন করার পরে "মাইএসকিএল শুরু করতে ব্যর্থ হয়েছে" এর ত্রুটিটি ঠিক করেছি। আমার ভিএম এর ওএসটি হ'ল RHEL 7.6।
এটি ডেটাডিরকে সিমলিংক করাও সম্ভব। কমপক্ষে ম্যাকোস, দেব পরিবেশে।
(homebrew) যেমন
# make sure you're not overwriting anything important, backup existing data
mv /usr/local/var/mysql [your preferred data directory]
ln -s [your preferred data directory] /usr/local/var/mysql
মাইএসকিএল পুনরায় চালু করুন।
আপনি যদি এসই লিনাক্স ব্যবহার করে থাকেন তবে এটিকে / ইত্যাদি / সেলিনাক্স / কনফিগারেশন সম্পাদনা করে এবং SELINUX = প্রযোজ্যভাবে সেলিনাক্স = অনুমতিযুক্ত করে অনুমতি মোডে সেট করুন
datadir