Linux下mysql数据库如何定期备份与删除

Linux下mysql数据库如何定期备份与删除,第1张

首先,创建备份文件夹mkdir /mysql/mysqldata_bakeup;创建并编辑文件在路径 /usr/sbin/bakmysql,命令:vi /usr/sbin/bakmysql。此时会在/usr/sbin/路径下创建bakmysql文件,并进入bakmysql编辑状态,接着输入fn = ` date +%Y%m%d ` tar zcvf /mysql/mysqldata_bakeup/mysql$fn.tar.gz /mysql/data 然后修改文件bakmysql属性,使其可执行chmod +x /usr/sbin/bakmysql 修改/etc/crontab vi /etc/crontab 进入编辑状态,在最下面添加:01 3 * * * root /usr/sbin/bakmysql

01 3 是每天凌晨3:01执行 bakmysql文件懂了吗?

一、使用phpmyadmin工具批量删除mysql数据库

使用phpmyadmin数据库管理工具进行删除,这是一个传统的方法,在任何php虚拟主机中,你都可以 *** 作。下面是 *** 作过程介绍:

1、登录phpmyadmin。选择你的mysql数据库名进入——点击结构——选择您要删除的数据表——“选中项”中选择删除,执行删除表 *** 作。如下图:

PHPMYADMIN使用技巧:如何快速批量删除Mysql数据库中的数据表 image00114 150x150

二、使用php脚本完成批量删除

无忧主机()小编从网上找了一段php代码,也可以帮我们快速实现删除。如果你对phpmyadmin工具“敏感”,可以使用下面的方式来实现快速删除mysql数据库表。 在下面的代码复制到记事本后,配置过程中你要注意几个问题:

1、 正确配置你mysql数据库信息。这个你可以直接咨询你的空间商就可以获得啦。

2、 正确设置要删除的数据库表前缀,这个非常重要,填写错误,将 *** 作错误。请你务必确认你的数据库表前缀哦,数据库表前缀你可以在phpmyadmin中查询到。一般都是xx_开头的。 设置好后,将这段代码另存为.php文件(如51php.php)然后上传到您空间的网站根目录(public_html)。上传完毕,直接用域名/51php.php,就可以删除了。 代码如下:

<?php

mysql_connect('localhost','数据库用户名','数据库密码')

mysql_select_db('数据库名称')

$rs=mysql_query('show tables')

while($arr=mysql_fetch_array($rs))

{

$TF=strpos($arr[0],'51php_')

if($TF===0){

$FT=mysql_query("drop table $arr[0]")

if($FT){

echo "$arr[0] 删除成功!<br>"

}

}

}

?>

以上两种方法都可批量删除数据表,特别提醒一下,数据是无价的, *** 作数据表的时候一定要先做好备份。免得误删除数据是无法恢复的。如果您不会备份,麻烦您参考:

360度全方位讲解无忧网站数据库备份

Mysql数据库管理利器:phpmyadmin详细使用教程

定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行 *** 作,需人为协调数据库数据的备份前后一致性。

使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我们就可重新生成数据库。使用mysqldump的方法如下:

% mysqldump --opt testdb | gzip >/data/backup/testdb.bak

#--opt选项会对转储过程进行优化,生成的备份文件会小一点,后的管道 *** 作会进行数据压缩

% mysqldump --opt testdb mytable1,mytable2 | gzip >/data/backup/testdb_mytable.bak

#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔

--opt选项还可激活--add-drop-table选项,它将会在备份文件的每条CREATE TABLE前加上一条DROP TABLE IF EXISTS语句。这可方便进行数据表的更新,而不会发生“数据表已存在”的错误。

用mysqldump命令还可直接把数据库转移到另外一台服务器上,不用生成备份文件。重复执行可定期更新远程数据库。

% mysqladmin -h remote_host create testdb

% mysqldump --opt testdb | mysql -h remote_host testdb

另外还可通过ssh远程调用服务器上的程序,如:

% ssh remote_host mysqladmin create testdb

% mysqldump --opt testdb | ssh remote_host mysql testdb

通过直接拷贝系统文件的方式备份数据库,在备份时,要确保没有人对数据库进行修改 *** 作。要做到这点,最好关闭服务器。如果不能关闭的,要以只读方试锁定有关数据表。下面是一些示例:

% cp -r db /backup/db #备份db数据库到/backup/db目录

% cp table_name.* /backup/db#只备份table_name数据表

% scp -r db remotehot:/usr/local/mysql/data#用scp把数据库直接拷贝到远程服务器

在把数据库直接拷贝到远程主机时,应注意两台机器必须有同样的硬件结构,或者将拷贝的数据表全部是可移植数据表类型。

使用mysqlhotcopy工具,它是一个Perl DBI脚本,可在不关闭服务器的情况下备份数据库,它主要的优点是:

它直接拷贝文件,所以它比mysqldump快。

可自动完成数据锁定工作,备份时不用关闭服务器。

能刷新日志,使备份文件和日志文件的检查点能保持同步。

下面是该工具的使用示例:

% mysqlhotcopy db/bakcup/ #把db数据库备份到backup/db目录里,会自动创建一个db目录

使用BACKUP TABLE语句进行备份,该语句最早出现在MySQL 3.23.25版本中,仅适用于MyISAM数据表。用法如下:

mysql>BACKUP TABLE mytable TO '/backup/db' #把mytable数据表备份到/backup/db目录下

为了执行该语句,你必须拥有那些表的FILE权限和SELECT权限,备份目录还必须是服务器可写的。该语句执行时,会先把内存中的数据写入磁盘,再把各个数据表的.frm(表结构定义文件)、.MYD(数据)文件从数据目录拷贝到备份目录。它不拷贝.MYI(索引)文件,因为它能用另外两个文件重建。BACKUP TABLE语句备份时,依次锁定数据表,当同时备份多个数据表时,数据表可能会被修改,所以备份0完成时,备份文件中的数据和现时数据表中的数据可能会有差异,为了消除该差异,我们可用只读方式锁定数据表,在备份完成后再解锁。如:

mysql>LOCK TABLES tb1 READ,tb2 READ

mysql>BACKUP TABLE tb1,tb2 TO 'backup/db'

mysql>UNLOCK TABLES

使用BACKUP TABLE语句备份的数据表可用RESTORE TABLE重新加载到服务器。

InnoDB和BDB数据库也可用mysqldump和直接拷贝法进行备份。使用直接拷贝法时应注意需把组成InnoDB和BDB数据库的所有文件都拷贝下来,如InnoDB的.frm文件、日志文件和表空间配置文件;BDB的数据文件、日志文件等。

使用镜像机制进行备份,我们可用SLAVE STOP语句挂起从服务器的镜像,在从服务器上通过直接拷贝法或其它工具制作备份。备份完成,用SLAVE START重新启动镜像,从服务器重新与主服务器同步,接收备份时主服务器所做的修改。

在MySQL中没有为数据库重命名的命令,但我们可用mysqldump转储数据库,再创建一个新的空数据库,把转储文件加载到该新数据库,这样就完成数据库重命名的工作。如:

% mysqldump old_db >db.sql#转储db数据库数据

% mysqladmin create new_db#新建一个空的数据库

% mysql new_db <db.sql #把db数据库的数据加载到新的数据库中

% mysqladmin drop old_db #删除旧的数据库

一个更简单的重命名数据库的方法是直接修改数据库目录名,但该方法不适用于InnoDB和BDB数据库。注意,在更名后,需在权限表中更新相关数据表信息,需执行以下语句:

mysql>UPDATE db SET db='new_db' WHERE db='old_db'

mysql>UPDATE tables_priv SET db='new_db' WHERE db='old_db'

mysql>UPDATE columns_priv SET db='new_db' WHERE db='old_db'

mysql>UPDATE host SET db='new_db' WHERE db='old_db'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6699608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存