定时导出mysql本地数据替换远程数据库数据脚本分享_linux shell

复制代码 代码如下:

需求在每天的5点将192.168.3.5上ser_a库中的tb_a表导入到192.168.3.6上的ser_b库中,表名还叫tb_a
服务端脚本/usr/shell_clubs/auto_sql/server.sh
#!/bin/sh
#code by scpman
/usr/bin/find /usr/shell_clubs/auto_sql/ -name "*.sql" -mtime +3|xargs rm #del old sql
#get new sql
time=`date +%Y%m%d`
mysqldump -uroot -p123456 ser_a tb_a > /usr/shell_clubs/auto_sql/`date +%Y%m%d`_tb_a.sql
sleep 2
ssh -p10022 192.168.3.6 <<EEE
/usr/shell_clubs/auto_sql/client.sh
EEE
说明:服务端脚本会导出指定表,并通过公钥ssh到目标机器上,调用客户端脚本
客户端脚本/usr/shell_clubs/auto_sql/client.sh
#!/bin/sh
#code by scpman
#client.sh
time=`date +%Y%m%d`
/usr/bin/find /usr/shell_clubs/auto_sql/ -name "*.sql" -mtime +3|xargs rm #del old sql
/usr/local/bin/rsync -vzrtopgl --progress  root@192.168.3.5::all/usr/shell_clubs/auto_sql/`date +%Y%m%d`_tb_a.sql /usr/shell_clubs/auto_sql/;
counts=`ls -l /usr/shell_clubs/auto_sql/ | grep "$time" | awk '{print $NF}'|wc -l`
echo $counts
if [ "$counts" -eq 1 ]
then
echo sql:$counts
mysql -uroot -ptest123  <<FFF
use ser_b;
drop table tb_a;
FFF
mysql -uroot -ptest123 ser_b < /usr/shell_clubs/auto_sql/`date +%Y%m%d`_tb_a.sql --default-character-set=utf8
echo --------------done
else
        echo sql wrong
fi
说明:客户端脚本被调用时,会先删除当前路径下的旧sql记录,然后通过rsync将服务端导出的表,同步过来,并检查是否同步过来,如果同步成功,则清空现有旧tb_a,将新的tb_a导入进库,如果没同步成功,则脚本退出(此处可以先发个邮件通知再退出)
然后流程通了
现在再加一条定时在192.168.3.5上(server端)
##send sql to 192.168.3.6
0 5 * * * su - root -c "/usr/shell_clubs/auto_sql/server.sh" >>/usr/shell_clubs/auto_sql/res.log

时间: 2024-07-31 07:49:00

定时导出mysql本地数据替换远程数据库数据脚本分享_linux shell的相关文章

简单的远程FTP定时备份Shell脚本分享_linux shell

先说问题.公司现在有2台服务器,都是centos系统,一台本地(局域网),一台则在电信机房.因为工作需要,每天备份机房上的数据到本地,以前一直是FTP登录,然后下载到本地机器.现在则希望,利用本地的centos机器,自动备份到本地. 解决方法如下: 1.下载远程电信机房中机器上已打包好的数据.这个不难,一条语句搞定. 复制代码 代码如下: wget ftp://user_name:password@ip_address:port/dir/file_name 2.定时任务,需要写个脚本,并加入定时

CentOS下mysql定时备份Shell脚本分享_linux shell

1.备份语句  复制代码 代码如下: # /usr/local/mysql/bin/mysqldump -utest -ptest test --socket=/tmp/mysql.3306.sock > /usr/local/mysql_backup/3306/test-`date +%Y%m%d`.sql.gz  语句说明:   /usr/local/mysql/bin/mysqldump:MySql安装目录下 -utest:分为两块,一块为-u一块为test:其中-u表示其为用户名,tes

centos中mysql备份数据库脚本分享_linux shell

复制代码 代码如下: #!/bin/bash#backup mysql data DBDIR=/data/mysqlBACKDIR=/data/bak/mysqlTIME=`date -d "today" +%F`DB=$(ls -p $DBDIR | grep / |tr -d / | grep -Ev 'information_schema|performance_schema|mysql|test')/etc/init.d/mysqld stopif [ -d $BACKDIR

linux数据库备份并通过ftp上传脚本分享_linux shell

复制代码 代码如下: #!/bin/bash #author: 505056357@qq.com echo "backup job start" #设置要备份的网站目录,即是网站的根目录 file=/home/wwwroot/default #设置本地备份目录,用于存放打包后的文件 backpath=/home/wwwroot/bkdata/ dbuser=root #数据密码,要记得用单引号将把整个密码引起来,如果密码中有单引号就用双引号,嘿嘿 dbpwd='123456' dbna

Ubuntu下定时提交代码到SVN服务器的Shell脚本分享_linux shell

有两个用途,一是偷懒不用去提交代码,二是在远程服务器上使用以作定期备份. 复制代码 代码如下: sudo gedit /etc/crontab 打开后加入这行 复制代码 代码如下: 0 * * * * my_user_name    my_script_path 表示每个整点以my_user_name身份执行my_script_path.这里最好是使用当前的用户名,修改掉默认的root,否则可能以root身份会提交失败.详情请询问百度crontab的用法. 然后script的内容为: 复制代码

spring data jpa 第一行代码我save了某一个表的数据,看到数据库数据变了。

问题描述 spring data jpa 第一行代码我save了某一个表的数据,看到数据库数据变了. spring data jpa 第一行代码我save了某一个表的数据,看到数据库数据变了. 我第二行去查询这个表的数据,得到的却是没保存数据之前的数据. 再刷新页面就得到了现在数据库的数据是咋回事呢 解决方案 可能是事务的原因,,这次的事务还没提交,, 解决方案二: 需要commit呀,不然是数据是查询不出来的

mysql本地备份和双机相互备份脚本

    先修改脚本进行必要的配置,然后以root用户执行. 1. 第一执行远程备份时先用 first参数. 2. 本地备份用local参数 3. 远程备份不用参数<注意1> 注意:需要在另一主机上的Mysql用户用添加用户.. 需要配置的地方: # define host and mysql password REMOTE_HOST="" #远程主机名或IP REMOTE_PASSWORD="" #远程主机的mysql中的root@本地主机 密码. #

VPS自动备份数据库到FTP的脚本代码_linux shell

1)确保自己在home目录(若不是,运行:cd /home) 2)新建backup文件夹(命令:mkdir backup) 3)新建脚本backup.sh vi backup.sh 复制以下代码(复制完后:wq!要保存): 复制代码 代码如下: #!/bin/bash #你要修改的地方从这里开始 MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 FTP_USER=vmvps #ftp用户名 FTP_PASS=123456 #ftp密码 FT

实战模拟监控MySQL服务shell脚本小结_linux shell

1)端口判断法==>仅适合数据库本地使用 法1:if条件判断方法 [root@oldboy scripts]# cat check_db01.sh #!/bin/sh #created by oldboy #mail:oldboy521@gmail.com PortNum=`netstat -lnt|grep 3306|wc -l` if [ $PortNum -eq 1 ] then echo "mysqld is running." else echo "mysql