十年专注于品牌网站建设 十余年专注于网站建设_小程序开发_APP开发,低调、敢创新、有情怀!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

THINKPHP实现数据库备份方案实操

THINKPHP数据库备份 百恒 2023-02-04 2392
      通过THINKPHP实现数据库备份方案实操,其中包括最佳数据备份还原shell脚本方式、表备份、表还原、表删除、表优化、下载备份以及大数据备份采取措施等实操方法,通过实例全面的介绍Mysql数据库的基本操作,希望对广从事网站建设开发的技术人员及企业有所帮助。

THINKPHP实现数据库备份方案实操以及表备份、还原、表删除、表优化、下载备份以及大数据备份

第一步:composer 下载 tp5er/tp5-databackup
下载:tp5er/tp5-databackup

最佳数据备份还原- shell脚本方式
1、//备份整个数据库
mysqldump -uroot -hhost -ppassword dbname > backdb.sql
2、//备份数据库中的某个表
mysqldump -uroot -hhost -ppassword dbname tbname1, tbname2 > backdb.sql
3、//备份多个数据库
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 
使用本类进行数据库备份

第二步:使用composer进行安装
优先
composer require tp5er/tp5-databackup 
同时支持tp6和tp5版本

引入类文件
use \\tp5er\\Backup; 
参数说明
$start:无论是备份还是还原只要一张表备份完成$start就是返回的0
$file :sql文件的名字,下面有名字命名规范,如果名字命令不规范,在展示列表中就会出现错误 
配置文件
$config=array(
    \'path\'     => \'./Data/\',//数据库备份路径
    \'part\'     => 20971520,//数据库备份卷大小
    \'compress\' => 0,//数据库备份文件是否启用压缩 0不压缩 1 压缩
    \'level\'    => 9 //数据库备份文件压缩级别 1普通 4 一般  9最高
); 
第三步:实例化
 $db= new Backup($config); 
在此南昌网站建设公司开发工程师温馨提醒广大开发人员文件命名规则,请严格遵守,否则会带来很多不必要的麻烦
$file=[\'name\'=>date(\'Ymd-His\'),\'part\'=>1] 
数据类表列表
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) 
优化表
 $db->optimize($tables) 
大数据备份采取措施1
如果备份数据比较大的情况下,需要修改如下参数
//默认php代码能够申请到的最大内存字节数就是134217728 bytes,如果代码执行的时候再需要更多的内存,根据情况定义指定字节数
memory_limit = 1024M
//默认php代码申请到的超时时间是20s,如果代码执行需要更长的时间,根据代码执行的超时时间定义版本运行超时时间
max_execution_time =1000 
大数据备份采取措施2
 自由设置超时时间。支持连贯操作,该方法主要使用在表备份和还原中,防止备份还原和备份不完整
    //备份
    $time=0//表示不限制超时时间,直到程序结束,(慎用)
    $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.备份单个数据库的数据和结构(数据库名mydb)
# mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
# 5.备份单个数据库的结构
# mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
# 6.备份单个数据库的数据
# mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
# 7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
# mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
# 8.一次备份多个数据库
# mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql
南昌网站建设公司百恒网络开发工程师提醒大家以下是大数据库还原操作方法: 
# 1.在系统命令行中,输入如下实现还原:
# mysql -uroot -p123456 < /data/mysqlDump/mydb.sql # 2.在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原: # mysql> source /data/mysqlDump/mydb.sql

#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=123456
#将要备份的数据库
database_name=demo

#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     
    mkdir -p $backup_dir;
fi

#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

#写创建备份日志
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
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi


原创文章出自:百恒网络 如转载请注明出处!专业,专注于南昌APP开发,为用户提供高品质的网络产品及优质服务是我们始终追求的目标!

希望本文对广大研发人员或从事企业网站建设公司的团队有所帮助,如对此不太理解的,可以与南昌网络公司百恒网络技术部联系。我们很高兴与广大研发人员和从事企业网站建设公司技术人员分享我们的技术和经验。

400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×