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