第一步:composer 下載 tp5er/tp5-databackup
下載:tp5er/tp5-databackup
最佳數據備份還原- shell腳本方式
1、//備份整個(gè)數據庫
mysqldump -uroot -hhost -ppassword dbname > backdb.sql
2、//備份數據庫中的某個(gè)表
mysqldump -uroot -hhost -ppassword dbname tbname1, tbname2 > backdb.sql
3、//備份多個(gè)數據庫
mysqldump -uroot -hhost -ppassword --databases dbname1, dbname2 > backdb.sql
4、//備份系統中所有數據庫
mysqldump -uroot -hhost -ppassword --all-databases > backdb.sql
5、//恢復
mysql -uroot -p\'123456\' dbname < backdb.sql
使用本類(lèi)進(jìn)行數據庫備份
第二步:使用composer進(jìn)行安裝
優(yōu)先
composer require tp5er/tp5-databackup
同時(shí)支持tp6和tp5版本
引入類(lèi)文件
use \\tp5er\\Backup;
參數說(shuō)明
$start:無(wú)論是備份還是還原只要一張表備份完成$start就是返回的0
$file :sql文件的名字,下面有名字命名規范,如果名字命令不規范,在展示列表中就會(huì )出現錯誤
配置文件
$config=array(
\'path\' => \'./Data/\',//數據庫備份路徑
\'part\' => 20971520,//數據庫備份卷大小
\'compress\' => 0,//數據庫備份文件是否啟用壓縮 0不壓縮 1 壓縮
\'level\' => 9 //數據庫備份文件壓縮級別 1普通 4 一般 9最高
);
第三步:實(shí)例化
$db= new Backup($config);
在此南昌網(wǎng)站建設公司開(kāi)發(fā)工程師溫馨提醒廣大開(kāi)發(fā)人員文件命名規則,請嚴格遵守,否則會(huì )帶來(lái)很多不必要的麻煩
$file=[\'name\'=>date(\'Ymd-His\'),\'part\'=>1]
數據類(lèi)表列表
return $this->fetch(\'index\',[\'list\'=>$db->dataList()]);
備份文件列表
return $this->fetch(\'importlist\',[\'list\'=>$db->fileList()]);
備份表
$tables="數據庫表1";
$start= $db->setFile($file)->backup($tables[$id], 0);
導入表
$start=0;
$start= $db->setFile($file)->import($start);
刪除備份文件
$db->delFile($time);
下載備份文件
$db->downloadFile($time);
修復表
$db->repair($tables)
優(yōu)化表
$db->optimize($tables)
大數據備份采取措施1
如果備份數據比較大的情況下,需要修改如下參數
//默認php代碼能夠申請到的最大內存字節數就是134217728 bytes,如果代碼執行的時(shí)候再需要更多的內存,根據情況定義指定字節數
memory_limit = 1024M
//默認php代碼申請到的超時(shí)時(shí)間是20s,如果代碼執行需要更長(cháng)的時(shí)間,根據代碼執行的超時(shí)時(shí)間定義版本運行超時(shí)時(shí)間
max_execution_time =1000
大數據備份采取措施2
自由設置超時(shí)時(shí)間。支持連貫操作,該方法主要使用在表備份和還原中,防止備份還原和備份不完整
//備份
$time=0//表示不限制超時(shí)時(shí)間,直到程序結束,(慎用)
$db->setTimeout($time)->setFile($file)->backup($tables[$id], 0);
//還原
$db->setTimeout($time)->setFile($file)->import($start);
備份shell腳本
#!/bin/bash
# 1.備份全部數據庫的數據和結構
# mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
# 2.備份全部數據庫的結構(加 -d 參數)
# mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
# 3.備份全部數據庫的數據(加 -t 參數)
# mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
# 4.備份單個(gè)數據庫的數據和結構(數據庫名mydb)
# mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
# 5.備份單個(gè)數據庫的結構
# mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
# 6.備份單個(gè)數據庫的數據
# mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
# 7.備份多個(gè)表的數據和結構(數據,結構的單獨備份方法與上同)
# mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
# 8.一次備份多個(gè)數據庫
# mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql
南昌網(wǎng)站建設公司百恒網(wǎng)絡(luò )開(kāi)發(fā)工程師提醒大家以下是大數據庫還原操作方法:
# 1.在系統命令行中,輸入如下實(shí)現還原:
# mysql -uroot -p123456 < /data/mysqlDump/mydb.sql # 2.在登錄進(jìn)入mysql系統中,通過(guò)source指令找到對應系統中的文件進(jìn)行還原: # mysql> source /data/mysqlDump/mydb.sql
#保存備份個(gè)數,備份31天數據
number=31
#備份保存路徑
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#備份工具
tool=mysqldump
#用戶(hù)名
username=root
#密碼
password=123456
#將要備份的數據庫
database_name=demo
#如果文件夾不存在則創(chuàng )建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#簡(jiǎn)單寫(xiě)法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#寫(xiě)創(chuàng )建備份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#找出需要刪除的備份
delfile=`ls -l -crt $backup_dir/*.sql | awk \'{print $9 }\' | head -1`
#判斷現在的備份數量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk \'{print $9 }\' | wc -l`
if [ $count -gt $number ]
then
#刪除最早生成的備份,只保留number數量的備份
rm $delfile
#寫(xiě)刪除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
原創(chuàng )文章出自:百恒網(wǎng)絡(luò ) 如轉載請注明出處!專(zhuān)業(yè),專(zhuān)注于南昌APP開(kāi)發(fā),為用戶(hù)提供高品質(zhì)的網(wǎng)絡(luò )產(chǎn)品及優(yōu)質(zhì)服務(wù)是我們始終追求的目標!
希望本文對廣大研發(fā)人員或從事企業(yè)網(wǎng)站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌網(wǎng)絡(luò )公司百恒網(wǎng)絡(luò )技術(shù)部聯(lián)系。我們很高興與廣大研發(fā)人員和從事企業(yè)網(wǎng)站建設公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗。