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