由于对数据库不是很熟悉,又想同步一个数据库作为备份,于是找了点资料写了个数据库同步脚本。
权限设置
因为是两台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定时任务,设定同步时间即可,一般每天一同步就好了。做的时候遇到许多问题,都在文章有所提现,希望帮助后来者哈。
参考文章
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脚本