sql >> Databasteknik >  >> RDS >> Mysql

hur man konverterar en skrivskyddad viloläge till att skriva under en transaktion (Master/Slave DB)

Vi öppnar transaktioner i skrivskyddat läge och konverterar det sedan till skrivläge eftersom skrivskyddade anslutningar inte kommer att vara ett problem som det är med salve DB.

Vi åsidosätter HibernateTemplate klass och skapa metoder för att göra session i skrivläge

 public final void writeEnabled(){
    getSession().doWork(jdbcWorkWriteEnabled);
}

public final void writeDisabled(boolean flush){
    if(flush)
        flush();
    getSession().doWork(jdbcWorkWriteDisabled);
}

public static final void writeEnabled(Session session){
    session.doWork(jdbcWorkWriteEnabled);
}

public static final void writeDisabled(boolean flush,Session session){
    if(flush)
        session.flush();
    session.doWork(jdbcWorkWriteDisabled);
}

final static Work jdbcWorkWriteEnabled = new Work(){
    public void execute(Connection connection) throws SQLException {
        connection.setReadOnly(false);
    }
};

final static Work jdbcWorkWriteDisabled = new Work(){
    public void execute(Connection connection) throws SQLException {
        connection.setReadOnly(true);
    }
};

I applikationslogik före skrivning kontrollerar vi
Anslutningen är i skrivläge och skriv sedan helt enkelt.
om anslutningen är skrivskyddad, gör du den först i skrivläge, gör skrivoperation och återställ den till skrivskyddad igen




  1. oracle diff:hur jämför man två tabeller?

  2. Hur fixar man FEL:kolumnen c.relhasoids finns inte i Postgres?

  3. Hur man hittar och ersätter text i MySQL-databasen med SQL

  4. Hur man övervakar PostgreSQL som körs inuti en Docker-behållare:Del ett