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

1
1570

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 đó

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Free wing Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Free wing
Guest
Free wing

Thanks