❶ linux中mysql如何備份與恢復(mysql備份和恢復資料庫命令)
把以前寫的一個發你看看
腳本要求:編寫shell腳本,每天凌晨1點備份td_oa庫,到mysql-back目錄,並將備份文件壓縮,壓縮名稱為備份的日期,只保留連續七天的備份物斗猜文件
#!/bin/bash
mysql-uroot-p123456-e"flushtableswithreadlock;"鎖住表
/usr/local/mysql/bin/mysqlmp-uroot-p123456td_oa--flush-logs--single-transaction mysql-uroot-p123456-e"unlocktables;"解鎖 a=`/bin/date%Y-%m-%d`#在這里加上銷源時間,壓縮的時候罩型加上時間,會失敗。 echo$a cd/gxl /bin/tar-czf$a.tar/fjp/td_oa.sql b="$a.tar" cp-p$b/root/fjp forcin`find/root/fjp-ctime7` do /bin/rm-rf$c done ❷ 怎麼linux下定時備份mysql資料庫備份
1、查看磁碟空間情況: ❸ 如何在linux下實現mysql資料庫每天自動備份
mysql備份: ❹ mysql資料庫太大了怎麼備份
命令:mysqlhot ❺ mysql備份問題,mysql版本5.7.2 1.mysqlmp:最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個資料庫實例、單個資料庫、單張表的邏輯備份工具, 上手簡單,學習成本幾乎為 0。備份簡單,恢復也簡單。 比如導出單個資料庫 ytt: mysqlmp ytt > /tmp/ytt.sql; 恢復也非常簡單:mysql < /tmp/ytt.sql 缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數據集要恢復的話同樣也是單線程運行,恢復速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復。 2.mysqlpump:MySQL 5.7 GA 後推出的 mysqlmp工具的增強版。可以對同一個數據集多個線程並發備份,備份速度很快。 其他缺點和 mysqlmp 一樣。 3.MySQL Shell UTIL對象附帶的備份工具:隨 MySQL 8.0.21 最新版本捆綁發布,自帶多線程備份以及多線程恢復功能, 可以直接替代 mysqlmp/mysqlpump。 ❻ Linux自動備份MySQL資料庫的實用方法
❼ linux 登錄mysql 後 怎麼備份
用命令實現備份
既然是定時備份,就要選擇一個空間充足的磁碟空間,避免出現因空間不足導致備份失敗,數據丟失的惡果!
存儲到當前磁碟這是最簡單,卻是最不推薦的;伺服器有多塊硬碟,最好是把備份存放到另一塊硬碟上;有條件就選擇更好更安全的存儲介質;
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 46G 1.6G 97% /
tmpfs 1.9G 92K 1.9G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 534G 3.6G 503G 1% /home123456123456
2、創建備份目錄:
上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home保存備份文件;
cd /home
mkdir backup
cd backup123123
3、創建備份Shell腳本:
注意把以下命令中的DatabaseName換為實際的資料庫名稱;
當然,你也可以使用其實的命名規則!
vi bkDatabaseName.sh11
輸入/粘貼以下內容:
#!/bin/bash
mysqlmp -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql1212
對備份進行壓縮:
#!/bin/bash
mysqlmp -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz1212
注意:
把 username 替換為實際的用戶名;
把 password 替換為實際的密碼;
把 DatabaseName 替換為實際的資料庫名;
4、添加可執行許可權:
chmod u+x bkDatabaseName.sh11
添加可執行許可權之後先執行一下,看看腳本有沒有錯誤,能不能正常使用;
./bkDatabaseName.sh11
5、添加計劃任務
檢測或安裝 crontab
確認crontab是否安裝:
執行 crontab 命令如果報 command not found,就表明沒有安裝
# crontab
-bash: crontab: command not found
mysqlmp -u username -p dbname > BackupName.sql
mysql恢復:
mysql -u root -p dbname < BackupName.sql
所以你可以寫個shell腳本,腳本中執行mysql備份命令,然後把shell腳本加入crontab定時任務中就可以完成每天自動備份資料庫了。
這個命令會在拷貝文件之前會把表鎖住,並把數據同步到數據文件中,以避免拷貝到不完整的數據文件,是最安全快捷的備份方法。
命令的使用方法是:
mysqlhot -u root -p<rootpass> db1 db2 … dbn <output_dir>
如果需要備份全部資料庫,可以加上–regexp=」.*」參數。
Mysqlhot命令可自動完成數據鎖定工作,備份時不用關閉伺服器。
它還可以刷新日誌,使備份文件和日誌文件的檢查點能保持同步。
MySQL定期備份是一項重要的工作,但人工操作太繁瑣,也難避免有所疏漏,使用下面的方法即可讓系統定期備份數據。
◆1、創建備份文件夾
#cd /www
#makedir backup
◆2、編寫運行腳本
#vi autobackup
寫入以下內容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退枝褲出
說明:
(1)mysql_bin_dir:mysql的bin路徑;
(2)dataname:資料庫名;
(3)user:資料庫用戶名;
(4)password:陸搭歲用戶密碼;
(5)name:早睜自定義備份文件前綴標識。
如上例,將自動備份mysql資料庫,並以gzip壓縮方式存儲,文件名為name20080101.gz的形式。
◆3、為腳本添加執行許可權
#chmod +x autobackup
◆4、讓crontab來完成定期執行的任務
這一步中,Redhat的方法會不一樣,後面專門給出。
編輯crontab:
#vi /etc/crontab
在最後一行中加入:
01 5 * * * root /www/autobackup
每天5點運行腳本,也可以修改5為其他指定時間。
Redhat方法:
Redhat的crontab採用按時間調用4個目錄(/etc/cron.hourly:每小時;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中腳本出來運行的方式。
Redhat中只需要將剛才編輯的腳本復制到相應的目錄即可。
◆5、重啟crontab
#/etc/rc.d/init.d/crond restart
完成。
MySQLl提供了一個mysqlmp命令,我們可以用它進行數據備份。
按提示輸入密碼,這就把tm資料庫所有的表結構和# mysqlmp -u root -p tm > tm_050519.sql數據備份到tm_050519.sql了,因為要總進行備份工作,如果數據量大會佔用很大空間,這時可以利用gzip壓縮數據,命令如下:
# mysqlmp -u root -p tm | gzip > tm_050519.sql.gz
系統崩潰,重建系統時,可以這樣恢復數據:
# mysqlmp -u root -p tm < tm_050519.sql
從壓縮文件直接恢復:
#gzip < tm_050519.sql.gz | mysqlmp -u root -p tm
當然,有很多MySQL工具提供更直觀的備份恢復功能,比如用phpMyAdmin就很方便。但我認為,mysqlmp是最基本、最通用的。
二、利用crontab,系統每天定時備份mysql資料庫
利用系統crontab來定時執行備份文件,按日期對備份結果進行保存,達到備份的目的。
1、創建保存備份文件的路徑/var/backup/mysqlbak
# mkdir -p /var/backup/mysqlbak
2、創建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql.sh
#!/bin/bash
# mysql備份腳本
cd /var/backup/mysqlbak/
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/data
for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases" |
grep -v "Database" | grep -v "information_schema"`
do
/usr/local/www/mysql/bin/mysqlmp -uroot -plin31415926 $i |
gzip > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz
done
3、修改文件屬性,使其可執行
# chmod +x /usr/sbin/bakmysql
4、修改/etc/crontab
# crontab -e
在下面添加
01 3 * * * root /usr/sbin/bakmysql
#表示每天3點鍾執行備份
這樣每天就可以在/var/backup/mysqlbak下看到備份的sql文件 了!