- 查看磁盘空间情况:
既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果!
存储到当前磁盘这是最简单,却是最不推荐的;服务器有多块硬盘,最好是把备份存放到另一块硬盘上;有条件就选择更好更安全的存储介质;
[root@nginx01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_nginx01-lv_root
287G 5.4G 279G 2% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
/dev/sda1 477M 42M 410M 10% /boot
192.168.80.100:/nfs 591G 912M 560G 1% /database
#编辑配置文件my.cnf
vim /etc/my.cnf
log-bin=/home/mybinlog/mysql-bin ##二进制日志目录及文件名前缀
binlog_format=mixed #二进制日志格式
log-error = /data/3309/mysql-err #错误日志位置
innodb_file_per_table = 1 #为每一个新数据表创建一个表空间文件
sync_binlog = 1 #写二进制日志的时候,同步到磁盘上面
innodb_file_per_table = 1 ##启用InnoDB表每表一文件,默认所有库使用一个表空间
show master status 时没有数据显示时在my.cnf加log-bin=mysql-bin
cp /data/3309/my.cnf /opt/backup/ #备份配置文件
- 创建备份目录:
上面我们使用命令看出/home下空间比较充足,所以可以考虑在/home保存备份文件;
cd /home
mkdir backupcd backup
- 创建备份Shell脚本:
注意把以下命令中的DatabaseName换为实际的数据库名称;
当然,你也可以使用其实的命名规则!(进入备份文件的目录下进行建脚本,并且要将脚本设置可执行的权限:chmod 555 all_databases.sh chmod 775 all_databases.sh )
|
输入/粘贴以下内容:(必须要进入绝对路径下进行备份)
/opt/lampp/bin/mysqldump -uroot -pwang --master-data --all-databases --routines --events >/home/mysqlbackup/mydb_all_`date +%F-%H:%M:%S`.sql;
注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 DatabaseName 替换为实际的数据库名;
- 添加可执行权限:
检测或安装 crontab
确认crontab是否安装:
执行 crontab 命令如果报 command not found,就表明没有安装
# crontab
-bash: crontab: command not found
如时没有安装 crontab,需要先安装它
添加计划任务
执行命令:
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。
输入以下内容并保存: 脚本的路径必须是绝对路径
*/1 * * * * /opt/lampp/bin/all_databases.sh
(每个*分别代表:分 时 日 月 周)
意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseName.sh”。
- 测试任务是否执行
很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!
如果任务执行失败了,可以通过以下命令查看任务日志:
# tail -f /var/log/cron
输出类似如下:
将文件复制到另一个IP地址中
scp mydb_all_2018-04-24-11.sql root@IP地址:~/