共计 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 如何备份”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。