xtrabackup腳本
A. Xtrabackup 能不能做單庫的備份恢復
大數據量備份與還原,始終是個難點。當MYsql超10G,用mysqlmp來導出就比較慢了。在這里推薦xtrabackup,這個工具比mysqlmp要快很多。 一、Xtrabackup介紹 1、Xtrabackup是什麼 Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。 Xtrabackup有兩個主要的工具:xtrabackup、innobackupex 1、xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表 2、 innobackupex是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個perl腳本封裝,封裝了xtrabackup。主要是為了方便的 同時備份InnoDB和MyISAM引擎的表,但在處理myisam時需要加一個讀鎖。並且加入了一些使用的選項。如slave-info可以記錄備份恢 復後,作為slave需要的一些信息,根據這些信息,可以很方便的利用備份來重做slave。 2、Xtrabackup可以做什麼 : 在線(熱)備份整個庫的InnoDB、 XtraDB表 在xtrabackup的上一次整庫備份基礎上做增量備份(innodb only) 以流的形式產生備份,可以直接保存到遠程機器上(本機硬碟空間不足時很有用) MySQL資料庫本身提供的工具並不支持真正的增量備份,二進制日誌恢復是point-in-time(時間點)的恢復而不是增量備份。 Xtrabackup工具支持對InnoDB存儲引擎的增量備份,工作原理如下: (1)首先完成一個完全備份,並記錄下此時檢查點的LSN(Log Sequence Number)。 (2)在進程增量備份時,比較表空間中每個頁的LSN是否大於上次備份時的LSN,如果是,則備份該頁,同時記錄當前檢查點的LSN。 首 先,在logfile中找到並記錄最後一個checkpoint(「last checkpoint LSN」),然後開始從LSN的位置開始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開始拷貝全部的數據文 件.ibd;在拷貝全部數據文件結束之後,才停止拷貝logfile。 因為logfile裡面記錄全部的數據修改情況,所以,即時在備份過程中數據文件被修改過了,恢復時仍然能夠通過解析xtrabackup_logfile保持數據的一致。 因為innobackupex支持innodb,myisam,所以本文說一下,怎麼使用innobackupex。 二,安裝xtrabackup 1、下載地址 /downloads/XtraBackup/ 2、安裝 根據需求,選擇不同的版本,我選擇的是rpm安裝包,如果報以下錯誤 復制代碼 代碼如下: [root@localhost xtrabackup]# rpm -ivh percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm warning: percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY error: Failed dependencies: perl(Time::HiRes) is needed by percona-xtrabackup-2.2.4-5004.el6.x86_64 解決辦法: 復制代碼 代碼如下: [root@localhost xtrabackup]# yum -y install perl perl-devel lio lio-devel perl-Time-HiRes perl-DBD-MySQL //安裝依賴包 [root@localhost xtrabackup]# rpm -ivh percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm //重新安裝 warning: percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY Preparing... ########################################### [100%] 1:percona-xtrabackup ########################################### [100%]
B. 如何將阿里雲的mysql(RDS)數據備份到本地
本例以本地伺服器為 RHEL6/x64 系統,備份文件存儲路徑為/home/mysql/為例。
下載雲資料庫物理備份文件並上傳至目標伺服器。備份文件獲取方法請參見下載備份數據。如果目標伺服器可以訪問源實例,您也可以使用wget "url"下載備份文件。其中url為備份文件下載地址。
切換路徑到備份文件所在路徑。
cd /home/mysql/
解壓備份文件。
其中,filename.tar.gz為備份文件名。
tar vizxf filename.tar.gz
檢查解壓後文件包含的資料庫是否正確。
系統顯示如下,其中db0dz1rv11f44yg2、mysql和test為雲資料庫中存在的資料庫。
-rw-r--r-- 1 root root 269 Aug 19 18:15 backup-my.cnf
drwxr-xr-x 2 root root 4096 Aug 21 10:31 db0dz1rv11f44yg2
-rw-rw---- 1 root root 209715200 Aug 7 10:44 ibdata1
drwxr-xr-x 2 root root 4096 Aug 21 10:31 mysql
drwxr-xr-x 2 root root 4096 Aug 21 10:31 test
-rw-r--r-- 1 root root 10 Aug 19 18:15 xtrabackup_binary
-rw-r--r-- 1 root root 23 Aug 19 18:15 xtrabackup_binlog_info
-rw-r--r-- 1 root root 77 Aug 19 18:15 xtrabackup_checkpoints
-rw-r--r-- 1 root root 2560 Aug 19 18:15 xtrabackup_logfile
-rw-r--r-- 1 root root 72 Aug 19 18:15 xtrabackup_slave_info
cd filename/
ll
恢復數據文件。
系統顯示innobackupex: completed OK!,則數據恢復成功。
innobackupex --defaults-file=./backup-my.cnf --apply-log ./
修改配置文件。將解壓文件backup-my.cnf中的innodb_fast_checksum、innodb_page_size、innodb_log_block_size注釋掉,並且添加datadir=/home/mysql,如下所示。
# This MySQL options file was generated by innobackupex-1.5.1.
# The MySQL Server
[mysqld]
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
#innodb_fast_checksum=0
#innodb_page_size=16364
#innodb_log_block_size=512
datadir=/home/mysql/
重裝 MySQL 系統庫,取得資料庫的 root 許可權。
系統顯示如下,則 mysql 系統庫重裝成功。
Installing MySQL system table...
OK
Filling help table...
OK
rm -rf mysql
mysql_install_db --user=mysql --datadir=/home/mysql/
修改文件屬主。
chown -R mysql:mysql /home/mysql/
啟動 mysqld 進程。
mysqld_safe --defaults-file=/home/mysql/backup-my.cnf &
使用客戶端登錄資料庫。
mysql –u root –p
驗證資料庫是否完整。
系統顯示入選,則資料庫恢復成功。
+--------------------+
| Database |
+--------------------+
| information_schema |
| db0dz1rv11f44yg2 |
| mysql |
| performance_schema |
| test |
+--------------------+
show databases;
C. MySQL資料庫一主一備的數據備份策略mysql一主一備
MySQL資料庫一主一備的數據備份策略
在實際應用中,資料庫的備份非常重要。當資料庫出現故障或者人為誤操作導致數據丟失的時候,備份文件可以恢復數據。MySQL資料庫備份有很多的策略,其中一主一備的數據備份策略是最為安全可靠的,本文將介紹如何實現一主一備的MySQL資料庫備份。
一、環境搭建和准備
在開始備份操作之前,需要先搭建一主一備的資料庫環境,並且保證主備伺服器之間能夠相互通信。常用的資料庫備份方式有物理備份和邏輯備份。物理備份是直接備份數據文件,包括表空間和日誌文件等,適合數據量較大的情況。邏輯備份是備份SQL語句,適合少量數據備份。本文以物理備份為例。
二、主伺服器備份配置
1. 安裝xtrabackup
xtrabackup是Percona提供的用於備份MySQL資料庫的工具,支持InnoDB引擎。安裝xtrabackup的方法如下:
# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# percona-release setup ps80
# yum install -y percona-xtrabackup-80
2. 創建備份腳本
在主伺服器上創建備份腳本backup.sh,腳本內容如下:
#!/bin/bash
mysql_user=”root”
mysql_password=”password”
mysql_socket=”/var/lib/mysql/mysql.sock”
backup_dir=”/data/backup”
backup_date=`date +%Y-%m-%d-%H%M`
xtrabackup –backup –user=$mysql_user –password=$mysql_password
–socket=$mysql_socket –target-dir=$backup_dir/$backup_date
3. 設置定時任務
在主伺服器上設置定時任務,每天凌晨3點備份一次資料庫:
# crontab -e
0 3 * * * /bin/bash /root/backup.sh
三、備份伺服器還原配置
1. 安裝xtrabackup
同樣需要在備份伺服器上安裝xtrabackup:
# yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# percona-release setup ps80
# yum install -y percona-xtrabackup-80
2. 創建還原腳本
在備份伺服器上創建還原腳本restore.sh,腳本內容如下:
#!/bin/bash
backup_date=$1
mysql_user=”root”
mysql_password=”password”
mysql_socket=”/var/lib/mysql/mysql.sock”
backup_dir=”/data/backup”
rm -rf /var/lib/mysql/*
xtrabackup –-back –user=$mysql_user –password=$mysql_password
–socket=$mysql_socket –target-dir=$backup_dir/$backup_date
3. 還原資料庫
在備份伺服器上執行還原腳本,指定需要還原的備份日期:
# chmod +x /root/restore.sh
# /bin/bash /root/restore.sh 2022-11-11-1312
四、總結
通過一主一備的MySQL資料庫備份策略,可以確保資料庫的數據安全性。備份伺服器作為主伺服器的備份,保證了主伺服器數據的可靠性,而定時備份和自動化還原腳本則保證了備份的操作性。在實際使用過程中還需根據實際情況進行定期測試和優化,以保證數據備份的穩定可靠。
D. mysql到底如何備份
數據備份是數據容災的最後一道防線,即便有著兩地三中心的架構,備份也依然重要。如果備份出問題,備份時影響了交易業務,備份數據無法恢復,這些也是企業難以承受的。所以選擇合適的備份工具尤為重要。
每個企業級資料庫都會有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業版中非常重要的工具之一,是為企業級客戶提供的數據備份方案。
Xtrabackup一直作為MEB 開源版備胎而存在,從MySQL 8.0開始情況可能會變得有所不同。
在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復體驗會更好,目前xtrabackup還不支持這些特性。
MySQL 企業版還有哪些功能?