在Ubuntu上恢復丟失的MariaDB數據的常見方法
邏輯備份是最常用的恢復方式,適用于大多數場景,尤其適合中小型數據庫。
sudo systemctl stop mariadb
full_backup.sql
)導入MariaDB:mysql -u root -p < /path/to/full_backup.sql
輸入root用戶密碼后,系統會自動執行SQL腳本恢復數據。sudo systemctl start mariadb
mysql -u root -p -e "SHOW DATABASES;" # 查看數據庫列表
mysql -u root -p -e "USE your_database; SHOW TABLES;" # 檢查特定數據庫的表
物理備份直接復制數據庫文件,恢復速度更快,適合大型數據庫或需要快速恢復的場景。
sudo apt update && sudo apt install mariadb-backup
/path/to/backup
目錄:sudo mariabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
此命令會將備份文件復制到MariaDB的數據目錄(/var/lib/mysql
)。sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
若啟用了二進制日志(默認開啟),可通過binlog恢復誤刪除或特定時間點的數據。
/var/lib/mysql/
目錄,命名格式為mysql-bin.000001
、mysql-bin.000002
等??赏ㄟ^以下命令查看當前binlog位置:SHOW BINARY LOGS;
mysqlbinlog
工具導出指定區間的binlog(如從mysql-bin.000001
到mysql-bin.000003
),并導入數據庫:mysqlbinlog /var/lib/mysql/mysql-bin.000001 /var/lib/mysql/mysql-bin.000002 /var/lib/mysql/mysql-bin.000003 | mysql -u root -p
若需恢復到特定時間點(如2025-09-18 10:00:00),可添加--start-datetime
參數:mysqlbinlog --start-datetime="2025-09-18 10:00:00" /var/lib/mysql/mysql-bin.000001 | mysql -u root -p
對于企業級大型數據庫,可使用Percona XtraBackup進行熱備份(在線備份)和恢復。
sudo apt install percona-xtrabackup-80 # 適用于MariaDB 10.5及以上版本
sudo xtrabackup --prepare --target-dir=/path/to/backup
sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
log_bin
)開啟,以便后續增量恢復(修改/etc/mysql/mariadb.conf.d/50-server.cnf
文件,添加log_bin = mysql-bin
并重啟服務)。