Home > Dịch vụ Cloud > Bài viết hữu ích > Hướng dẫn backup toàn bộ database trên VPS

Hướng dẫn backup toàn bộ database trên VPS

Với trường hợp VPS cấu hình hoạt động nhiều website bên trong, việc backup lần lượt từng database (cơ sở dữ liệu) có thể sẽ rất mất thời gian
Sau đây, TENTEN sẽ hướng dẫn các bạn cách backup database tự động bằng việc sử dụng shell script

B1: thực hiện SSH tới VPS
Sử dụng lệnh vi mysqlbackup.sh      (tạo file mysqlbackup.sh)
Sau đó nhập nội dung bên dưới 

Tại dòng : backup_parent_dir="/var/backups/mysql              (là đường dẫn lưu trữ các file backup database , bạn có thể chỉnh lại đường dẫn tùy ý)

mysql_user="root"   (là tài khoản root của MySQL)
mysql_password="password"   (điền password cụ thể)
Sau khi chỉnh sửa xong , tiến hành save lại
#!/bin/bash
# Simple script to backup MySQL databases

# Parent backup directory
backup_parent_dir="/var/backups/mysql"

# MySQL settings
mysql_user="root"
mysql_password=""

# Read MySQL password from stdin if empty
if [ -z "${mysql_password}" ]; then
  echo -n "Enter MySQL ${mysql_user} password: "
  read -s mysql_password
  echo
fi

# Check MySQL password
echo exit | mysql --user=${mysql_user} --password=${mysql_password} -B 2>/dev/null
if [ "$?" -gt 0 ]; then
  echo "MySQL ${mysql_user} password incorrect"
  exit 1
else
  echo "MySQL ${mysql_user} password correct."
fi

# Create backup directory and set permissions
backup_date=`date +%Y_%m_%d_%H_%M`
backup_dir="${backup_parent_dir}/${backup_date}"
echo "Backup directory: ${backup_dir}"
mkdir -p "${backup_dir}"
chmod 700 "${backup_dir}"

# Get MySQL databases
mysql_databases=`echo 'show databases' | mysql --user=${mysql_user} --password=${mysql_password} -B | sed /^Database$/d`

# Backup and compress each database
for database in $mysql_databases
do
  if [ "${database}" == "information_schema" ] || [ "${database}" == "performance_schema" ]; then
        additional_mysqldump_params="--skip-lock-tables"
  else
        additional_mysqldump_params=""
  fi
  echo "Creating backup of \"${database}\" database"
  mysqldump ${additional_mysqldump_params} --user=${mysql_user} --password=${mysql_password} ${database} | gzip > "${backup_dir}/${database}.gz"
  chmod 600 "${backup_dir}/${database}.gz"
done
B2: phân quyền 777 cho mysqlbackup.sh 
Sử dụng lệnh : chmod 777 mysqlbackup.sh 

B3 : thực thi file mysqlbackup.sh
Sử dụng lệnh : sh mysqlbackup.sh

Sau khi hoàn tất, các file database sẽ được lưu trong thư mục đã chỉ định trước đó