1. 설치중 문제점 발견
MariaDB 최근버전으로 성능테스트를 하려고 virtualbox에서 10.4.13 버전을 받아 DB를 설치하고 start까지는 성공하였다.
[mysql@localhost bin]$ service mysqld start
Starting MariaDB.201021 16:14:13 mysqld_safe Logging to '/svc/mariadb_logs/error/mysql.err'.
201021 16:14:13 mysqld_safe Starting mysqld daemon with databases from /svc/mariadb_data
[ OK ]
별로 달라진 건 없네..라고 생각하고 stop을 해보았는데 .. 어떤 로그도 없이 그냥 안된다. ???
[mysql@localhost bin]$ service mysqld stop
//멍때리고 아무것도 안됨;; mysql.error 로그도 없음
ps -ef로 프로세스를 확인해보니 아래와 같다.
mysql 30913 1 0 11:12 pts/0 00:00:00 /bin/sh /svc/mariadb/bin/mysqld_safe --datadir=/svc/mariadb_data --pid
mysql 31151 30913 0 11:12 pts/0 00:00:00 /svc/mariadb/bin/mysqld --basedir=/svc/mariadb --datadir=/svc/mariadb_
mysql 31220 1957 0 11:12 pts/0 00:00:00 /bin/sh /sbin/service mysqld stop
mysql 31227 31220 0 11:12 pts/0 00:00:00 /bin/sh /etc/init.d/mysqld stop
root 31393 31227 0 11:12 pts/0 00:00:00 su - mysql -s /bin/sh -c kill -0 31151 // 음..su권한으로 하는데 mysql계정권한으로 실행해서 안되는 거였다.
이렇게 되면 스크립트를 까봐야하는데 수정범위가 크면 버그잡는게 더 시간이 많이 뺏길거 같아서..
가장최근 버전인 10.4.15 을 가져다 설치했지만, 동일한 현상이 발생했다.
그럼 정책적으로 shutdown은 su권한에서만 가능하도록 스크립트를 업데이트했다는건지?
보안강화? 근데 대부분 이중화하고..mysql계정으로 접속해서 처리하는데..
그냥 시간이 좀 걸리더라도 mysql 계정으로 shutdown이 가능하도록 수정하기로 했다.
2. 스크립트 수정
vi로 mysql.server 스크립트에서 stop 부분확인
su_kill() {
if test "$USER" = "$user"; then
kill $* >/dev/null 2>&1
else
su - $user -s /bin/sh -c "kill $*" >/dev/null 2>&1
fi
}
'stop')
# Stop daemon. We use a signal here to avoid having to know the
# root password.
if test -s "$mysqld_pid_file_path"
then
mysqld_pid=`cat "$mysqld_pid_file_path"`
if su_kill -0 $mysqld_pid ; then
echo $echo_n "Shutting down MariaDB"
su_kill $mysqld_pid
# mysqld should remove the pid file when it exits, so wait for it.
wait_for_gone $mysqld_pid "$mysqld_pid_file_path"; return_value=$?
else
log_failure_msg "MariaDB server process #$mysqld_pid is not running!"
rm "$mysqld_pid_file_path"
fi
# Delete lock for RedHat / SuSE
if test -f "$lock_file_path"
then
rm -f "$lock_file_path"
fi
exit $return_value
else
log_failure_msg "MariaDB server PID file could not be found!"
fi
;;
10.3.x버전과 비교해보니 10.4.x버전에는 su_kill() 라는 함수가 추가되어있는데
if test "$USER" = "$user"; then 부분에서 $user는 mysql로 박혀있고 $USER는
basedir 에서 가져오도록 되어야 하는데 제대로 값을 못가지고 온다.
이 부분에 문제가 있어서 su_kill()이 else로 빠져서 su 권한으로만 실행되도록 해서 불편함이 있다.
수정될 때까지 su_kill()을 사용하는 부분 다 찾아서 주석처리하고 kill로 바꾼다.
수정파일
3. 테스트
[mysql@localhost bin]$ service mysqld stop
Shutting down MariaDB.. [ OK ]
잘된다. 끝~
'RDB > mariadb' 카테고리의 다른 글
MariaDB 파티션 생성, 삭제, 추가 (0) | 2020.11.04 |
---|---|
xtrabackup과 Mariabackup 차이점 (0) | 2020.10.30 |
[튜닝] MariaDB where 조건절에 OR 연산인데 빠르게 가능할까? (0) | 2020.10.17 |
xtrabackup 백업 & 압축관련 검토(pigz) (0) | 2020.04.17 |
xtrabackup 장애사례 (0) | 2019.11.26 |