【记录】Mysql主从数据库同步shell脚本

由于对数据库不是很熟悉,又想同步一个数据库作为备份,于是找了点资料写了个数据库同步脚本。

权限设置

因为是两台vps,所以需要先在主数据库端做好权限设置

在mysql命令端输入

grant select,lock tables on yourdb.* to 'root'@'ip' identified by 'password'

yourdb表示数据库名称,ip即另外一个vps(从数据库)的ip地址,password即访问密码

注:如果配置好了还是出现连接失败可以查看一下端口是否开放,ip白名单等配置

同步数据库

然后就是同步数据库了,我的思路就是导出主数据库的文件,然后删除已有数据库,导入新的(有点简单粗暴,还望大佬们批评指正)

脚本如下

#!/bin/bash 
#定义基本数据 
ip=填写你的ip地址 如111.22.22.22 
db_username=填写数据库用户名 
db_name=填写数据库名 
db_password=数据库密码 


#尝试删除之前文件
rm -f /root/$db_name.sql || echo "未发现文件"

#获取数据库
mysqldump -u root -p$db_password -h $ip --databases $db_name > $db_name.sql
echo "正在导出远程数据库,具体时间根据数据库大小而定,请耐心等待"

#首先数据库清除
mysql -u$db_username -p$db_password -e " 
drop database if exists $db_name; 
create database $db_name;
quit"
echo "正在清除本地数据库"

#数据库导入
mysql -u$db_username -p$db_password $db_name < $db_name.sql
echo "正在导入数据库,时间根据数据库大小而定"

echo "导入完成"

将其保存为db.sh,然后赋予权限(如果文件地址不是在/root/下,请注意修改路径)

chmod +x db.sh

这样就大功告成了,最后只需要使用linux定时任务,设定同步时间即可,一般每天一同步就好了。做的时候遇到许多问题,都在文章有所提现,希望帮助后来者哈。

 

参考文章

使用脚本自动化远程备份MySQL数据库

Shell脚本中执行sql语句操作mysql的5种方法

linux下mysql数据的导出和导入

http://www.2cto.com/database/201204/127400.html

http://blog.csdn.net/lxm63972012/article/details/50887332

http://www.cnblogs.com/laowu-blog/p/5073665.html

欢迎转载:注明转载出处就好:):嘻哈小屋 » 【记录】Mysql主从数据库同步shell脚本

赞 (2)
分享到:更多 ()
OR 支付宝 扫描二维码
为嘻哈 打个赏
pay_weixinpay_weixin
金额随意 快来“打”我呀~

吐槽 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址