基础数据:
源数据机ip:192.*.53
测试机ip:192.*.65
Sonarqube访问地址:http://192.*.65:9000/
账户名:admin 密码:123456
数据库postgres: 版本:PostgreSQL 15.3
一、数据备份
1、查询Sonarqube运行状态
systemctl status sonarqube
2、若为运行状态则关闭
systemctl stop sonarqube
3、执行备份数据库命令
mkdir /home/data
pg_dump -h 127.0.0.1 -p 5432 -U sonarqube -d sonarqube -Fc -f /home/data/sonarqube.dump
4、备份相关配置文件
cp -R /usr/local/sonarqube/conf /home/data/sonarqube_conf
cp -R /usr/local/sonarqube/data /home/data/sonarqube_data
cp -R /usr/local/sonarqube/extensions/plugins /home/data/sonarqube_plugins
5、执行压缩命令
cd /home/data
tar -czvf /home/data.tar.gz *
6、准备迁移至新服务器
将/home/data.tar.gz文件下载下来
二、数据恢复
1、将数据data.tar.gz上传至目录/home下
2、在恢复数据之前,确保SonarQube服务没有运行,并且确保PostgreSQL服务是正在运行的
sudo systemctl stop sonarqube
sudo systemctl status postgresql-15.service
3、如果服务未运行,启动它
sudo systemctl enable postgresql-15.service
4、解压缩目标文件
mkdir /home/data
tar -xzvf /home/data.tar.gz -C /home/data
5、清除新服务数据
进入数据库
psql -h 127.0.0.1 -p 5432 -U sonarqube -d sonarqube
后执行以下命令:
DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public; \q
6、执行恢复数据库命令
pg_restore -h 127.0.0.1 -p 5432 -U sonarqube -d sonarqube /home/data/sonarqube.dmp
命令详解:
pg_restore: 这是PostgreSQL提供的一个命令行工具,用于从由pg_dump产生的归档文件中恢复数据库。它可以恢复整个数据库集群、单个数据库或者数据库中的选定对象。 -h 127.0.0.1: 指定数据库服务器的主机地址。在这个例子中,127.0.0.1代表本地环回地址,意味着数据库服务运行在同一台机器上。 -p 5432: 指定PostgreSQL数据库监听的端口号。默认情况下,PostgreSQL服务在端口5432上监听。 -U sonarqube: 指定连接数据库时使用的用户名。这里使用的是sonarqube用户来连接数据库。 -d sonarqube: 指定要恢复到的数据库名称。这个例子中,数据库名称也是sonarqube,意味着你会在这个已存在的数据库上恢复数据。如果数据库不存在且pg_restore配置允许创建数据库,它可能会尝试创建同名数据库后再恢复数据。 /home/data/sonarqube.dmp: 这是备份文件的路径。pg_restore会读取这个文件,从中恢复数据到指定的数据库。文件扩展名.dmp虽然不常见于PostgreSQL的自定义格式备份(通常为.dump或未指定),但只要该文件确实是使用pg_dump -Fc创建的自定义格式备份,pg_restore就能正确处理。
7、服务相关配置恢复
sudo cp -R /home/data/sonarqube_conf/* /usr/local/sonarqube/conf/
sudo rm -r /usr/local/sonarqube/data/*
sudo cp -R /home/data/sonarqube_data/* /usr/local/sonarqube/data/
sudo rm -r /usr/local/sonarqube/extensions/plugins/*
sudo cp -R /home/data/sonarqube_plugins/* /usr/local/sonarqube/extensions/plugins/
8、修改文件权限
chown -R sonarqube:sonarqube /usr/local/sonarqube/data
chmod -R 750 /usr/local/sonarqube/data
9、删除es7异常停止锁文件
sudo rm -f /usr/local/sonarqube/data/es7/nodes/0/node.lock
10、重启Sonarqube服务
sudo systemctl start sonarqube
11、查看Sonarqube服务运行状态
systemctl status sonarqube
三、问题并解决
问题1:
执行命令 pg_dump -U sonarqube -d sonarqube -Fc -f /home/data/sonarqube.dmp
报错
错误信息:pg_dump: 错误: 连接到套接字"/var/run/postgresql/.s.PGSQL.5432"上的服务器失败:FATAL: Peer authentication failed for user "postgres"
解决方法:更换命令为:
pg_dump -h 127.0.0.1 -p 5432 -U sonarqube -d sonarqube -Fc -f /home/data/sonarqube.dump
问题2:
在操作恢复数据最后一步启动Sonarqube服务时,Elasticsearch在尝试启动时遇到了文件访问权限问题
sonar启动报错日志:
sonar启动报错es日志:
解决方法:
1、修改文件权限
chown -R sonarqube:sonarqube /usr/local/sonarqube/data
chmod -R 750 /usr/local/sonarqube/data
2、删除es7异常停止锁文件
sudo rm -f /usr/local/sonarqube/data/es7/nodes/0/node.lock