sql >> Database >  >> RDS >> Mysql

MySQL beheren - voor Oracle DBA's

Open source-databases worden snel mainstream, dus migratie van propriëtaire engines naar open source-engines is nu een soort industrietrend. Het betekent ook dat wij DBA's vaak meerdere database-backends hebben om te beheren.

In de afgelopen blogposts hebben mijn collega Paul Namuag en ik verschillende aspecten van de migratie van Oracle naar Percona, MariaDB en MySQL behandeld. Het voor de hand liggende doel van de migratie is om uw applicatie efficiënter te laten werken in de nieuwe databaseomgeving, maar het is van cruciaal belang om ervoor te zorgen dat het personeel klaar is om het te ondersteunen.

Deze blog behandelt de basishandelingen van MySQL met verwijzing naar soortgelijke taken die u dagelijks zou uitvoeren in uw Oracle-omgeving. Het biedt u een diepe duik in verschillende onderwerpen om u tijd te besparen, omdat u zich kunt verhouden tot Oracle-kennis die u in de loop der jaren al heeft opgebouwd.

We zullen ook praten over externe opdrachtregelprogramma's die ontbreken in de standaard MySQL-installatie, maar die nodig zijn om dagelijkse bewerkingen efficiënt uit te voeren. De open source-versie wordt bijvoorbeeld niet geleverd met het equivalent van Oracle Cloud Control, dus check ClusterControl af als u op zoek bent naar iets soortgelijks.

In deze blog gaan we ervan uit dat je een betere kennis van Oracle hebt dan MySQL en daarom graag de correlatie tussen de twee zou willen weten. De voorbeelden zijn gebaseerd op het Linux-platform, maar u kunt veel overeenkomsten vinden in het beheren van MySQL op Windows.

Hoe maak ik verbinding met MySQL?

Laten we onze reis beginnen met een zeer (schijnbaar) basistaak. Eigenlijk is dit een soort taak die voor verwarring kan zorgen vanwege verschillende inlogconcepten in Oracle en MySQL.

Het equivalent van sqlplus / as sysdba-verbinding is de terminalopdracht "mysql" met een vlag -uroot. In de MySQL-wereld wordt de superuser root genoemd. MySQL-databasegebruikers (inclusief root) worden gedefinieerd door de naam en host van waaruit verbinding kan worden gemaakt.

De informatie over de gebruiker en hosts van waaruit verbinding kan worden gemaakt, wordt opgeslagen in de tabel mysql.user. Bij de verbindingspoging controleert MySQL of de clienthost, gebruikersnaam en wachtwoord overeenkomen met de rij in de metadatatabel.

Dit is een beetje een andere benadering dan in Oracle waar we alleen een gebruikersnaam en wachtwoord hebben, maar degenen die bekend zijn met Oracle Connection Manager kunnen enkele overeenkomsten vinden.

U zult geen voorgedefinieerde TNS-vermeldingen vinden zoals in Oracle. Gewoonlijk hebben we voor een beheerdersverbinding een gebruiker, wachtwoord en -h hostvlag nodig. De standaardpoort is 3306 (zoals 1521 in Oracle), maar dit kan per configuratie verschillen.

Standaard hebben veel installaties een roottoegangsverbinding vanaf elke machine ([email protected]'%') geblokkeerd, dus je moet inloggen op de server die MySQL host, meestal via ssh.

Typ het volgende:

mysql -u root

Als het root-wachtwoord niet is ingesteld, is dit voldoende. Als het wachtwoord vereist is, moet u de vlag -p toevoegen.

mysql -u root -p

U bent nu aangemeld bij de mysql-client (het equivalent van sqlplus) en u ziet een prompt, meestal 'mysql>'.

Is MySQL actief?

U kunt het opstartscript van de mysql-service of de opdracht mysqladmin gebruiken om erachter te komen of het actief is. Vervolgens kunt u de opdracht ps gebruiken om te zien of mysql-processen actief zijn. Een ander alternatief kan mysqladmin zijn, een hulpprogramma dat wordt gebruikt voor het uitvoeren van administratieve handelingen.

mysqladmin -u root -p status

Op Debian:

/etc/init.d/mysql status

Als je RedHat of Fedora gebruikt, kun je het volgende script gebruiken:

service mysqld status

Of

/etc/init.d/mysqld status

Of

systemctl status mysql.service

Op MariaDB-instanties moet u zoeken naar de naam van de MariaDB-service.

systemctl status mariadb

Wat zit er in deze database?

Net als in Oracle kunt u de metadata-objecten opvragen om informatie over database-objecten te krijgen.

Het is gebruikelijk om hier enkele snelkoppelingen te gebruiken, commando's die u helpen bij het weergeven van objecten of het verkrijgen van DDL van de objecten.

show databases;
use database_name;
show tables;
show table status;
show index from table_name;
show create table table_name;

Net als bij Oracle kun je de tabel beschrijven:

desc table_name;

Waar worden mijn gegevens opgeslagen?

Er is geen speciale interne opslag zoals ASM in MySQL. Alle gegevensbestanden worden in de reguliere OS-koppelpunten geplaatst. Met een standaardinstallatie kunt u uw gegevens vinden in:

/var/lib/mysql

De locatie is gebaseerd op de variabele datadir.

[email protected]:~# cat /etc/mysql/my.cnf | grep datadir
datadir=/var/lib/mysql

U ziet daar een map voor elke database.

Afhankelijk van de versie en de opslagengine (ja, er zijn er hier een paar), kan de directory van de database bestanden van het formaat *.frm bevatten, die de structuur van elke tabel in de database definiëren. Voor MyISAM-tabellen worden de gegevens (*.MYD) en indexen (*.MYI) ook in deze map opgeslagen.

InnoDB-tabellen worden opgeslagen in InnoDB-tabelruimten. Elk daarvan bestaat uit een of meer bestanden, die vergelijkbaar zijn met Oracle-tabelruimten. In een standaardinstallatie worden alle InnoDB-gegevens en indexen voor alle databases op een MySQL-server bewaard in één tabelruimte, bestaande uit één bestand:/var/lib/mysql/ibdata1. In de meeste opstellingen beheer je geen tablespaces zoals in Oracle. Het beste is om ze te houden met autoextend ingeschakeld en maximale grootte onbeperkt.

[email protected]:~# cat /etc/mysql/my.cnf | grep innodb-data-file-path
innodb-data-file-path = ibdata1:100M:autoextend

InnoDB heeft logbestanden, die het equivalent zijn van Oracle redo-logs, waardoor automatisch crashherstel mogelijk is. Standaard zijn er twee logbestanden:/var/lib/mysql/ib_logfile0 en /var/lib/mysql/ib_logfile1. Gegevens voor ongedaan maken worden bewaard in het tabelruimtebestand.

[email protected]:/var/lib/mysql# ls -rtla | grep logfile
-rw-rw----  1 mysql mysql  268435456 Dec 15 00:59 ib_logfile1
-rw-rw----  1 mysql mysql  268435456 Mar  6 11:45 ib_logfile0

Waar is de metadata-informatie?

Er zijn geen dba_*, user_*, all_* type weergaven, maar MySQL heeft interne metadataweergaven.

Information_schema is gedefinieerd in de SQL 2003-standaard en wordt geïmplementeerd door andere grote databases, b.v. SQL Server, PostgreSQL.

Sinds MySQL 5.0 is de database information_schema beschikbaar, die datadictionary-informatie bevat. De informatie werd feitelijk opgeslagen in de externe FRM-bestanden. Eindelijk, na vele jaren zijn .frm-bestanden verdwenen in versie 8.0. De metadata is nog steeds zichtbaar in de information_schema database maar gebruikt de InnoDB storage engine.

Om alle actuele weergaven in de datadictionary in de mysql-client te zien, schakelt u over naar de information_schema-database:

use information_schema;
show tables;

U kunt aanvullende informatie vinden in de MySQL-database, die informatie bevat over db, gebeurtenis (MySQL-taken), plug-ins, replicatie, database, gebruikers enz.

Het aantal weergaven is afhankelijk van de versie en leverancier.

Selecteer * uit v$session

Oracle's select * from v$session wordt hier weergegeven met het commando SHOW PROCESSLIST dat de lijst met threads toont.

mysql> SHOW PROCESSLIST;
+---------+------------------+------------------+--------------------+---------+--------+--------------------+------------------+-----------+---------------+
| Id      | User             | Host             | db                 | Command | Time   | State              | Info             | Rows_sent | Rows_examined |
+---------+------------------+------------------+--------------------+---------+--------+--------------------+------------------+-----------+---------------+
|       1 | system user      |                  | NULL               | Sleep   | 469264 | wsrep aborter idle | NULL             |         0 |             0 |
|       2 | system user      |                  | NULL               | Sleep   | 469264 | NULL               | NULL             |         0 |             0 |
|       3 | system user      |                  | NULL               | Sleep   | 469257 | NULL               | NULL             |         0 |             0 |
|       4 | system user      |                  | NULL               | Sleep   | 469257 | NULL               | NULL             |         0 |             0 |
|       6 | system user      |                  | NULL               | Sleep   | 469257 | NULL               | NULL             |         0 |             0 |
|      16 | maxscale         | 10.0.3.168:5914  | NULL               | Sleep   |      5 |                    | NULL             |         4 |             4 |
|      59 | proxysql-monitor | 10.0.3.168:6650  | NULL               | Sleep   |      7 |                    | NULL             |         0 |             0 |
|      81 | proxysql-monitor | 10.0.3.78:62896  | NULL               | Sleep   |      6 |                    | NULL             |         0 |             0 |
|    1564 | proxysql-monitor | 10.0.3.78:25064  | NULL               | Sleep   |      3 |                    | NULL             |         0 |             0 |
| 1822418 | cmon             | 10.0.3.168:41202 | information_schema | Sleep   |      0 |                    | NULL             |         0 |             8 |
| 1822631 | cmon             | 10.0.3.168:43254 | information_schema | Sleep   |      4 |                    | NULL             |         1 |             1 |
| 1822646 | cmon             | 10.0.3.168:43408 | information_schema | Sleep   |      0 |                    | NULL             |       464 |           464 |
| 2773260 | backupuser       | localhost        | mysql              | Query   |      0 | init               | SHOW PROCESSLIST |         0 |             0 |
+---------+------------------+------------------+--------------------+---------+--------+--------------------+------------------+-----------+---------------+


13 rows in set (0.00 sec)

Het is gebaseerd op informatie die is opgeslagen in de view information_schema.processlist. De weergave vereist het PROCESS-privilege. Het kan u ook helpen om te controleren of het maximale aantal processen opraakt.

Waar is een waarschuwingslogboek?

Het foutenlogboek is te vinden in my.cnf of via het commando show variables.

mysql> show variables like 'log_error';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| log_error     | /var/lib/mysql/error.log |
+---------------+--------------------------+
1 row in set (0.00 sec)

Waar is de lijst met gebruikers en hun machtigingen?

De informatie over gebruikers wordt opgeslagen in de mysql.user-tabel, terwijl de subsidies op verschillende plaatsen worden opgeslagen, waaronder de mysql.user, mysql.tables_priv,

MySQL-gebruikerstoegang wordt gedefinieerd in:

mysql.columns_priv, mysql.tables_priv, mysql.db,mysql.user

De beste manier om subsidies te vermelden is om pt-grants te gebruiken, de tool van Percona toolkit (een must-have voor elke MySQL DBA).

pt-show-grants --host localhost --user root --ask-pass

Als alternatief kunt u de volgende zoekopdracht gebruiken (gemaakt door Calvaldo)

SELECT
    CONCAT("`",gcl.Db,"`") AS 'Database(s) Affected',
    CONCAT("`",gcl.Table_name,"`") AS 'Table(s) Affected',
    gcl.User AS 'User-Account(s) Affected',
    IF(gcl.Host='%','ALL',gcl.Host) AS 'Remote-IP(s) Affected',
    CONCAT("GRANT ",UPPER(gcl.Column_priv)," (",GROUP_CONCAT(gcl.Column_name),") ",
                 "ON `",gcl.Db,"`.`",gcl.Table_name,"` ",
                 "TO '",gcl.User,"'@'",gcl.Host,"';") AS 'GRANT Statement (Reconstructed)'
FROM mysql.columns_priv gcl
GROUP BY CONCAT(gcl.Db,gcl.Table_name,gcl.User,gcl.Host)
/* SELECT * FROM mysql.columns_priv */

UNION

/* [Database.Table]-Specific Grants */
SELECT
    CONCAT("`",gtb.Db,"`") AS 'Database(s) Affected',
    CONCAT("`",gtb.Table_name,"`") AS 'Table(s) Affected',
    gtb.User AS 'User-Account(s) Affected',
    IF(gtb.Host='%','ALL',gtb.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        "GRANT ",UPPER(gtb.Table_priv)," ",
        "ON `",gtb.Db,"`.`",gtb.Table_name,"` ",
        "TO '",gtb.User,"'@'",gtb.Host,"';"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.tables_priv gtb
WHERE gtb.Table_priv!=''
/* SELECT * FROM mysql.tables_priv */

UNION

/* Database-Specific Grants */
SELECT
    CONCAT("`",gdb.Db,"`") AS 'Database(s) Affected',
    "ALL" AS 'Table(s) Affected',
    gdb.User AS 'User-Account(s) Affected',
    IF(gdb.Host='%','ALL',gdb.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        'GRANT ',
        CONCAT_WS(',',
            IF(gdb.Select_priv='Y','SELECT',NULL),
            IF(gdb.Insert_priv='Y','INSERT',NULL),
            IF(gdb.Update_priv='Y','UPDATE',NULL),
            IF(gdb.Delete_priv='Y','DELETE',NULL),
            IF(gdb.Create_priv='Y','CREATE',NULL),
            IF(gdb.Drop_priv='Y','DROP',NULL),
            IF(gdb.Grant_priv='Y','GRANT',NULL),
            IF(gdb.References_priv='Y','REFERENCES',NULL),
            IF(gdb.Index_priv='Y','INDEX',NULL),
            IF(gdb.Alter_priv='Y','ALTER',NULL),
            IF(gdb.Create_tmp_table_priv='Y','CREATE TEMPORARY TABLES',NULL),
            IF(gdb.Lock_tables_priv='Y','LOCK TABLES',NULL),
            IF(gdb.Create_view_priv='Y','CREATE VIEW',NULL),
            IF(gdb.Show_view_priv='Y','SHOW VIEW',NULL),
            IF(gdb.Create_routine_priv='Y','CREATE ROUTINE',NULL),
            IF(gdb.Alter_routine_priv='Y','ALTER ROUTINE',NULL),
            IF(gdb.Execute_priv='Y','EXECUTE',NULL),
            IF(gdb.Event_priv='Y','EVENT',NULL),
            IF(gdb.Trigger_priv='Y','TRIGGER',NULL)
        ),
        " ON `",gdb.Db,"`.* TO '",gdb.User,"'@'",gdb.Host,"';"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.db gdb
WHERE gdb.Db != ''
/* SELECT * FROM mysql.db */

UNION

/* User-Specific Grants */
SELECT
    "ALL" AS 'Database(s) Affected',
    "ALL" AS 'Table(s) Affected',
    gus.User AS 'User-Account(s) Affected',
    IF(gus.Host='%','ALL',gus.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        "GRANT ",
        IF((gus.Select_priv='N')&(gus.Insert_priv='N')&(gus.Update_priv='N')&(gus.Delete_priv='N')&(gus.Create_priv='N')&(gus.Drop_priv='N')&(gus.Reload_priv='N')&(gus.Shutdown_priv='N')&(gus.Process_priv='N')&(gus.File_priv='N')&(gus.References_priv='N')&(gus.Index_priv='N')&(gus.Alter_priv='N')&(gus.Show_db_priv='N')&(gus.Super_priv='N')&(gus.Create_tmp_table_priv='N')&(gus.Lock_tables_priv='N')&(gus.Execute_priv='N')&(gus.Repl_slave_priv='N')&(gus.Repl_client_priv='N')&(gus.Create_view_priv='N')&(gus.Show_view_priv='N')&(gus.Create_routine_priv='N')&(gus.Alter_routine_priv='N')&(gus.Create_user_priv='N')&(gus.Event_priv='N')&(gus.Trigger_priv='N')&(gus.Create_tablespace_priv='N')&(gus.Grant_priv='N'),
            "USAGE",
            IF((gus.Select_priv='Y')&(gus.Insert_priv='Y')&(gus.Update_priv='Y')&(gus.Delete_priv='Y')&(gus.Create_priv='Y')&(gus.Drop_priv='Y')&(gus.Reload_priv='Y')&(gus.Shutdown_priv='Y')&(gus.Process_priv='Y')&(gus.File_priv='Y')&(gus.References_priv='Y')&(gus.Index_priv='Y')&(gus.Alter_priv='Y')&(gus.Show_db_priv='Y')&(gus.Super_priv='Y')&(gus.Create_tmp_table_priv='Y')&(gus.Lock_tables_priv='Y')&(gus.Execute_priv='Y')&(gus.Repl_slave_priv='Y')&(gus.Repl_client_priv='Y')&(gus.Create_view_priv='Y')&(gus.Show_view_priv='Y')&(gus.Create_routine_priv='Y')&(gus.Alter_routine_priv='Y')&(gus.Create_user_priv='Y')&(gus.Event_priv='Y')&(gus.Trigger_priv='Y')&(gus.Create_tablespace_priv='Y')&(gus.Grant_priv='Y'),
                "ALL PRIVILEGES",
                CONCAT_WS(',',
                    IF(gus.Select_priv='Y','SELECT',NULL),
                    IF(gus.Insert_priv='Y','INSERT',NULL),
                    IF(gus.Update_priv='Y','UPDATE',NULL),
                    IF(gus.Delete_priv='Y','DELETE',NULL),
                    IF(gus.Create_priv='Y','CREATE',NULL),
                    IF(gus.Drop_priv='Y','DROP',NULL),
                    IF(gus.Reload_priv='Y','RELOAD',NULL),
                    IF(gus.Shutdown_priv='Y','SHUTDOWN',NULL),
                    IF(gus.Process_priv='Y','PROCESS',NULL),
                    IF(gus.File_priv='Y','FILE',NULL),
                    IF(gus.References_priv='Y','REFERENCES',NULL),
                    IF(gus.Index_priv='Y','INDEX',NULL),
                    IF(gus.Alter_priv='Y','ALTER',NULL),
                    IF(gus.Show_db_priv='Y','SHOW DATABASES',NULL),
                    IF(gus.Super_priv='Y','SUPER',NULL),
                    IF(gus.Create_tmp_table_priv='Y','CREATE TEMPORARY TABLES',NULL),
                    IF(gus.Lock_tables_priv='Y','LOCK TABLES',NULL),
                    IF(gus.Execute_priv='Y','EXECUTE',NULL),
                    IF(gus.Repl_slave_priv='Y','REPLICATION SLAVE',NULL),
                    IF(gus.Repl_client_priv='Y','REPLICATION CLIENT',NULL),
                    IF(gus.Create_view_priv='Y','CREATE VIEW',NULL),
                    IF(gus.Show_view_priv='Y','SHOW VIEW',NULL),
                    IF(gus.Create_routine_priv='Y','CREATE ROUTINE',NULL),
                    IF(gus.Alter_routine_priv='Y','ALTER ROUTINE',NULL),
                    IF(gus.Create_user_priv='Y','CREATE USER',NULL),
                    IF(gus.Event_priv='Y','EVENT',NULL),
                    IF(gus.Trigger_priv='Y','TRIGGER',NULL),
                    IF(gus.Create_tablespace_priv='Y','CREATE TABLESPACE',NULL)
                )
            )
        ),
        " ON *.* TO '",gus.User,"'@'",gus.Host,"' REQUIRE ",
        CASE gus.ssl_type
            WHEN 'ANY' THEN
                "SSL "
            WHEN 'X509' THEN
                "X509 "
            WHEN 'SPECIFIED' THEN
                CONCAT_WS("AND ",
                    IF((LENGTH(gus.ssl_cipher)>0),CONCAT("CIPHER '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL),
                    IF((LENGTH(gus.x509_issuer)>0),CONCAT("ISSUER '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL),
                    IF((LENGTH(gus.x509_subject)>0),CONCAT("SUBJECT '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL)
                )
            ELSE "NONE "
        END,
        "WITH ",
        IF(gus.Grant_priv='Y',"GRANT OPTION ",""),
        "MAX_QUERIES_PER_HOUR ",gus.max_questions," ",
        "MAX_CONNECTIONS_PER_HOUR ",gus.max_connections," ",
        "MAX_UPDATES_PER_HOUR ",gus.max_updates," ",
        "MAX_USER_CONNECTIONS ",gus.max_user_connections,
        ";"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.user gus;

Hoe maak je een mysql-gebruiker aan

De procedure 'gebruiker maken' is vergelijkbaar met Oracle. Het eenvoudigste voorbeeld zou kunnen zijn:

CREATE user 'username'@'hostname' identified by 'password';
GRANT privilege_name on *.* TO 'username'@'hostname';

De optie om in één regel toe te kennen en te creëren met:

GRANT privilege_name  ON *.* TO 'username'@'hostname' identified by 'password';

is verwijderd in MySQL 8.0.

Hoe start en stop ik MySQL?

U kunt MySQL stoppen en starten met de service.

Het daadwerkelijke commando hangt af van de Linux-distributie en de servicenaam.

Hieronder vindt u een voorbeeld met de servicenaam mysqld.

Ubuntu

/etc/init.d/mysqld start 
/etc/init.d/mysqld stop 
/etc/init.d/mysqld restart

RedHat/Centos

service mysqld start 
service mysqld stop 
service mysqld restart
systemctl start mysqld.service
systemctl stop mysqld.service
systemctl restart mysqld.service

Waar zijn de MySQL Server-configuratiegegevens?

De configuratie wordt opgeslagen in het bestand my.cnf.

Tot versie 8.0 was voor elke wijziging van de dynamische instelling die zou blijven bestaan ​​na een herstart een handmatige update van het my.cnf-bestand nodig. Net als bij scope=both van Oracle, kunt u waarden wijzigen met behulp van de permanente optie.

mysql> SET PERSIST max_connections = 1000;
mysql> SET @@PERSIST.max_connections = 1000;

Gebruik voor oudere versies:

mysql> SET GLOBAL max_connections = 1000;
$ vi /etc/mysql/my.cnf
SET GLOBAL max_connections = 1000;

Hoe maak ik een back-up van MySQL?

Er zijn twee manieren om een ​​mysql-back-up uit te voeren.

Voor kleinere databases of kleinere selectieve back-ups kunt u de opdracht mysqldump gebruiken.

Databaseback-up met mysqldump (logische back-up):

mysqldump -uuser -p --databases db_name --routines --events --single-transaction | gzip > db_name_backup.sql.gz

xtrabackup, mariabackup (hot binaire back-up)

De voorkeursmethode is om xtrabackup of mariabackup te gebruiken, externe tools om hot binaire back-ups uit te voeren.

Oracle biedt hot binaire back-up in de betaalde versie genaamd MySQL Enterprise Edition.

mariabackup --user=root --password=PASSWORD --backup --target-dir=/u01/backups/

Back-up streamen naar andere server

Start een listener op de externe server op de voorkeurspoort (in dit voorbeeld 1984)

nc -l 1984 | pigz -cd - | pv | xbstream -x -C /u01/backups

Back-up uitvoeren en overbrengen naar externe host

innobackupex --user=root --password=PASSWORD --stream=xbstream /var/tmp | pigz  | pv | nc external_host.com 1984

Gebruikerstoestemming kopiëren

Het is vaak nodig om gebruikersrechten te kopiëren en naar de andere servers over te brengen.

De aanbevolen manier om dit te doen is om pt-show-grants te gebruiken.

pt-show-grants > /u01/backups

Hoe herstel ik MySQL?

Logisch back-upherstel

MySQLdump maakt het SQL-bestand aan, dat kan worden uitgevoerd met het source-commando.

Gebruik het tee-commando om het logbestand van de uitvoering te bewaren.

mysql> tee dump.log
mysql> source mysqldump.sql

Binaire back-up terugzetten (xtrabackup/mariabackup)

Om MySQL te herstellen vanaf de binaire back-up, moet u eerst de bestanden herstellen en vervolgens de logbestanden toepassen.

U kunt dit proces vergelijken om te herstellen en te herstellen in Oracle.

xtrabackup --copy-back --target-dir=/var/lib/data
innobackupex --apply-log --use-memory=[values in MB or GB] /var/lib/data

Hopelijk geven deze tips een goed overzicht van het uitvoeren van elementaire administratieve taken.


  1. Recursieve CTE schrijven met behulp van Entity Framework Fluent-syntaxis of Inline-syntaxis

  2. Hoe werkt MySQL CASE?

  3. *ALERT* Windows-update breekt pure Access-applicaties - fix beschikbaar

  4. Hoe kan ik twee MySQL-tabellen samenvoegen?