mysqldump
[root@localhost node]# cat /root/mysqlbeifen.sh #!/bin/bash # 定義引數 CONTAINER_NAME="mysql" HOST_BACKUP_DIR="/bak" REMOTE_MACHINE_IP="192.168.0.29" REMOTE_TARGET_DIR="/bak/cd" MYSQL_USER="root" MYSQL_PASSWORD="pass123" # 獲取MySQL容器的ID CONTAINER_ID=$(docker ps -f "name=$CONTAINER_NAME" -q) if [ -z "$CONTAINER_ID" ]; then echo "MySQL容器不存在,請確保MySQL容器正在執行." exit 1 fi # 建立備份檔名 BACKUP_FILE="mysql_$(date +%Y%m%d_%H%M%S).sql" # 備份MySQL資料庫到主機 docker exec $CONTAINER_ID mysqldump --max_allowed_packet=512M -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases > $HOST_BACKUP_DIR/$BACKUP_FILE if [ $? -eq 0 ]; then echo "MySQL資料庫已成功備份到主機." else echo "備份過程中發生錯誤,請檢查日誌." exit 1 fi # 壓縮備份檔案為tar.gz格式 tar -czvf $HOST_BACKUP_DIR/$BACKUP_FILE.tar.gz -C $HOST_BACKUP_DIR $BACKUP_FILE if [ $? -eq 0 ]; then echo "備份檔案已成功壓縮為tar.gz格式." else echo "壓縮過程中發生錯誤,請檢查日誌." exit 1 fi # 遠端複製到其他機器 scp $HOST_BACKUP_DIR/$BACKUP_FILE.tar.gz $REMOTE_MACHINE_IP:$REMOTE_TARGET_DIR/ if [ $? -eq 0 ]; then echo "備份檔案已成功遠端複製到其他機器." else echo "遠端複製過程中發生錯誤,請檢查網路連線和遠端機器的許可權." exit 1 fi # 刪除本機的備份檔案 rm -rf $HOST_BACKUP_DIR/$BACKUP_FILE $HOST_BACKUP_DIR/$BACKUP_FILE.tar.gz if [ $? -eq 0 ]; then echo "本機上的備份檔案已成功刪除." else echo "刪除本機備份檔案過程中發生錯誤,請檢查許可權." exit 1 fi
mysql備份工具innobackupex
#!/bin/bash innobackupex --defaults-file=/docker/mysql/conf/my.cnf --host=127.0.0.1 --port=3306 --user=root --password='111111' --datadir=/docker/mysql/data/ --stream=tar ./ | gzip | ssh root@192.168.0.29 \ "cat - > /bak/zhi/`date +%Y-%m-%d`.tar.gz"