Làm khá giống với nhiều người.
Tập lệnh cần chạy trên máy lưu trữ cơ sở dữ liệu MySql (Đây là máy linux).
=> Tạo tập lệnh bash hoặc perl cục bộ (hoặc bất kỳ thứ gì) "myscript" trên máy này "A"
Sao lưu phải được lưu vào cùng một máy chủ mà cơ sở dữ liệu đang bật.
=> trong tập lệnh "myscript", bạn chỉ có thể sử dụng mysqldump. Từ bản sao lưu cục bộ, bạn có thể tạo tarball mà bạn gửi qua scp tới máy từ xa của bạn. Cuối cùng, bạn có thể đặt tập lệnh sao lưu của mình vào crontab (crontab -e).
Một số gợi ý và chức năng để giúp bạn bắt đầu như tôi sẽ không gửi toàn bộ kịch bản của tôi, nó không làm đầy đủ các thủ thuật nhưng không xa:
#!/bin/sh
...
MYSQLDUMP="$(which mysqldump)"
FILE="$LOCAL_TARBALLS/$TARBALL/mysqldump_$db-$SNAPSHOT_DATE.sql"
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE && $GZIP $GZ_COMPRESSION_LEVEL $FILE
function create_tarball()
{
local tarball_dir=$1
tar -zpcvf $tarball_dir"_"$SNAPSHOT_DATE".tar.gz" $tarball_dir >/dev/null
return $?
}
function send_tarball()
{
local PROTOCOLE_="2"
local IPV_="4"
local PRESERVE_="p"
local COMPRESSED_="C"
local PORT="-P $DESTINATION_PORT"
local EXECMODE="B"
local SRC=$1
local DESTINATION_DIR=$2
local DESTINATION_HOST=$DESTINATION_USER"@"$DESTINATION_MACHINE":"$DESTINATION_DIR
local COMMAND="scp -$PROTOCOLE_$IPV_$PRESERVE_$COMPRESSED_$EXECMODE $PORT $SRC $DESTINATION_HOST &"
echo "remote copy command: "$COMMAND
[[ $REMOTE_COPY_ACTIVATED = "Yes" ]] && eval $COMMAND
}
Sau đó, để xóa các tập tin cũ hơn "ngày", bạn có thể xem người đàn ông tìm thấy và tập trung vào các tùy chọn mtime và mới hơn.
Chỉnh sửa: như đã nói ở trên, không có sự quan tâm đặc biệt nào khi thực hiện sao lưu cục bộ ngoại trừ tệp temproray để có thể gửi tarball dễ dàng và xóa nó khi được gửi.
** KHÔNG BAO GIỜ ** sao lưu địa điểm trong máy sản xuất. Nếu máy chủ sản xuất của bạn chết, bạn sao lưu cũng biến mất. – ajreal