expire_logs_days
პარამეტრი MySQL სერვერის კონფიგურაციაში საშუალებას გაძლევთ ავტომატურად წაშალოთ ბინარული ლოგ ფაილები, რომლებიც გარკვეული პერიოდის შემდეგ აღარ გამოიყენება. ამისათვის საჭიროა ეს პარამეტრი დაამატოთ MySQL-ის კონფიგურაციის ფაილში.
როგორ დავამატოთ expire_logs_days
ავტომატიზაციისთვის:
- გახსენით MySQL-ის კონფიგურაციის ფაილი: MySQL-ის მთავარი კონფიგურაციის ფაილი ჩვეულებრივ მდებარეობს შემდეგ ლოკაციებზე:
- Ubuntu/Debian:
/etc/mysql/my.cnf
- Ubuntu/Debian:
- ან
-
/etc/mysql/mysql.conf.d/mysqld.cnf
CentOS/RHEL:/etc/my.cnf
nano
-თი:bash კოდის კოპირებაsudo nano /etc/mysql/my.cnf
ან bash კოდის კოპირებაsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
-
- მონახეთ
[mysqld]
სექცია ან დაამატეთ იგი: ფაილში მოძებნეთ[mysqld]
სექცია. თუ არ არსებობს, დაამატეთ იგი ფაილის დასაწყისში ან სხვა პარამეტრების ზემოთ. კოდის კოპირება[mysqld]
- დაამატეთ
expire_logs_days
პარამეტრი: დაამატეთ შემდეგი სტრიქონი[mysqld]
სექციის ქვეშ: კოდის კოპირებაexpire_logs_days = 7
ეს პარამეტრი დაადგენს, რომ ყველა ბინარული ლოჯ ფაილი, რომელიც 7 დღეზე მეტია შექმნილი, ავტომატურად წაიშლება. - შეინახეთ ფაილი და დახურეთ რედაქტორი:
nano
რედაქტორში ფაილის შესანახად და რედაქტორიდან გამოსასვლელად დააჭირეთCtrl + X
, შემდეგ დააჭირეთY
და Enter. - გადატვირთეთ MySQL სერვისი: პარამეტრების ცვლილებების ამოქმედებისთვის საჭიროა MySQL სერვერის გადატვირთვა: bash კოდის კოპირება:
sudo systemctl restart mysql
ან თუ იყენებთservice
: bash კოდის კოპირება:sudo service mysql restart
შემოწმება
ცვლილებების წარმატებით ამოქმედების შემდეგ, შეგიძლიათ შეამოწმოთ, რომ expire_logs_days
პარამეტრი სწორად არის კონფიგურირებული:
- შედით MySQL-ში: bash კოდის კოპირება
mysql -u root -p
- შეამოწმეთ პარამეტრი: sql კოდის კოპირება
SHOW VARIABLES LIKE 'expire_logs_days';
თუ ყველაფერი სწორად არის კონფიგურირებული, სისტემა ავტომატურად წაშლის ბინარულ ლოჯ ფაილებს, რომლებიც 7 დღეზე მეტია შექმნილი.
ბოლოს კი გადამოწმეთ სერვერზე ფაილების მეხსიერება რამდენი გაქვთ ეხლა: df -h (კოდით)
MySQL/MariaDB-ში ყველა ბინარული ლოგის ერთდროულად წაშლისთვის, შეგიძლიათ გამოიყენოთ PURGE BINARY LOGS ბრძანება, რომელიც საშუალებას გაძლევთ წაშალოთ ლოგები ბოლო მოქმედი ლოგის ჩათვლით.
აი, როგორ უნდა წაშალოთ ყველა ბინარული ლოგი:
- MySQL-ში შესვლა:ჯერ საჭიროა MySQL/MariaDB-ში შესვლა:bashკოდის კოპირება
mysql -u root -p
- ყველა ბინარული ლოგის წაშლა:MySQL-ის შიგნით ჩაწერეთ შემდეგი ბრძანება, რომელიც წაშლის ყველა ბინარულ ლოგს, რაც კი არსებობს:sqlკოდის კოპირება
PURGE BINARY LOGS TO 'mysql-bin.000001';
ეს ბრძანება წაშლის ყველა ბინარულ ლოგს, გარდაmysql-bin.000001
ლოგის. თუ გსურთ ყველა ლოგის წაშლა, მაშინ გამოიყენეთ:sqlკოდის კოპირებაRESET MASTER;
ეს ბრძანება წაშლის ყველა ბინარულ ლოგს და “განაახლებს” ლოგების გენერირებას.
ალტერნატიული MySQL-ის კოდი:
sql კოდის კოპირებაPURGE BINARY LOGS BEFORE NOW();
ეს ბრძანება გაასუფთავებს MySQL-ის ბინარულ ლოჯებს (binary logs), რომლებიც შეიძლება დიდ ადგილს იკავებდნენ.
გაფრთხილება: ყველა ბინარული ლოგის წაშლისას, დარწმუნდით, რომ არ დაგჭირდებათ მათი აღდგენა. თუ მონაცემთა ბაზის რეპლიკაციას იყენებთ, რეპლიკაციისთვის საჭირო ბინარული ლოგები წაიშლება, რაც შეიძლება გამოიწვიოს პრობლემები.
- MySQL-ის გასვლა: bash კოდის კოპირება
exit
ამის შემდეგ MySQL-დან ყველა ბინარული ლოგი წაიშლება.
სერვერზე დისკის სივრცის შემოწმება
MySQL-ის კონფიგურაციის ან ბინარული ლოგების წაშლის შემდეგ, შეგიძლიათ გადაამოწმოთ სერვერზე არსებული დისკის სივრცე:
bashკოდის კოპირებაdf -h
ამ ბრძანებით მიიღებთ ინფორმაციას ფაილური სისტემის გამოყენების სტატუსზე, რაც დაგეხმარებათ დისკის სივრცის მონიტორინგში.