Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mengelola MySQL - untuk Oracle DBA

Basis data sumber terbuka dengan cepat menjadi arus utama, jadi migrasi dari mesin berpemilik ke mesin sumber terbuka adalah semacam tren industri sekarang. Ini juga berarti bahwa kami DBA sering kali memiliki banyak backend database untuk dikelola.

Dalam beberapa posting blog terakhir, kolega saya Paul Namuag dan saya membahas beberapa aspek migrasi dari Oracle ke Percona, MariaDB, dan MySQL. Tujuan yang jelas dari migrasi adalah untuk membuat aplikasi Anda aktif dan berjalan lebih efisien di lingkungan database baru, namun penting untuk memastikan bahwa staf siap mendukungnya.

Blog ini membahas operasi dasar MySQL dengan mengacu pada tugas serupa yang akan Anda lakukan setiap hari di lingkungan Oracle Anda. Ini memberi Anda pemahaman mendalam tentang berbagai topik untuk menghemat waktu karena Anda dapat menghubungkan pengetahuan Oracle yang telah Anda bangun selama bertahun-tahun.

Kami juga akan berbicara tentang alat baris perintah eksternal yang hilang dalam instalasi MySQL default tetapi diperlukan untuk melakukan operasi sehari-hari secara efisien. Versi open source tidak datang dengan setara dengan Oracle Cloud Control misalnya, jadi lakukan checkout ClusterControl jika Anda mencari sesuatu yang serupa.

Di blog ini, kami berasumsi Anda memiliki pengetahuan yang lebih baik tentang Oracle daripada MySQL dan karenanya ingin mengetahui korelasi antara keduanya. Contohnya didasarkan pada platform Linux namun Anda dapat menemukan banyak kesamaan dalam mengelola MySQL di Windows.

Bagaimana saya Terhubung ke MySQL?

Mari kita mulai perjalanan kita dengan tugas yang (tampaknya) sangat mendasar. Sebenarnya, ini adalah jenis tugas yang dapat menyebabkan kebingungan karena konsep login yang berbeda di Oracle dan MySQL.

Setara dengan koneksi sqlplus / as sysdba adalah perintah terminal "mysql" dengan flag -uroot. Di dunia MySQL, superuser disebut root. Pengguna database MySQL (termasuk root) ditentukan oleh nama dan host dari mana ia dapat terhubung.

Informasi tentang pengguna dan host dari mana ia dapat terhubung disimpan dalam tabel mysql.user. Dengan upaya koneksi, MySQL memeriksa apakah host klien, nama pengguna, dan kata sandi cocok dengan baris dalam tabel metadata.

Ini sedikit berbeda dari pendekatan di Oracle di mana kami hanya memiliki nama pengguna dan kata sandi, tetapi mereka yang akrab dengan Oracle Connection Manager mungkin menemukan beberapa kesamaan.

Anda tidak akan menemukan entri TNS yang telah ditentukan sebelumnya seperti di Oracle. Biasanya, untuk koneksi admin, kita membutuhkan user, password dan -h host flag. Port default adalah 3306 (seperti 1521 di Oracle) tetapi ini dapat bervariasi pada pengaturan yang berbeda.

Secara default, banyak instalasi akan memiliki koneksi akses root dari mesin mana pun ([email protected]'%') diblokir, jadi Anda harus masuk ke server yang menghosting MySQL, biasanya melalui ssh.

Ketik yang berikut ini:

mysql -u root

Ketika kata sandi root tidak disetel, ini sudah cukup. Jika kata sandi diperlukan maka Anda harus menambahkan tanda -p.

mysql -u root -p

Anda sekarang masuk ke klien mysql (setara dengan sqlplus) dan akan melihat prompt, biasanya 'mysql>'.

Apakah MySQL aktif dan Berjalan?

Anda dapat menggunakan skrip startup layanan mysql atau perintah mysqladmin untuk mengetahui apakah itu sedang berjalan. Kemudian Anda dapat menggunakan perintah ps untuk melihat apakah proses mysql aktif dan berjalan. Alternatif lain adalah mysqladmin, yang merupakan utilitas yang digunakan untuk melakukan operasi administratif.

mysqladmin -u root -p status

Di Debian:

/etc/init.d/mysql status

Jika Anda menggunakan RedHat atau Fedora maka Anda dapat menggunakan skrip berikut:

service mysqld status

Atau

/etc/init.d/mysqld status

Atau

systemctl status mysql.service

Pada instans MariaDB, Anda harus mencari nama layanan MariaDB.

systemctl status mariadb

Apa yang ada di Basis Data Ini?

Seperti di Oracle, Anda dapat menanyakan objek metadata untuk mendapatkan informasi tentang objek database.

Biasanya menggunakan beberapa pintasan di sini, perintah yang membantu Anda membuat daftar objek atau mendapatkan DDL objek.

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

Mirip dengan Oracle, Anda dapat mendeskripsikan tabel:

desc table_name;

Di mana Data Saya Disimpan?

Tidak ada penyimpanan internal khusus seperti ASM di MySQL. Semua file data ditempatkan di titik pemasangan OS biasa. Dengan instalasi default, Anda dapat menemukan data Anda di:

/var/lib/mysql

Lokasi didasarkan pada variabel datadir.

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

Anda akan melihat direktori untuk setiap database.

Bergantung pada versi dan mesin penyimpanan (ya ada beberapa di sini), direktori database mungkin berisi file dengan format *.frm, yang menentukan struktur setiap tabel dalam database. Untuk tabel MyISAM, data (*.MYD) dan indeks (*.MYI) juga disimpan dalam direktori ini.

Tabel InnoDB disimpan di tablespace InnoDB. Masing-masing terdiri dari satu atau lebih file, yang mirip dengan tablespace Oracle. Dalam instalasi default, semua data dan indeks InnoDB untuk semua database di server MySQL disimpan dalam satu tablespace, yang terdiri dari satu file:/var/lib/mysql/ibdata1. Di sebagian besar pengaturan, Anda tidak mengelola tablespace seperti di Oracle. Praktik terbaik adalah tetap mengaktifkan ekstensi otomatis dan ukuran maksimal tidak terbatas.

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

InnoDB memiliki file log, yang setara dengan log redo Oracle, yang memungkinkan pemulihan kerusakan otomatis. Secara default ada dua file log:/var/lib/mysql/ib_logfile0 dan /var/lib/mysql/ib_logfile1. Membatalkan data disimpan dalam file tablespace.

[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

Di mana Informasi Metadata?

Tidak ada tipe tampilan dba_*, user_*, all_* tetapi MySQL memiliki tampilan metadata internal.

Information_schema didefinisikan dalam standar SQL 2003 dan diimplementasikan oleh database utama lainnya, mis. SQL Server, PostgreSQL.

Sejak MySQL 5.0, database information_schema telah tersedia, yang berisi informasi kamus data. Informasi sebenarnya disimpan dalam file FRM eksternal. Akhirnya, setelah bertahun-tahun file .frm hilang di versi 8.0. Metadata masih terlihat di database information_schema tetapi menggunakan mesin penyimpanan InnoDB.

Untuk melihat semua tampilan aktual yang terdapat dalam kamus data dalam klien mysql, alihkan ke database information_schema:

use information_schema;
show tables;

Anda dapat menemukan informasi tambahan di database MySQL, yang berisi informasi tentang db, event (pekerjaan MySQL), plugin, replikasi, database, pengguna, dll.

Jumlah penayangan bergantung pada versi dan vendor.

Pilih * dari v$session

Pilihan Oracle * dari v$session diwakili di sini dengan perintah SHOW PROCESSLIST yang menunjukkan daftar utas.

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)

Ini didasarkan pada informasi yang disimpan dalam tampilan information_schema.processlist. Tampilan membutuhkan hak PROCESS. Ini juga dapat membantu Anda memeriksa apakah Anda kehabisan jumlah proses maksimum.

Di mana log Peringatan?

Log kesalahan dapat ditemukan di my.cnf atau melalui perintah show variabel.

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

Di mana Daftar Pengguna dan Izinnya?

Informasi tentang pengguna disimpan di tabel mysql.user, sedangkan hibah disimpan di beberapa tempat termasuk mysql.user, mysql.tables_priv,

Akses pengguna MySQL didefinisikan dalam:

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

Cara yang lebih baik untuk membuat daftar hibah adalah dengan menggunakan pt-hibah, alat dari Percona toolkit (harus dimiliki untuk setiap DBA MySQL).

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

Atau, Anda dapat menggunakan kueri berikut (dibuat oleh 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;

Cara membuat pengguna mysql

Prosedur 'buat pengguna' mirip dengan Oracle. Contoh paling sederhana adalah:

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

Opsi untuk memberikan dan membuat dalam satu baris dengan:

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

telah dihapus di MySQL 8.0.

Bagaimana cara memulai dan menghentikan MySQL?

Anda dapat menghentikan dan memulai MySQL dengan layanan.

Perintah sebenarnya tergantung pada distribusi Linux dan nama layanan.

Di bawah ini Anda dapat menemukan contoh dengan nama layanan 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

Di mana data Konfigurasi Server MySQL?

Konfigurasi disimpan dalam file my.cnf.

Hingga versi 8.0, setiap perubahan pengaturan dinamis yang harus tetap ada setelah dimulai ulang memerlukan pembaruan manual dari file my.cnf. Mirip dengan lingkup Oracle=keduanya, Anda dapat mengubah nilai menggunakan opsi persisten.

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

Untuk versi yang lebih lama gunakan:

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

Bagaimana cara Mencadangkan MySQL?

Ada dua cara untuk menjalankan pencadangan mysql.

Untuk database yang lebih kecil atau cadangan selektif yang lebih kecil, Anda dapat menggunakan perintah mysqldump.

Cadangan Basis Data dengan mysqldump (pencadangan logis):

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

xtrabackup, mariabackup (cadangan biner panas)

Metode yang lebih disukai adalah menggunakan xtrabackup atau mariabackup, alat eksternal untuk menjalankan pencadangan biner panas.

Oracle menawarkan cadangan biner panas dalam versi berbayar yang disebut MySQL Enterprise Edition.

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

Streaming Cadangan ke Server Lain

Mulai pendengar di server eksternal pada port yang lebih disukai (dalam contoh ini 1984)

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

Jalankan pencadangan dan transfer ke host eksternal

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

Salin Izin Pengguna

Sering kali diperlukan untuk menyalin izin pengguna dan mentransfernya ke server lain.

Cara yang disarankan untuk melakukannya adalah dengan menggunakan pt-show-grant.

pt-show-grants > /u01/backups

Bagaimana cara memulihkan MySQL?

Pemulihan Cadangan Logis

MySQLdump membuat file SQL, yang dapat dieksekusi dengan perintah sumber.

Untuk menyimpan file log eksekusi, gunakan perintah tee.

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

Pemulihan Cadangan Biner (xtrabackup/mariabackup)

Untuk memulihkan MySQL dari cadangan biner, Anda harus terlebih dahulu memulihkan file dan kemudian menerapkan file log.

Anda dapat membandingkan proses ini untuk memulihkan dan memulihkan di Oracle.

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

Semoga tips ini memberikan gambaran yang baik tentang cara melakukan tugas administratif dasar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Neo4j - Buat Indeks menggunakan Cypher

  2. Daftar Istilah Database DevOps untuk Pemula MySQL

  3. Cara Mencadangkan / Mengekspor Database MySQL menggunakan PHP

  4. Impor file CSV langsung ke MySQL

  5. Menyimpan file dalam database Vs sistem file