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