Jump to content
  • 0

Question

Posted (edited)

hello guys this is extreme useful for servers but got a problem not working please help to make it work

 

package com.l2jserver.gameserver.backupManager;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.l2jserver.Config;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.backupManager.runnable.BackUpManagerTask;

public final class DatabaseBackupManager
{
	private static final Logger _log = LoggerFactory.getLogger(DatabaseBackupManager.class);
	
	public DatabaseBackupManager()
	{
	}
	
	@SuppressWarnings("resource")
	public static void makeBackup()
	{
		_log.info("Initializing Database Backup Manager.");
		
		File f = new File(Config.DATABASE_BACKUP_SAVE_PATH);
		if ((!f.mkdirs()) && (!f.exists()))
		{
			_log.info("Could not create folder " + f.getAbsolutePath());
			return;
		}
		
		Process run = null;
		try
		{
			run = Runtime.getRuntime().exec(Config.DATABASE_BACKUP_MYSQLDUMP_PATH + "/mysqldump --user=" + Config.DATABASE_LOGIN + " --password=" + Config.DATABASE_PASSWORD + " --compact --complete-insert --default-character-set=utf8 --extended-insert --lock-tables --quick --skip-triggers "
				+ Config.DATABASE_BACKUP_DATABASE_NAME, null);
		}
		catch (Exception e)
		{
			_log.error(DatabaseBackupManager.class.getSimpleName() + ": Could not make backup: " + e.getMessage(), e);
			return;
		}
		
		try
		{
			SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");
			Date time = new Date();
			
			File bf = new File(f, sdf.format(time) + (Config.DATABASE_BACKUP_COMPRESSION ? ".zip" : ".sql"));
			if (!bf.createNewFile())
			{
				throw new IOException("Cannot create backup file: " + bf.getCanonicalPath());
			}
			InputStream input = run.getInputStream();
			OutputStream out = new FileOutputStream(bf);
			if (Config.DATABASE_BACKUP_COMPRESSION)
			{
				ZipOutputStream dflt = new ZipOutputStream(out);
				dflt.setMethod(8);
				dflt.setLevel(9);
				dflt.setComment("L2Server Schema Backup Utility\r\n\r\nBackup date: " + new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss:SSS z").format(time));
				dflt.putNextEntry(new ZipEntry(Config.DATABASE_BACKUP_DATABASE_NAME + ".sql"));
				out = dflt;
			}
			
			if (Config.ENABLE_DATABASE_BACKUP_MANAGER)
			{
				if (Config.DATABASE_BACKUP_SCHEDULER)
				{
					ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new BackUpManagerTask(), Config.DATABASE_BACKUP_START_DELAY * 1000 * 60, Config.DATABASE_BACKUP_DELAY_BETWEEN_BACK_UPS * 1000 * 60);
				}
				else if (Config.DATABASE_BACKUP_MAKE_BACKUP_ON_STARTUP)
				{
					DatabaseBackupManager.makeBackup();
				}
				_log.info("Backup Manager: Enabled.");
			}
			
			byte[] buf = new byte['က'];
			int written = 0;
			int read;
			while ((read = input.read(buf)) != -1)
			{
				out.write(buf, 0, read);
				written += read;
			}
			input.close();
			out.close();
			
			if (written == 0)
			{
				bf.delete();
				BufferedReader br = new BufferedReader(new InputStreamReader(run.getErrorStream()));
				String line;
				while ((line = br.readLine()) != null)
				{
					_log.info(DatabaseBackupManager.class.getSimpleName() + ": " + line);
				}
				br.close();
			}
			else
			{
				_log.info(DatabaseBackupManager.class.getSimpleName() + ": DB `" + Config.DATABASE_BACKUP_DATABASE_NAME + "` backed up in " + ((System.currentTimeMillis() - time.getTime()) / 1000L) + " s.");
			}
			
			run.waitFor();
		}
		catch (Exception e)
		{
			_log.error(DatabaseBackupManager.class.getSimpleName() + ": Could not make backup: " + e.getMessage(), e);
		}
	}
}
package com.l2jserver.gameserver.backupManager.runnable;

import com.l2jserver.gameserver.backupManager.DatabaseBackupManager;

public class BackUpManagerTask implements Runnable
{
	public BackUpManagerTask()
	{
	}
	
	@Override
	public void run()
	{

	}
}

 

Edited by GoldenNightmare

14 answers to this question

Recommended Posts

  • 0
Posted (edited)
String dbName = "jdbc:mysql://localhost/xdemSucks";
String dbUser = "root"; 
String dbPass = "12345";
String path="C:\test.sql";
	  
String  executeCmd = "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump -u " + dbUser + " -p" + dbPass + " --add-drop-database -B " + dbName + " -r " + path;
Runtime.getRuntime().exec(executeCmd);

 

Something like that maybe? idk.

Edited by Kara`
  • 0
Posted (edited)

https://pastebin.com/a1fbAb6p

 

I'm not using configs. Feel free to create them (for global variables)

 

p.s dont forget to run it 

Quote

AutoDatabaseBackUp.getInstance();

 

f8f10d22fa7a9e2d97a310fb6a0cc94b.png

 

b5c4532be49d9c8ac47a9257926d805e.png

 

ec73a74aaee7ab3ec637b06f182b72c7.png

Edited by melron
  • 0
Posted (edited)

thx for share but i got some warnings its ok to use suppress warnings?? and also on threadpool i got this error : Cannot make a static reference to the non-static method scheduleGeneralAtFixedRate(Runnable, long, long) from the type ThreadPoolManager

Edited by GoldenNightmare
  • 0
Posted
5 hours ago, tazerman2 said:

@melron how to run this like ingame ? or with cmd call ?

gameserver.java 

AutoDatabaseBackUp.getInstance();

 

 

5 hours ago, GoldenNightmare said:

thx for share but i got some warnings its ok to use suppress warnings?? and also on threadpool i got this error : Cannot make a static reference to the non-static method scheduleGeneralAtFixedRate(Runnable, long, long) from the type ThreadPoolManager

 

Paste some photos of your warnings,errors

  • 0
Posted

Add getInstance() in your line.

About the suggestions simply ignore them or edit it with try-with-resources style

  • 0
Posted

thx worked 

one last problem when i start it in console error

Path of mysql: C:\Program Files\MySQL\MySQL Server 5.6\C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump"
Save path of sql file: "C:\Users\tzort\Desktop\l2h\database_backup\backup.sql"
Command To Execute: cmd /c C:\Program Files\MySQL\MySQL Server 5.6\C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" la2_game_server --single-transaction -uroot -p457890 --skip-create-options --skip-comments --disable-keys > "C:\Users\tzort\Desktop\l2h\database_backup\backup.sql"
Here is the standard output of the command:

Here is the standard error of the command (if any):

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
Backup to SQL Failure

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hello everyone, This topic has been created to report any content that is considered illegal under applicable law or in violation of the forum rules. This includes, but is not limited to: Illegal software (pirated, cracked, or unauthorized software) Copyright-infringing material Malware, viruses, or any harmful code Scams, fraud, phishing attempts, or impersonation Illegal banking or financial services Money laundering activities or related instructions Any other illegal, unethical, or rule-violating activity — you name it If you encounter any such content, please report it here so it can be reviewed and removed promptly. Legal Disclaimer All content published on this forum is created and posted by its users. The forum administration does not take responsibility for user-generated content. However, we make every reasonable effort to monitor, review, remove, and maintain the forum by deleting illegal or rule-violating content as soon as it is reported or identified. By using this forum, you acknowledge and agree to these terms. Moderator Notice We would like to inform all users that we are currently developing a custom AI-powered API tool that will assist our moderation team in scanning the forum database for illegal or rule-violating activity. This system will be used strictly as a support tool to help identify potentially problematic content, which will then be reviewed by human moderators before any action is taken. The goal is to improve forum safety, compliance, and response time while maintaining fairness and transparency. 🚧 Coming soon — more details will be shared once the system is ready. Thank you for your cooperation and for helping us keep the forum clean and lawful.
    • Reporting Illegal or Rule-Violating Content (post here)
    • If anyone is reading this, until we find the 488 protocol system that works with AuthD + Authgated from High Five (HF), just use L2Filter included in the leak as the login server to be able to play. hAuthd does not works with this chronicle, @Hint. do you happen to know about this?   Be aware of the system you use! If UseEMailAccount is set as true in l2.ini, your user_info table linked to your account must have email column not NULL with a valid e-mail, and you will use that e-mail to login instead of the account name. (Post merged)   OKAY! Nevermind about the above, I just figured it out, AuthD and Authgated from HF requires GameGuard to be enabled and UseEMailAccount set to false. Enable GameGuard at server side as per Fyyre instructions,  Add the missing GameGuard files in your client system: https://mega.nz/file/xZMWQBjK#triEj7My9B9roiLqAKk32HOLcLmPynoOm-QhBI_Ligw
    • Πολυ δυνατος σερβερ παιδια. Συνεχιστε την καλη σας προσπαθεια και παμε γερα
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock