mysql如何备份

79次阅读
没有评论

共计 2435 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 mysql 如何备份,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

mysqlhotcopy 是一个 Perl 脚本,最初由 Tim Bunce 编写并提供。它使用 LOCK TABLES、FLUSH
TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy 只用于备份 MyISAM。它运行在 Unix 和 NetWare 中 [@more@] 以下为引用的内容:

#!/bin/sh

# Name:mysqlbackup.sh

# PS:MySQL DataBase Backup,Use mysqlhotcopy script.

# Last Modify:2008-06-12

# 定义变量,请根据具体情况修改

# 定义脚本所在目录

scriptsDir=`pwd`

# 数据库的数据目录

dataDir=/var/lib/mysql

# 数据备份目录

tmpBackupDir=/tmp/mysqlblackup

backupDir=/backup/mysql

# 用来备份数据库的用户名和密码

mysqlUser=root

mysqlPWD= you password

# 如果临时备份目录存在,清空它,如果不存在则创建它

if [[-e $tmpBackupDir]]; then

rm -rf $tmpBackupDir/*

else

mkdir $tmpBackupDir

fi

# 如果备份目录不存在则创建它

if [[! -e $backupDir]];then

mkdir $backupDir

fi

# 得到数据库备份列表,在此可以过滤不想备份的数据库

for databases in `find $dataDir -type d |

sed -e s//var/lib/mysql/// |

sed -e s/test// do

if [[$databases ==]]; then

continue

else

# 备份数据库

/usr/bin/mysqlhotcopy –user=$mysqlUser –password=$mysqlPWD -q $databases $tmpBackupDir

dateTime=`date +%Y.%m.%d %H:%M:%S `

echo $dateTime Database:$databases backup success! MySQLBackup.log

fi

done

# 压缩备份文件

date=`date -I`

cd $tmpBackupDir

tar czf $backupDir/mysql-$date.tar.gz ./

#End 完成

加入到 crontab 中设置每周 5 运行

0 0 * * 5 /backup/blackup.sh

注意: 恢复数据库到备份时的状态

mysqlhotcopy 备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /var/lib/mysql/)目录下即可,同时要注意权限的问题,如下例:

shell cp -rf db_name /var/lib/mysql/

shell chown -R mysql:mysql /var/lib/mysql/ (将 db_name 目录的属主改成 mysqld 运行用户)

本套备份策略只能恢复数据库到最后一次备份时的状态,要想在崩溃时丢失的数据尽量少应该更频繁的进行备份,要想恢复数据到崩溃时的状态请使用主从复制机制(replication)。

小技巧:

不想写密码在 shell 中的话, 可以在 root 的 home 目录下建立一个.my.cnf 文件,以便让 mysqlhotcopy 从中读取用户名 / 密码。

[mysqlhotcopy]

user=root

password=YourPassword

然后安全起见,chmod 一下。

chmod 600 ~/.my.cnf

附:mysqlhotcopy 常用参数:

以下为引用的内容:

·      –allowold   如果目标存在不放弃(加上一个_old 后缀重新命名它)。

·      –checkpoint=db_name.tbl_name 在指定的 db_name.tbl_name 插入检查点条目。

·      —debug     启用调试输出。

·      –dryrun,-n   报告动作而不执行它们。

·      –flushlog   所有表锁定后刷新日志。

·      –keepold     完成后不删除以前 (重新命名的) 的目标。

·      — method=command   复制方法(cp 或 scp)。

·      –noindices   备份中不包括全部索引文件。这样使备份更小、更快。可以在以后用 myisamchk -rq 重新构建索引。

·      –password=password,-p password 当连接服务器时使用的密码。请注意该选项的密码值是不可选的,不象其它 MySQL 程序。

·      –port=port_num,-P port_num 当连接本地服务器时使用的 TCP/IP 端口号。

·      –quiet,-q   除了出现错误时保持沉默。

·      –regexp=expr   复制所有数据库名匹配给出的正则表达式的数据库。

·      –socket=path,-S path 用于连接的 Unix 套接字文件。

·      –suffix=str   所复制的数据库名的后缀。

·      –tmpdir=path   临时目录(代替 /tmp)。

·      –user=user_name,-u user_name 当连接服务器时使用的 MySQL 用户名。

mysqlhotcopy 从选项文件读取 [client] 和[mysqlhotcopy]选项组。要想执行 mysqlhotcopy,你必须可以访问备份的表文件,具有那些表的 SELECT 权限和 RELOAD 权限(以便能够执行 FLUSH TABLES)。

关于“mysql 如何备份”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计2435字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)