我没有做Mysql实时同步,因为不受监管的情况下我根本不知道同步结果,有没有报错。我试过,也确实能达到即时同步效果,但一出错就停掉了,我也懒得查资料看如何解决,所以就改为定时用命令同步了,这样还可以搭配我自己开发的自动邮件,掌握同步结果。
Windows MySQL定时同步
批处理:
通过mysqldump.exe命令将需要同步的数据库导出到本地,导出时间由数据库大小决定。
@echo on
del D:\MySQL_BK\testtoolctl.sql
del D:\MySQL_BK\bisystem.sql
del D:\MySQL_BK\nonnetworkburn.sql
D:
CD\
cd xampp\mysql\bin
mysqldump.exe -u root -pqwerty testtoolctl > D:\MySQL_BK\testtoolctl.sql
mysqldump.exe -u root -pqwerty bisystem > D:\MySQL_BK\bisystem.sql
mysqldump.exe -u root -pqwerty nonnetworkburn > D:\MySQL_BK\nonnetworkburn.sql
mysql -u root -h 192.168.1.2 -pqwerty < D:\Tool\Job\SyncDB.txt
脚本文件SyncDB.txt
该脚本用于将本地数据库文件导入到远程Mysql服务器中,当然,导入之前,要在远程服务器上将数据库先建好。脚本中use是指向目标数据库,source是选定要导入的本地数据库文件。
use testtoolctl;
source D:\MySQL_BK\testtoolctl.sql
use bisystem;
source D:\MySQL_BK\bisystem.sql
use nonnetworkburn;
source D:\MySQL_BK\nonnetworkburn.sql
exit
定时同步我用的是OnTimer这个工具,然后将上面的批处理作为定时任务加载到OnTimer中。当然你也可以用系统的task schedule,但那玩意我用过,老是有问题停止运行。
Linux MySQL定时同步
这是针对debain系统做的Mysql定时同步任务,其它linux系统应该也差不多。
shell脚本,保存为absDB_auto_backup.sh
#!/bin/bash
#########################
##
## for back up abs bb database use
## relaese by ice 2021-10-09
## for auto bake up master server bb database and import to slave server
## board factory ABS mysql master:192.168.0.15 slaver锛?92.168.0.16
##
####crontable -e //add
# m h dom mon dow command
# 0 0/12 * * * sh /root/abs_auto_backup.sh
#########################
###step 1 get master DB info
T_now=`date +%Y-%m-%d`
if [ ! -d /home/abs_databaseBK ];then
mkdir /home/abs_databaseBK
fi
if [ ! -d /home/abs_db_preBK ];then
mkdir /home/abs_db_preBK
fi
rm /home/abs_db_preBK/db-bb*
mv /home/abs_databaseBK/db-bb* /home/abs_db_preBK/
rm /home/abs_databaseBK/db-bb*
echo "now `date` will auto backup DB" >> /home/abs_databaseBK/run.log
mysqldump -d -uroot -pmtd2013 bb > /home/abs_databaseBK/db-bb-sheet_${T_now}.sql
mysqldump -uroot -pmtd2013 bb > /home/abs_databaseBK/db-bb-all_${T_now}.sql
###step 2 import database to slave DB Server
sleep 3
echo "now `date` will auto backup DB to slaver server" >> /home/abs_databaseBK/run.log
mysql -u root -h 192.168.0.16 -pqwerty bb < /home/abs_databaseBK/db-bb-all_${T_now}.sql
设置定时任务
通过crontable 定时器实现自动执行,0点和12点自动执行:
Step 1:
把脚本文件放到 /root/ 路径
Step 2
root@debian:~# crontab –e //打开文件
可以看到 //把原来的关闭 如下
#
# m h dom mon dow command
# 0 0 * * 7 sh /root/abs_auto_backup.sh
Step 3
0 0/12 * * * sh /root/absDB_auto_backup.sh
Ctrl+x 退出。依据提示输入Y 保存即可
Ps: /home/abs_databaseBK/run.log 路径下有放记录log 文件,方便追踪