Open BruceOuyang opened 2 years ago
mysql -uroot -p your_database < your_backup_sql_name.sql
eg.
mysql -uroot -p db_user < /home/backup/data/20220218.user_order_store.sql
mysql -uroot -p
source /home/backup/data/20220218.user_order_store.sql
方式二,先登录 mysql,再执行
source
指令
mysql> grant select, show view, lock tables, trigger, reload, super, replication client, process on *.* to dumper@'localhost';
Query OK, 0 rows affected, 1 warning (0.20 sec)
mysql> flush privileges; Query OK, 0 rows affected (0.05 sec)
> 用户名:dumper 密码:(无)
2. 编辑 `crontab`
crontab -e 20 18 * /www/server/mysql/bin/mysqldump -udumpuser -B -F -R -x --master-data=2 --databases db_biz1 db_biz2 dbbiz3 | gzip > /home/databak/gzip/biz$(date +%F).sql.gz
### 脚本方式
1.创建脚本 biz_dumper.sh,输入如下内容
mysql_user="dumper" mysql_host="localhost" mysql_port="3306" mysql_charset="utf8mb4" mysql_bin=/www/server/mysql/bin
databases="db_biz01 db_biz02 db_biz03"
backup_location=/home/databak/bizdata
expire_backup_delete="ON" expire_days=7 backuptime=`date +%Y%m%d%H%M%S` backup_dir=$backup_location
echo $(date +"%Y-%m-%d %H:%M:%S")" -----------------------------------------------------------" echo $(date +"%Y-%m-%d %H:%M:%S")" Dumper Start Daily Work~~~" echo $(date +"%Y-%m-%d %H:%M:%S")
echo $(date +"%Y-%m-%d %H:%M:%S")" step 1 check mysqld service is ok or not"
mysql_ps=ps -ef |grep mysql |wc -l
mysql_listen=netstat -an |grep LISTEN |grep $mysql_port|wc -l
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
echo $(date +"%Y-%m-%d %H:%M:%S")" ERROR:MySQL is not running! backup stop!"
exit
else
echo $(date +"%Y-%m-%d %H:%M:%S")" mysqld is running"
fi
echo $(date +"%Y-%m-%d %H:%M:%S")
echo $(date +"%Y-%m-%d %H:%M:%S")" step 2 run mysqldump command"
$mysql_bin/mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -B -F -R -x --master-data=2 --databases $databases | gzip > $backupdir/biz$backup_time.sql.gz
flag=echo $?
if [ $flag == "0" ];then
echo $(date +"%Y-%m-%d %H:%M:%S")" all-biz data success backup to $backupdir/biz$backup_time.sql.gz"
else
echo $(date +"%Y-%m-%d %H:%M:%S")" all-biz data backup fail!"
exit
fi
echo $(date +"%Y-%m-%d %H:%M:%S")
echo $(date +"%Y-%m-%d %H:%M:%S")" step 3 delete old-bak data(expire_days=$expire_days)"
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf
echo $(date +"%Y-%m-%d %H:%M:%S")" Expired backup data delete complete!"
fi
echo $(date +"%Y-%m-%d %H:%M:%S")
echo $(date +"%Y-%m-%d %H:%M:%S")" Dumper Finished Daily Work........."
echo $(date +"%Y-%m-%d %H:%M:%S")" -----------------------------------------------------------"
echo ""
echo ""
2.设置权限
chmod +x biz_dumper.sh
3.设置crontab
crontab -e 0 4 * cd /home/databak;sh biz_dumper.sh >> dumper.log 2>> dumper.log
备份
1、备份所有数据库
2、备份指定数据库
eg.: mysqldump -uroot -p --databases db_user db_order db_store > /home/backup/data/20220218.user_order_store.sql
登录 mysql
mysql -uroot -p
执行 source 指令
source /your_path/your_backup_sql_name.sql
eg. source /home/backup/data/20220218.all.sql