Open context.xml file from $TOMCAT_HOME/conf/context.xml to get a Username and Password of that database.
<Resource name="jdbc/openspecimen" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="<password>" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/<database name>" validationInterval="3600" testOnBorrow="true" validationQuery="Select 1 from dual" /> |
Take the backup of the database using db_export_script.sh script. (Fill the appropriate values in the script for DB name, user, root password, hostname etc..)
Use command scp <backup_file_path>/<filename> <username>@<destination_host>:<destination_directory>/
scp filename.SQL.gz username2@destination_host:directory2/ |
Use command scp <backup_data_dir_path>/<folder_name> <username>@<destination_host>:<destination_directory>/
scp openspecimen/app/openspecimen/data_bkp.zip username2@destination_host:directory2/ |
Shutdown the OpenSpecimen tomcat service.
./catalina.sh stop |
Drop the existing database.
Confirm the database before dropping. |
DROP DATABASE database_name; |
First, uncompress the file using the below command.
gunzip <file_name>.sql.gz |
SHOW GRANTS FOR current_user(); |
Create the Database of the same name (Use dropped database name).
CREATE DATABASE database_name; |
Import the dump file into the database using the following command.
mysql -u <new_user> -p <database_name> < <file_name>.SQL; |
Start the stopped tomcat.
./catalina.sh start |
Reason: While taking database backup from the server1 all OpenSpecimen related configuration setting comes with the database dump. so the data directory path of server 1 also comes with the database dump file. so when we take this dump to another server say server 2 and import that dump file to MySQL. (Remember data directory path is same as Server 1. which is not valid).& when we Start the server we get above error because server 2 don't have permission to create the directory which is an actually wrong path.
Solution: Update the path of data directory in the database and restart the server.
Connect to the MySQL. get into the database.
Step 1: Get the Identifier value for the property data_dir.
select * from os_cfg_props where name = 'data_dir'; |
Step 2: Get all values for the data_dir property from the os_cfg_settings table.
select * from os_cfg_settings where property_id = <Identifier value of Step 1> |
Step 3: Delete the older data_dir property.
delete from os_cfg_settings where property_id = <Identifier value of Step 1> and value is not null and length(value) > 0; |
Step 4: Update the Activity status to Active.
update os_cfg_settings set activity_Status = 'Active' where identifier = <Identifieer value of Step 2>; |
Reason: The reason for this error is also the same as previous Error 1, i.e the value for the label print directory comes from the server 1 from where we took the database dump. so we need to edit path of the label print output directory with the server 2 path.
Connect to the MySQL. get into the database.
Run the following query.
select RULE_DEF from os_print_rules where ACTIVITY_STATUS = 'Active'; |
you will find a JSON formatted data. now just see the value of this attribute "cmdFilesDir". The value for this attribute might be matching with the path specified in the error. this path is from server 1 we need to change this path with the server2 path.
so just update or replace the path of the print-labels directory of server2. (print-labels directory is present in the data directory of OpenSpecimen.)
eg : /home/user/openspecimen/app/openspecimen/data/print-lebels.