使用此脚本将远程服务器的数据库导入,且显示sql文件在 back_dir=”/root/databases_save
- 这是本地mysql的情况
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 
 | #!/bin/bash
 #实现将远程数据库sql导入到本地数据库且将sql文件存放本地目录用于以后传输
 
 #target mysql info
 mysql_host_remote="39.108.159.175"
 mysql_user_remote="root"
 mysql_password_remote="0800"
 
 #local mysql info
 mysql_host_local="localhost"
 mysql_user_local="root"
 mysql_password_local="0800"
 
 #sql back directory
 root_dir="/root"
 back_dir="/root/databases_save"
 data_dir="databases"
 store_dir="databases"
 if [ ! -d $back_dir ]; then
 mkdir -p $back_dir
 fi
 
 #备份的数据库数组
 db_arr=$(echo "show databases;" | mysql -u$mysql_user_remote -p$mysql_password_remote -h$mysql_host_remote)
 #不需要备份的单例数据库
 nodeldb="information_schema"
 nodeldb2="performance_schema"
 nodeldb3="Database"
 
 
 #当前日期
 #date = $(date '+%Y%m%d')
 
 date=$(date -d '+0 days' +%Y%m%d)
 
 #zip 打包
 #zipname="sql_save_"$date".zip"
 
 #cd 到备份目录
 cd $back_dir
 
 #循环备份并且导入到本地数据库
 for dbname in ${db_arr}
 do
 #if [[ $dbname != $nodeldb ]] && [[ $dbname != $nodeldb2 ]] && [[ $dbname != $nodeldb3 ]]; then
 if [ $dbname == "test" ]; then
 sqlfile=$dbname-$date".sql"
 #
 mysqldump  --add-drop-database -u$mysql_user_remote -p$mysql_password_remote -h$mysql_host_remote -B $dbname > $sqlfile
 #
 #$(echo "create database "$dbname | mysql -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local)
 #mysqldump -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local $dbname < $sqlfile
 #
 $(echo "source "$back_dir"/"$sqlfile | mysql -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local)
 fi
 done
 
 # .tar打包所有sql可用于以后传输
 #tar -zcPpf $back_dir/$zipname --directory / $back_dir
 
 #打包后删除sql文件
 #if [ $? = 0 ]; then
 #	rm *.sql
 #fi
 
 #mysqldum 到本地数据库
 
 
 
 
 | 
- 如果使用docker部署本地mysql 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 
 | #!/bin/bash
 #实现将远程数据库sql导入到本地数据库且将sql文件存放本地目录用于以后传输
 
 #target mysql info
 mysql_host_remote="192.168.0.100"
 mysql_user_remote="root"
 mysql_password_remote="123"
 
 #local mysql info
 mysql_host_local="localhost"
 mysql_user_local="root"
 mysql_password_local="123"
 
 #sql back directory
 back_dir="/root/mysql/data/databases_save"
 source_dir="/var/lib/mysql/databases_save"
 if [ ! -d $back_dir ]; then
 mkdir -p $back_dir
 fi
 
 #
 #
 
 #备份的数据库数组
 db_arr=$(echo "show databases;" | mysql -u$mysql_user_remote -p$mysql_password_remote -h$mysql_host_remote)
 #不需要备份的单例数据库
 nodeldb="information_schema"
 nodeldb2="performance_schema"
 nodeldb3="mysql"
 nodeldb4="sys"
 nodeldb5="Database"
 
 
 #当前日期
 #date = $(date '+%Y%m%d')
 
 date=$(date -d '+0 days' +%Y%m%d)
 
 #zip 打包
 #zipname="sql_save_"$date".zip"
 
 #cd 到备份目录
 cd $back_dir
 
 #循环备份并且导入到本地数据库
 for dbname in ${db_arr}
 do
 if [[ $dbname != $nodeldb ]] && [[ $dbname != $nodeldb2 ]] && [[ $dbname != $nodeldb3 ]] && [[ $dbname != $nodeldb4 ]] && [[ $dbname != $nodeldb5 ]]; then
 #if [ $dbname == "test" ]; then
 sqlfile=$dbname-$date".sql"
 #
 mysqldump --add-drop-database -u$mysql_user_remote -p$mysql_password_remote -h$mysql_host_remote -B $dbname > $sqlfile
 #
 #$(echo "create database "$dbname | mysql -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local)
 #mysqldump -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local $dbname < $sqlfile
 #
 $(echo "source "$source_dir"/"$sqlfile | docker exec -i mysql-server mysql -u$mysql_user_local -p$mysql_password_local -h$mysql_host_local)
 fi
 done
 
 # .tar打包所有sql可用于以后传输
 #tar -zcPpf $back_dir/$zipname --directory / $back_dir
 
 #打包后删除sql文件
 #if [ $? = 0 ]; then
 #	rm *.sql
 #fi
 
 #mysqldum 到本地数据库
 
 
 
 
 
 
 |