• mysql远程备份


    相关链接:
    https://blog.csdn.net/LiuHuan_study/article/details/81512831
    https://www.cnblogs.com/ryanzheng/p/8444128.html


    1.跨服务器备份
    原理:服务器A 192.168.100.200
    mysql root 123456

    服务器B 192.168.100.201
    mysql root 123456

    在A服务器上编写脚本 backmysql.sh 用于备份A服务器上MYSQL数据库制定库到B服务器上
    scp.exp 用于ssh免密码登录

    scp.exp

    #!/usr/bin/expect
    
    #FileName:scp.exp
    
    set timeout 60
    
    if { [llength $argv] < 2} {
    
    puts "Usage:"
    
    puts "$argv0 local_file remote_path"
    
    exit 1
    
    }
    
    set local_file [lindex $argv 0]
    
    set remote_path [lindex $argv 1]
    
    set passwd root123
    
    set passwderror 0
    
    spawn scp $local_file $remote_path
    
    expect {
    
    "*assword:*" {
    
    if { $passwderror == 1 } {
    
    puts "passwd is error"
    
    exit 2
    
    }
    
    set timeout 1000
    
    set passwderror 1
    
    send "$passwd
    "
    
    exp_continue
    
    }
    
    "*es/no)?*" {
    
    send "yes
    "
    
    exp_continue
    
    }
    
    timeout {
    
    puts "connect is timeout"
    
    exit 3
    
    }
    
    }
    View Code

    backmysql.sh

    #!/bin/bash
    
    backupdir=/home/backup
    
    mysql_bin_dir=/usr/bin    #mysqldump的路径
    
    databaseName=agm    #备份的数据库名字
    
    bakdatabaseName=backup_agm    #备份的数据库全部表的文件名
    
    mysqluser=root    #正式服务器A的mysql用户名
    
    mysqlpwd=123456    #正式服务器A的mysql密码
    
    targetServerUser=root    #测试服务器B的用户名
    
    targetServerIP=192.168.100.201    #测试服务器B的IP地址
    
    targetpath=/home/backup    #测试服务器B备份路径
    
    time=`date +%Y%m%d`    #当天的日期年月日
    
    #从数据库导出数据库备份文件
    $mysql_bin_dir/mysqldump -u$mysqluser -p$mysqlpwd $databaseName | gzip > $backupdir/$bakdatabaseName$time.sql.gz
    
    #保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
    find $backupdir -name "$bakdatabaseName*.sql.gz" -type f -mtime +2 -exec rm -f {} ; > /dev/null 2>&1
    
    #将备份文件发送到测试服务器B
    /home/backup/scp.exp $backupdir/$bakdatabaseName$time.sql.gz $targetServerUser@$targetServerIP:$targetpath/$bakdatabaseName$time.sql.gz
    View Code

    在B服务器上编写脚本updatemysql.sh用于恢复数据到B服务器mysql上

    updatemysql.sh

    #!/bin/bash
    
    # FileName:updatemysql.sh
    
    # This is a ShellScript For Auto DB Backup and Delete old Backup
    
    backupdir=/home/backup           #测试服务器B数据库备份文件路径
    
    mysql_bin_dir=/usr/bin            #测试服务器B的mysql的安装路径
    
    databaseName=agm               #数据库名字
    
    bakdatabaseName=backup_$databaseName      #备份的数据库的文件名
    
    mysqluser=root                     #测试服务器B的mysql用户名
    
    mysqlpwd=123456                    #测试服务器B的mysql密码
    
    time=` date +%Y%m%d `              #当天的日期:年月日
    
    #先删除前一天的数据库
    $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "drop database $databaseName;"
    
    #创建新的数据库
    $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "create database $databaseName;"
    
    #将备份的数据库文件导入到mysql中
    gzip -dc $backupdir/$bakdatabaseName$time.sql.gz | $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd $databaseName
    
    #保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
    find $backupdir -name "*.sql.gz" -type f -mtime +2 -exec rm -f {} ; > /dev/null 2>&1
    View Code

    安装软件 yum install crontabs
    ssh免密码登录
    mysql 远程登录权限

    backmysql.sh
    backupdir=/home/backup
    mysql_bin_dir=/usr/bin #mysqldump的路径
    databaseName=agm #备份的数据库名字
    bakdatabaseName=backup_agm #备份的数据库全部表的文件名
    mysqluser=root #正式服务器A的mysql用户名
    mysqlpwd=123456 #正式服务器A的mysql密码
    targetServerUser=root #测试服务器B的用户名
    targetServerIP=192.168.100.201 #测试服务器B的IP地址
    targetpath=/home/backup #测试服务器B备份路径
    time=`date +%Y%m%d` #当天的日期年月日
    #从数据库导出数据库备份文件
    $mysql_bin_dir/mysqldump -u$mysqluser -p$mysqlpwd $databaseName | gzip > $backupdir/$bakdatabaseName$time.sql.gz
    #保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
    find $backupdir -name "$bakdatabaseName*.sql.gz" -type f -mtime +2 -exec rm -f {} ; > /dev/null 2>&1
    #将备份文件发送到测试服务器B
    /home/backup/scp.exp $backupdir/$bakdatabaseName$time.sql.gz $targetServerUser@$targetServerIP:$targetpath/$bakdatabaseName$time.sql.gz

    scp.exp
    #!/usr/bin/expect
    #FileName:scp.exp
    set timeout 60
    if { [llength $argv] < 2} {
    puts "Usage:"
    puts "$argv0 local_file remote_path"
    exit 1
    }
    set local_file [lindex $argv 0]
    set remote_path [lindex $argv 1]
    set passwd root123
    set passwderror 0
    spawn scp $local_file $remote_path
    expect {
    "*assword:*" {
    if { $passwderror == 1 } {
    puts "passwd is error"
    exit 2
    }
    set timeout 1000
    set passwderror 1
    send "$passwd "
    exp_continue
    }
    "*es/no)?*" {
    send "yes "
    exp_continue
    }
    timeout {
    puts "connect is timeout"
    exit 3
    }
    }

    updatemysql.sh
    #!/bin/bash
    # FileName:updatemysql.sh
    # This is a ShellScript For Auto DB Backup and Delete old Backup
    backupdir=/home/backup #测试服务器B数据库备份文件路径
    mysql_bin_dir=/usr/bin #测试服务器B的mysql的安装路径
    databaseName=agm #数据库名字
    bakdatabaseName=backup_$databaseName #备份的数据库的文件名
    mysqluser=root #测试服务器B的mysql用户名
    mysqlpwd=123456 #测试服务器B的mysql密码
    time=` date +%Y%m%d ` #当天的日期:年月日
    #先删除前一天的数据库
    $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "drop database $databaseName;"
    #创建新的数据库
    $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "create database $databaseName;"
    #将备份的数据库文件导入到mysql中
    gzip -dc $backupdir/$bakdatabaseName$time.sql.gz | $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd $databaseName
    #保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
    find $backupdir -name "*.sql.gz" -type f -mtime +2 -exec rm -f {} ; > /dev/null 2>&1

  • 相关阅读:
    Matlab中的随机数生成器
    Matlab中的随机数生成器
    Matlab 函数返回矩阵
    Matlab 函数返回矩阵
    Matlab 函数返回矩阵
    矩阵同列同行复制原理
    矩阵同列同行复制原理
    Apache/RewriteRule
    使用google map v3添加经纬度信息
    评论:一站式学习C编程(升级版) (平装)
  • 原文地址:https://www.cnblogs.com/ylht/p/10173406.html
Copyright © 2020-2023  润新知