2009-01-19
Ubuntu定时备份Mysql
1.cron介绍
cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做crontab的命令允许用户提交、编辑或删除相应的作业。下面是crontab的格式:
分< >时< >日< >月< >星期< >要运行的命令
crontab命令的一般形式为:
crontab[-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
2.mysqldump介绍
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除。
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert
在INSERT命令中加入DELAY选项
-F
使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f
使用这个选项,即使有错误发生,仍然继续导出
-l
使用这个选项,导出表的时候服务器将会给表加锁。
-t
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d
这个选项使的mysqldump命令不创建INSERT语句。
--opt
此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
-q
这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path
这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命 名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
-w "WHERE Clause" or -where = "Where clause "
使用这一选项来过筛选将要放到 导出文件的数据
3.进行备份
建立备份文件夹 /mysqlbak
在 /usr/sbin 文件下建立bakmysql脚本
#!/bin/sh
name=$(date +%Y-%m-%d)
mysqldump database -ubackup -p123456 |gzip>/mysqldata/mysql$name.gz
在ubuntu下下可以选择两种任务方案
第一:
查看 /etc/crontab 文件
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
第一个是指每天0点17分执行/etc/cron.hourly下的所有任务,后面的都类似。
m 分钟
h 小时
dom 即day of month吧,就是日期
mon 即month,月份
dow 即day of week 星期
run-parts 是执行后面指定的目录下的任务,不指定这个参数则为执行单个指定的文件。
根据这些我们就可以很轻松的进行任务,直接把我们的脚本根据自己的需求放入到其中的文件夹中即可。
第二:
1.crontab -e 编辑增加任务。
0 0 * * * /usr/sbin/bakmysql
表示在每天的0点0分执行/usr/sbin/bakmysql脚本。
2.crontab -l 查看我们的任务。
3./etc/init.d/cron restart 重启crond。
cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做crontab的命令允许用户提交、编辑或删除相应的作业。下面是crontab的格式:
分< >时< >日< >月< >星期< >要运行的命令
crontab命令的一般形式为:
crontab[-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
2.mysqldump介绍
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除。
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert
在INSERT命令中加入DELAY选项
-F
使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f
使用这个选项,即使有错误发生,仍然继续导出
-l
使用这个选项,导出表的时候服务器将会给表加锁。
-t
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d
这个选项使的mysqldump命令不创建INSERT语句。
--opt
此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
-q
这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path
这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命 名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
-w "WHERE Clause" or -where = "Where clause "
使用这一选项来过筛选将要放到 导出文件的数据
3.进行备份
建立备份文件夹 /mysqlbak
在 /usr/sbin 文件下建立bakmysql脚本
#!/bin/sh
name=$(date +%Y-%m-%d)
mysqldump database -ubackup -p123456 |gzip>/mysqldata/mysql$name.gz
在ubuntu下下可以选择两种任务方案
第一:
查看 /etc/crontab 文件
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
第一个是指每天0点17分执行/etc/cron.hourly下的所有任务,后面的都类似。
m 分钟
h 小时
dom 即day of month吧,就是日期
mon 即month,月份
dow 即day of week 星期
run-parts 是执行后面指定的目录下的任务,不指定这个参数则为执行单个指定的文件。
根据这些我们就可以很轻松的进行任务,直接把我们的脚本根据自己的需求放入到其中的文件夹中即可。
第二:
1.crontab -e 编辑增加任务。
0 0 * * * /usr/sbin/bakmysql
表示在每天的0点0分执行/usr/sbin/bakmysql脚本。
2.crontab -l 查看我们的任务。
3./etc/init.d/cron restart 重启crond。