4.5. 수동으로 언더클라우드 노드 데이터베이스 복원
언더클라우드 복원 프로세스의 일부로 언더클라우드 데이터베이스를 복원하지 않으면 데이터베이스를 수동으로 복원할 수 있습니다. 이전에 독립 실행형 데이터베이스 백업을 생성한 경우에만 데이터베이스를 복원할 수 있습니다.
사전 요구 사항
- 언더클라우드 데이터베이스 백업을 생성했습니다. 언더클라우드 데이터베이스 백업에 대한 자세한 내용은 1.5절. “언더클라우드 노드 백업 생성” 을 참조하십시오.
절차
-
director 언더클라우드 노드에
root사용자로 로그인합니다. 모든 tripleo 서비스를 중지합니다.
[root@director ~]# systemctl stop tripleo_*다음 명령을 입력하여 서버에서 실행 중인 컨테이너가 없는지 확인합니다.
[root@director ~]# podman ps컨테이너가 실행 중인 경우 다음 명령을 입력하여 컨테이너를 중지합니다.
[root@director ~]# podman stop <container_name>현재
/var/lib/mysql디렉터리의 백업을 생성한 다음 디렉터리를 삭제합니다.[root@director ~]# cp -a /var/lib/mysql /var/lib/mysql_bck [root@director ~]# rm -rf /var/lib/mysql데이터베이스 디렉터리를 다시 생성하고 새 디렉터리의 SELinux 속성을 설정합니다.
[root@director ~]# mkdir /var/lib/mysql [root@director ~]# chown 42434:42434 /var/lib/mysql [root@director ~]# chmod 0755 /var/lib/mysql [root@director ~]# chcon -t container_file_t /var/lib/mysql [root@director ~]# chcon -r object_r /var/lib/mysql [root@director ~]# chcon -u system_u /var/lib/mysqlmariadb이미지의 로컬 태그를 생성합니다.<image_id>및<undercloud.ctlplane.example.com>을 사용자 환경에 적용할 수 있는 값으로 바꿉니다.[root@director ~]# podman images | grep mariadb <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB[root@director ~]# podman tag <image_id> mariadb[root@director ~]# podman images | grep maria localhost/mariadb latest <image_id> 3 weeks ago 718 MB <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB/var/lib/mysql디렉터리를 컨테이너로 초기화합니다.[root@director ~]# podman run --net=host -v /var/lib/mysql:/var/lib/mysql localhost/mariadb mysql_install_db --datadir=/var/lib/mysql --user=mysql데이터베이스로 가져올 데이터베이스 백업 파일을 복사합니다.
[root@director ~]# cp /root/undercloud-all-databases.sql /var/lib/mysql데이터베이스 서비스를 시작하여 데이터를 가져옵니다.
[root@director ~]# podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql localhost/mariadb /usr/libexec/mysqld데이터를 가져오고
max_allowed_packet매개변수를 구성합니다.컨테이너에 로그인하여 구성합니다.
[root@director ~]# podman exec -it <container_id> /bin/bash ()[mysql@5a4e429c6f40 /]$ mysql -u root -e "set global max_allowed_packet = 1073741824;" ()[mysql@5a4e429c6f40 /]$ mysql -u root < /var/lib/mysql/undercloud-all-databases.sql ()[mysql@5a4e429c6f40 /]$ mysql -u root -e 'flush privileges' ()[mysql@5a4e429c6f40 /]$ exit exit컨테이너를 중지합니다.
[root@director ~]# podman stop <container_id>실행 중인 컨테이너가 없는지 확인합니다.
[root@director ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@director ~]#
모든 tripleo 서비스를 다시 시작하십시오.
[root@director ~]# systemctl start multi-user.target