mysql服务器ip:192.168.0.10
备份服务器ip:192.168.0.11
数据库名称:db_product
思路:在mysql服务器A上创建一个用户分配权限专门用于数据库备份,A服务器可以是数据库集群中的slave之一。找一个磁盘宽裕的服务器B,安装mysql的客户端。
在服务器B上执行mysqldump命令备份数据库。
只安装mysql客户端的教程:https://www.cnblogs.com/xxoome/p/8313453.html
#创建用户,用户名为【backupuser】并限制客户端连接ip,【192.168.0.11】为B服务器的ip CREATE USER 'backupuser'@'192.168.0.11' IDENTIFIED BY 'pwd'; #授予用户权限,限制了可以访问的数据库 GRANT ALL ON db_product.* TO 'backupuser'@'192.168.0.11'; flush privileges;
编写脚本
#创建脚本
touch mysql_backup.sh
#增加可执行权限
chmod +x mysql_backup.sh
脚本内容
#!/bin/sh # File: /usr/local/xiaohb/mysql_backup.sh # Database info DB_NAME="db_product" DB_USER="backupuser" DB_PASS="pwd" DB_HOST="192.168.0.10" DB_PORT="3306" BIN_DIR="/usr/bin" BCK_DIR="/usr/local/xiaohb/mysql_backup" DATE=`date +%Y%m%d_%H%M%S` mkdir -p $BCK_DIR #$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME > $BCK_DIR/$DB_NAME.dump_$DATE.sql # 为了减小磁盘空间的消耗,这里使用gzip压缩 $BIN_DIR/mysqldump --opt -h$DB_HOST -P$DB_PORT -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/$DB_NAME.dump_$DATE.sql.gz
创建定时任务
#编辑定时任务 crontab -e #若crontab没有安装 yum install -y vixie-cron #每天凌晨1点执行 0 1 * * * /usr/local/xiaohb/mysql_backup.sh #重载crontab service crond reload