GVKun编程网logo

Mysql触发器在PHP项目中用来做信息备份、恢复和清空(mysql触发器案例)

5

本篇文章给大家谈谈Mysql触发器在PHP项目中用来做信息备份、恢复和清空,以及mysql触发器案例的知识点,同时本文还将给你拓展ASP实现SQL备份、恢复、Docker中容器的备份、恢复和迁移、do

本篇文章给大家谈谈Mysql触发器在PHP项目中用来做信息备份、恢复和清空,以及mysql触发器案例的知识点,同时本文还将给你拓展ASP实现SQL备份、恢复、Docker中容器的备份、恢复和迁移、docker容器备份、恢复和迁移volume方案、Gitlab备份、迁移、恢复和升级等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Mysql触发器在PHP项目中用来做信息备份、恢复和清空(mysql触发器案例)

Mysql触发器在PHP项目中用来做信息备份、恢复和清空(mysql触发器案例)

案例:

通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能)。

思路:

要有一张员工表,还要有一张员工备份表;备份,使用触发器,在点击删除按钮执行删除功能之前将员工表中的信息导入到备份表中,这样就达到了备份的效果;恢复,对备份表使用触发器,将备份表中的数据删除,删除的同时将此数据导入到员工表中;清空,使用truncate方法,将备份表中的数据彻底清空,并且释放内存,而且这个方法进行数据删除不会调用触发器。话不多少,直接上干货。

第一步:建表,员工表,员工备份表。

CREATE TABLE `employee` (
 `id` int(11) NOT NULL AUTO_INCREMENT,`denumber` varchar(255) DEFAULT '0',`idnumber` varchar(255) DEFAULT '0',`worknumber` varchar(255) DEFAULT '1',`pwd` varchar(255) DEFAULT NULL,`emname` varchar(255) DEFAULT '0',`tel` varchar(255) DEFAULT '0',`salary` int(255) DEFAULT '0',`entrytime` varchar(255) DEFAULT '0',`orderpaixu` int(255) DEFAULT '1',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=utf8

这是员工表

CREATE TABLE `employeebackup` (
 `id` int(11) NOT NULL,`denumber` varchar(255) DEFAULT NULL,`idnumber` varchar(255) DEFAULT NULL,`worknumber` varchar(255) DEFAULT NULL,`emname` varchar(255) DEFAULT NULL,`tel` varchar(255) DEFAULT NULL,`salary` int(255) DEFAULT NULL,`entrytime` varchar(255) DEFAULT NULL,`orderpaixu` int(255) DEFAULT NULL,`deletetime` datetime DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

员工备份表,多了一个字段deletetime,为了记录删除时间

第二步:备份,给员工表建触发器(有关触发器的资料可以查看我的另一篇博客 http://www.cnblogs.com/liebagefly/p/7517998.html),在点击删除按钮执行删除功能之前将员工表中的信息导入到备份表中。

触发器sql代码:

CREATE trigger deletesemployee before delete on employee
for each ROW
begin 
 insert into employeebackup (id,denumber,idnumber,worknumber,pwd,emname,tel,salary,entrytime,orderpaixu,deletetime)
values(OLD.id,OLD.denumber,OLD.idnumber,OLD.worknumber,OLD.pwd,OLD.emname,OLD.tel,OLD.salary,OLD.entrytime,OLD.orderpaixu,Now());
end

PHP后台方法,我使用的框架是yii2.

 public function actionEmployeedel($id)
 {
  Employee::findOne($id)->delete();
  return $this->redirect(['employeemanage']);
 }

第三步:恢复,将删除的信息进行恢复,对备份表使用触发器,将备份表中的数据删除,删除的同时将此数据导入到员工表中。

触发器sql代码:

CREATE trigger deletesemployeebackup before delete on employeebackup
for each ROW
begin 
  insert into employee (id,orderpaixu)
values(OLD.id,OLD.orderpaixu);
end

PHP代码

public function actionRecoveremployeedel($id)
 {
  Employeebackup::findOne($id)->delete();
  return $this->redirect(['recoveremployee']);
 }

除了备份,有时还要做到清空功能,使用truncate方法,将备份表中的数据彻底清空,并且释放内存,而且这个方法进行数据删除不会调用触发器。

yii2的后台中调用sql的原始写法,即将所有已经删除的用户清空。

public function actionDropemployeedel()
{
 Yii::$app->db->createCommand('truncate table employeebackup')
  ->execute();
 return $this->redirect(['recoveremployee']);
}

以上就是MysqL触发器在小项目中的一个简单用法。

ASP实现SQL备份、恢复

ASP实现SQL备份、恢复

1、备份
<%
SQL="backup database 数据库名 to disk=''"&Server.MapPath("backup")&"\\"&"backuptext.dat"&"''"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
else
response.write "数据备份成功!"
end if
%>绿色c hinaip ower. comAYrCJ6B

2、恢复
<%
SQL="Restore database 数据库名 from disk=''"&Server.MapPath("backup")&"\\"&"backuptext.dat"&"''"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
else
response.write "数据恢复成功!"
end if
%>

Docker中容器的备份、恢复和迁移

Docker中容器的备份、恢复和迁移

1. 制作容器快照

先查看docker容器列表。

docker ps -a

选择要备份的容器,然后创建该容器的快照。使用 docker commit 命令来创建快照。

docker commit -p e6b4e59a1fcc web-backup

该命令会生成一个为Docker镜像的容器快照,通过 docker images 命令来查看是否成功生成。

docker images

已经看到了刚才生成的镜像代表创建成功。

2. 备份容器

我们只使用 docker save 命令备份镜像,不考虑其他方式。

docker save -o ~/web-backup.tar web-backup

在~目录下查看是否已经生成web-backup.tar。

3. 恢复容器

使用 docker load 命令,后面加上tar包的备份路径,加载Docker镜像。

docker load -i ~/web-backup.tar

运行 docker images 命令是否加载成功。

docker images


在镜像被加载后,我们将用加载的镜像去运行Docker容器。

docker run -d -p 80:80 container-backup

 

docker容器备份、恢复和迁移volume方案

docker容器备份、恢复和迁移volume方案

volume作为数据的载体,在很多情况下需要对其中的数据进行备份、迁移或是恢复。下面一docker容器的volume为例,说一下备份的技巧。

  我们先建立一个容器vol_simple,该容器在/date挂载了一个volume。

    $ sudo docker run -it --name vol_simple -v /data ubuntu /bin/bash

    如果我们需要将这里的数据备份,一个很容易想到的办法是使用docker inspect命令查找/date在宿主机上对应的文件夹位置,然后复制其中内容或是使用tar进行打包,同样如果需要恢复某个volume中的数据,可以查找到volume对应的文件夹,将数据复制进这个文件夹或者使用tar恢复。但这些笨拙的做法并不值得推荐,因为查找主机上文件夹后在再操作容易出错,也不适合脚本的自动化。

  备份volume可以使用一下方法。

    $ sudo docker run  --rm --vloumes-from vol_simple -v$(pwd):/backup ubuntu tar cvf /backup/data.tar /data 

    这个指令启动了一个临时的容器,这个容器挂载了两个volume,第一个volume与要备份的volume共享,第二个volume将宿主机的当前目录挂载到容器的/backup下。容器运行后将要备份的内容(/data文件夹)备份到/backup/data.tar,然后删除容器,备份后的data.tar就留在了当前目录。

  恢复volume方法:

    $ sudo docker run -it --name vol_bck -v /data ubuntu /bin/bash

    $ sudo docker run --rm --volumes-from vol_bck -v $(pwd):/backup ubuntu tar xvf /backup/data.tar -C /

   首先运行了一个新容器作为数据恢复的目标。第二行指令启动了一个临时容器,这个容器挂载了两个volume,第一个volume与要恢复的volume共享,第二个将宿主机的当前目录挂载到容器的/backup下。由于之前备份的data.tar在当前目录下,那么它在容器中的/backup也能访问到,容器启动后将这个存档文件中的/data恢复到跟目录下,然后删除容器,恢复后的数据在vol_bck的volume中了。

 

Gitlab备份、迁移、恢复和升级

Gitlab备份、迁移、恢复和升级

Gitlab备份、迁移、恢复和升级

自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上。备份、迁移、恢复、升级过程如下

1、gitlab备份

备份前gitlab的项目如图所示

备份时需要保持gitlab处于正常运行状态,直接执行gitlab-rake gitlab:backup:create进行备份

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1530156812_2018_06_28_10.8.4_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1530156812_2018_06_28_10.8.4是备份创建的日期

/etc/gitlab/gitlab.rb 配置文件须备份

/var/opt/gitlab/Nginx/conf Nginx配置文件

/etc/postfix/main.cfpostfix 邮件配置备份

1.1 修改备份文件目录

可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

修改完成之后使用gitlab-ctl reconfigure命令重载配置文件即可

1.2 设置备份过期时间

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

gitlab_rails['backup_keep_time'] = 604800        #以秒为单位

1.3 gitlab自动备份

创建定时任务

[root@gitlab ~]# crontab -e

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

 

2、gitlab迁移

迁移的整体思路是:

1、在新服务器上安装相同版本的gitlab

2、将备份生成的备份文件发送到新服务器的相同目录下

这里在10.0.0.6的机器上安装了相同版本的gitlab并能正常运行使用

在老服务器上将备份文件发送至新服务器的相应目录下

[root@gitlab ~]# scp /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar root@10.0.0.6:/var/opt/gitlab/backups/

 

3、gitlab恢复

[root@gitlab ~]# gitlab-ctl stop unicorn        #停止相关数据连接服务

[root@gitlab ~]# gitlab-ctl stop sidekiq

[root@gitlab-new ~]# chmod 777 /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar

#修改权限,如果是从本服务器恢复可以不修改

[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4    

#从1530156812_2018_06_28_10.8.4编号备份中恢复

按照提示输入两次yes并回车

[root@gitlab ~]# gitlab-ctl start                #启动gitlab

浏览器访问新服务器的地址进行查看,迁移成功

在实际情况中访问gitlab可能是用域名访问,我们可以修改gitlab配置文件中的url再进行备份,这样就不会影响迁移过程,恢复完成后需要进行的只是修改域名对应的dns解析ip地址

 

4、gitlab升级

[root@gitlab ~]# gitlab-ctl stop        #关闭gitlab服务

[root@gitlab ~]# gitlab-rake gitlab:backup:create        #备份

下载新版gitlab的rpm包安装,安装时选择升级

安装的过程中可能会出现报错

Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'

解决方法为

[root@gitlab ~]# chmod 2770 /var/opt/gitlab/git-data/repositories

安装成功后重新加载配置并启动

[root@gitlab ~]# gitlab-ctl reconfigure

[root@gitlab ~]# gitlab-ctl restart

 

5、gitlab更改默认的Nginx

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb

Nginx['enable'] = false        #不启用Nginx

检查默认Nginx配置文件,并迁移至新Nginx服务

/var/opt/gitlab/Nginx/conf/Nginx.conf          #Nginx配置文件,包含gitlab-http.conf文件

/var/opt/gitlab/Nginx/conf/gitlab-http.conf    #gitlab核心Nginx配置文件

重启 Nginx、gitlab服务

[root@gitlab ~]# gitlab-ctl restart

[root@gitlab ~]# systemctl restart Nginx.service

访问可能出现报502。原因是Nginx用户无法访问gitlab用户的socket文件。 重启gitlab需要重新授权

[root@gitlab ~]# chmod -R o+x /var/opt/gitlab/gitlab-rails

今天的关于Mysql触发器在PHP项目中用来做信息备份、恢复和清空mysql触发器案例的分享已经结束,谢谢您的关注,如果想了解更多关于ASP实现SQL备份、恢复、Docker中容器的备份、恢复和迁移、docker容器备份、恢复和迁移volume方案、Gitlab备份、迁移、恢复和升级的相关知识,请在本站进行查询。

本文标签: