[MySQL] Phân biệt sự khác nhau giữa tiến trình “mysqld” và “mysqld_safe” trên MySQL

Tìm hiểu sự khác biệt giữa 2 tiến trình "mysqld" và "mysqld_safe" trên dịch vụ MySQL

1. “mysqld” , là gì ?

mysqld, hay còn gọi là MySQL Server, là chương trình chính xử lý tất cả các hoạt động của dịch vụ MySQL Database và chạy nền theo cơ chế dịch vụ (daemon). Khi mà dịch vụ MySQL Server được khởi động, nó sẽ lắng nghe các kết nối từ client và quản lý các truy cập đến các cơ sở dữ liệu và các tables nằm tại thư mục dữ liệu MySQL mặc định khi cài đặt.

mysqld cũng có các biến cấu hình được load từ các biến truyền thẳng vào chương trình khi thực thi như ví dụ dưới :

# /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/cuongquach.com.err --open-files-limit=5000 --pid-file=/var/lib/mysql/cuongquach.com.pid --socket=/var/lib/mysql/mysql.sock --port=3306

 
Hoặc chương trình sẽ đi đọc các cấu hình đúng trong file như /etc/my.cnf , để có thể chuyển đổi các cấu hình đó thành các biến thông tin cung cấp cho chương trình hoạt động thực thi như phía trên.

 

2. “mysqld_safe” , là gì ?

Thực chất ấy thì mysqld_safe chỉ là 1 file shell script được sử dụng cho mục đích khởi động dịch vụ MySQL Server (mysqld) lên mà thôi. Nhưng mà script này được MySQL khuyến cáo sử dụng và gần như là mặc định trong cách khởi động dịch vụ MySQL nên nếu bạn show các tiến trình bằng lệnh “ps” ra bạn sẽ thấy cả 2 tiến trình “mysqld_safe” và “mysqld“.

root 23475 0.0 0.0 63876 964 ? S 2015 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/cuongquach.com.pid

mysql 23636 8.1 28.6 4298824 3517148 ? Sl 2015 28784:59 \_ /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/cuongquach.com.err --open-files-limit=5000 --pid-file=/var/lib/mysql/cuongquach.com.pid --socket=/var/lib/mysql/mysql.sock --port=3306

 
Script này hoạt động trên các hệ thống UnixUnix-like, và các file init khởi động dịch vụ như ở CentOS/RHEL : /etc/init.d/mysqld sẽ đi gọi cái script này lên.

Có 1 số điều hay ho và khác biệt về “mysqld_safe” như sau :
– “mysqld_safe” sẽ luôn cố gắng khởi động chương trình tên là “mysqld” khi được triệu gọi script và trước đó thì nó sẽ xác định các option cấu hình đúng cái đã.
– Có thêm chức năng giám sát hệ thống CSDL và phát hiện vấn đề khi dịch vụ hoạt DB bị crash.
– “mysqld_safe” thực hiện 1 cơ chế vòng lặp nhằm khởi động lại hệ thống CSDL MySQL khi một sự cố bị phát hiện, đồng thời cũng ghi log về sự cố ra cùng file error log quy định.

mysqld_safe có thực hiện việc tìm kiếm và đọc các giá trị cấu hình trong file /etc/my.cnf chẳng hạn, nó đọc hết các block [mysqld], [server][mysqld_safe]. Và mysqld_safe sẽ thực hiện theo các giá trị cấu hình trong block [mysqld] nếu không tồn tại cấu hình dành cho block [mysqld_safe]. Bạn có thể tham khảo các option cấu hình ở link : https://dev.mysql.com/doc/refman/5.6/en/mysqld-safe.html

 
Ok, nhìn chung tóm gọn thì sự khác biệt cơ bản là nhiêu đó đó.

Previous article[MySQL] Fix lỗi “mysqldump: Error: Can’t create/write to file /tmp/..”‏ trên dịch vụ MySQL
Next article[MacOS] Hướng dẫn liệt kê thông tin các thiết bị kết nối USB vô MacOS bằng command-line
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !