Với những VPS có RAM ít và bạn không rõ về config MySQL dẫn tới hiện tượng thi thoảng website quá tải và bị lỗi không thể kết nối tới database. Bài viết này sẽ hướng dẫn bạn cách khắc phục lỗi chết MySQL và tạo crontab tự động khởi động lại dịch vụ MySQL trên VPS/Server khi website bị hiển thị lỗi tương tự như dưới:
Error establishing a database connection
This either means that the username and password information in yourwp-config.php
file is incorrect or we can’t contact the database server atlocalhost
. This could mean your host’s database server is down.
- Are you sure you have the correct username and password?
- Are you sure that you have typed the correct hostname?
- Are you sure that the database server is running?
If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.
1. Lệnh bật lại dịch vụ MySQL
Trên VPS Centos
Centos 6 (MariaDB cũng dùng chung lệnh) :
1
|
service mysql start
|
Hoặc:
1
|
/etc/init.d/mysql start
|
Centos 7:
MySQL:
1
|
systemctl start mysql.service
|
MariaDB:
1
|
systemctl start mariadb.service
|
Trên VPS Ubuntu
1
|
/etc/init.d/mysql start
|
Hoặc
1
|
/etc/init.d/mysqld start
|
Tùy trường hợp cụ thể trên server của bạn là mysql hay mysqld mà bạn chọn lệnh.
2. Tạo Crontab tự động khởi động (bật ) lại MySQL
Khi service MySQL bị stop trên VPS do quá tải hoặc thiếu RAM, ta sẽ dùng lệnh trên để bật lại. Ngoài ra, bạn có thể tạo một crontab tự động check MySQL nếu dịch vụ này đang bị stop thì tự động bật lại.
Trước tiên cần tạo một file đặt tên là auto-start-mysql chẳng hạn, ta đặt file này trong folder root hoặc folder tùy ý bạn chọn. Sau đó chmod file này bằng lệnh:
1
|
chmod +x /root/auto-start-mysql
|
Để thêm vào VPS crontab tự động chạy auto-start-mysql 5 phút 1 lần ta dùng lệnh:
1
|
(crontab -u root -l ; echo "*/5 * * * * /root/auto-start-mysql") | crontab -u root -
|
Nội dung của file auto-start-mysql như sau:
Trên VPS Centos
Centos 6:
1
2
3
4
5
|
if [ ! "$(/sbin/service mysql status | awk 'NR==1 {print $3}')" == "running" ]; then
service mysql start
/etc/init.d/mysql restart
exit
fi
|
Centos 7:
MySQL:
1
2
3
4
|
if [ ! "$(systemctl status mysql.service | awk 'NR==3 {print $2}')" == "active" ]; then
/bin/systemctl start mysql.service
exit
fi
|
MariaDB:
1
2
3
4
|
if [ ! "$(/bin/systemctl status mariadb.service | awk 'NR==3 {print $2}')" == "active" ]; then
systemctl start mariadb.service
exit
fi
|
Trên VPS Ubuntu
MySQL:
1
2
3
4
|
if [ ! "$(service mysql status | awk 'NR==1 {print $2}')" == "start/running," ]; then
/etc/init.d/mysql start
exit
fi
|
MariaDB:
1
2
3
4
|
if [ "$(service mysql status | awk 'NR==1 {print $4}')" == "stopped." ]; then
/etc/init.d/mysql start
exit
fi
|
0 comments:
Post a Comment