rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • mysql备份

mysql备份

备份

https://www.cnblogs.com/feichexia/p/MysqlDataBackup.html

mysql -u ddd -p 123456 auth | gzip > /home/hlvan/sql/auth_$(date +%Y%m%d_%H:%M:%S).sql.gz

https://blog.csdn.net/helloxiaozhe/article/details/77680255

格式:mysqldump -h链接ip -P(大写)端口 -u用户名 -p密码数据库名>d:XX.sql(路劲)

示例:mysqldump -h132.72.192.432 -P3307 -uroot -p8888 htgl > bak.sql;

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

http://www.cppblog.com/niewenlong/archive/2014/08/07/207927.aspx

https://www.cnblogs.com/Cherie/p/3309456.html

完整的数据库备份脚本

脚本可分为两个部分:

  1. 备份数据库
  2. 导入备份的数据文件
#!bin/bash

# 解析简单json
parse_json(){  
	echo "${1//\"/}" | sed "s/.*$2:\([^,}]*\).*/\1/"
}

# 数据库账号账号
user_name="xxx"
passwd="xxx"
host="xxx"
port="3306"
out_path="/kevin/backup/mysql/"

# 备份库
db_1=\{\"db_name\"db_name_1,\"user_name\":${user_name},\"passwd\":${passwd},\"host\":${host},\"port\":${port},\"out_path\":${out_path}\}
db_2=\{\"db_name\":db_name_2,\"user_name\":${user_name},\"passwd\":${passwd},\"host\":${host},\"port\":${port},\"out_path\":${out_path}\}
db_3=\{\"db_name\":db_name_3,\"user_name\":${user_name},\"passwd\":${passwd},\"host\":${host},\"port\":${port},\"out_path\":${out_path}\}
db_4=\{\"db_name\":db_name_4,\"user_name\":${user_name},\"passwd\":${passwd},\"host\":${host},\"port\":${port},\"out_path\":${out_path}\}
db_5=\{\"db_name\":db_name_5,\"user_name\":${user_name},\"passwd\":${passwd},\"host\":${host},\"port\":${port},\"out_path\":${out_path}\}

db_infos=($db_1 $db_2 $db_3 $db_4 $db_5)

# use anlian for test
# db_infos=($db_5 $db_4)

# 导入库账号密码
import_user_name="xxx"
import_passwd="xxx"
import_host="xxx"
import_port="3306"

# 导入库
import_db_1=\{\"db_name\":db_name_1,\"user_name\":${import_user_name},\"passwd\":${import_passwd},\"host\":${import_host},\"port\":${import_port}\}
import_db_2=\{\"db_name\":db_name_2,\"user_name\":${import_user_name},\"passwd\":${import_passwd},\"host\":${import_host},\"port\":${import_port}\}
import_db_3=\{\"db_name\":db_name_3,\"user_name\":${import_user_name},\"passwd\":${import_passwd},\"host\":${import_host},\"port\":${import_port}\}
import_db_4=\{\"db_name\":db_name_4,\"user_name\":${import_user_name},\"passwd\":${import_passwd},\"host\":${import_host},\"port\":${import_port}\}
import_db_5=\{\"db_name\":db_name_5,\"user_name\":${import_user_name},\"passwd\":${import_passwd},\"host\":${import_host},\"port\":${import_port}\}

# 导入远程数据库机器
remote_machine="hlvan@beta.hlvan.cn"

import_db_infos=($import_db_1 $import_db_2 $import_db_3 $import_db_4 $import_db_5)

# use anlian for test
# import_db_infos=($import_db_5 $import_db_4)

# 当前时间
#cur_time=$(date +%Y-%m-%d_%H:%M:%S)
cur_time=$(date +%Y-%m-%d)

for db_info in ${db_infos[@]} 
do

	db_name=$(parse_json $db_info "db_name")
	user_name=$(parse_json $db_info "user_name")
	passwd=$(parse_json $db_info "passwd")
	host=$(parse_json $db_info "host")
	port=$(parse_json $db_info "port")
	out_path=$(parse_json $db_info "out_path")

	echo "=========$db_name==========="
	echo "db_name:"$db_name
	echo "user_name:"$user_name
	echo "passwd:"$passwd
	echo "host:"$host
	echo "port:"$port
	echo "out_path:"$out_path
	echo "=========$db_name==========="
	
	# 备份文件路径
	file_path=$out_path${db_name}/${db_name}_${cur_time}.sql.gz
	
	# 备份文件名称
	file_name=${db_name}_${cur_time}.sql.gz
    
    # 备份
    mysqldump -u$user_name -p$passwd -h$host $db_name -P$port | gzip > $file_path

    
    # 使用本地机器备份的数据库数据远程导入对应的数据库中
    # scp $file_path $remote_machine:/tmp/

    # 导入备份
    #ssh $remote_machine "gunzip < /tmp/$file_name | mysql -u$user_name -p$passwd -h$host $db_name -P$port"
    
    # 立即删除临时文件
    #ssh $remote_machine "rm -rf /tmp/$file_name"

done

for import_db_info in ${import_db_infos[@]} 
do

	import_db_name=$(parse_json $import_db_info "db_name")
	import_user_name=$(parse_json $import_db_info "user_name")
	import_passwd=$(parse_json $import_db_info "passwd")
	import_host=$(parse_json $import_db_info "host")
	import_port=$(parse_json $import_db_info "port")

	echo "=========$import_db_name==========="
	echo "import_db_name:"$import_db_name
	echo "import_user_name:"$import_user_name
	echo "import_passwd:"$import_passwd
	echo "import_host:"$import_host
	echo "import_port:"$import_port
	echo "=========$import_db_name==========="
	
	# 备份文件名称
	#import_file_name=${import_db_name}_${cur_time}.sql.gz

    # 导入备份
    #ssh $remote_machine "gunzip < /tmp/$import_file_name | mysql -u$import_user_name -p$import_passwd -h$import_host $import_db_name -P$import_port"
    gunzip < $out_path${import_db_name}/${import_db_name}_${cur_time}.sql.gz | mysql -u$import_user_name -p$import_passwd -h$import_host $import_db_name -P$import_port

done

最近更新:: 2020/7/25 22:02
Contributors: luokaiwen