近日,由于需要将A服务器的数据库中的某些表跨服务器转移到B服务器中,用mysqldump写了一个语句,完成了该项任务。
mysqldump语句如下:
mysqldump --default-character-set=utf8mb4 --host=h1 -uroot -proot --opt db1 | mysql --host=h2 -uroot -proot --default-character-set=utf8mb4 -C db2
相关参数解释如下:
h1:源服务器数据库ip地址
-uroot: mysql的root用户名
-proot: mysql的root账户密码
db1:源数据库库名
h2:目标数据库ip地址
db2:目标数据库库名
然后,新建一个文本文件,将mysqldump语句粘贴进去,更改文件名扩展名为.sh文件,上传到服务器根目录或者其他目录
先可以在终端下执行一下该文件,检查一下该文件是否正确执行。
接下来用crontab -e命令
(
语法
crontab(选项)(参数)
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
crontab(选项)(参数)
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
)
vim编辑器相关命令如下:
按insert键进入编辑模式就可以修改了,修改完成后,
按ESC键 跳到命令模式,然后:
命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
如下图:
<img data-cke-saved-src="https://img-blog.csdn.net/20171109093213136" src="https://img-blog.csdn.net/20171109093213136" alt="" />
笔者这里的意思是00 13 * * * /mysql.sh,00 21 * * * /mysql.sh每天13点和21点整运行根目录下的mysql.sh文件
具体crontab用法可以百度查一下.
再运行service crond status命令看一下crond服务是否启动,如果没有启动的话,可以用命令service crond restart启动一下。
至此,大功告成,每天系统会自动完成mysqldump里面的跨服务器传输数据表的任务。