如何复制MySQL数据库或表到另外一台服务器?

如何复制MySQL数据库或表到另外一台服务器?,第1张

使用这种方法前,我们需要先下载一个MySQL客户端工具SqlYog。点击这里下载并安装\x0d\x0a\x0d\x0a下面我们开始复制数据库:\x0d\x0a1、打开SqlYog community Edition,分别在不同的选项卡中打开源数据库服务器与目标数据库服务器,这一点很重。\x0d\x0a\x0d\x0a在源数据库服务器选项卡中你将看到所有数据库列表。\x0d\x0a2、在需要复制迁移的数据库上右击,在d出菜单中选择“Copy Database to Different Host/Database”\x0d\x0a3、在d出对话框中,我们能看到源数据库服务器及目标服务器,在左边,通过勾选复选框来选择需要复制迁移的对象,如表、函数、触发器等,也可以选择所有对象。\x0d\x0a4、在右边选择需要迁移的目标服务器或数据库\x0d\x0a5、根据你的需要选择复制类型:“Structure and Data”或“Structure only”,即“结构和数据”或“仅结构”。\x0d\x0a6、选择结束后点击“Copy”按钮开始复制,知道数据迁移结束。

大致流程:主库将变更写binlog日志,然后从库连接到主库之后,从库有一个IO线程,将主库的binlog日志拷贝到自己本地,写入一个中继日志 relay日志中。接着从库中有一个SQL线程会从中继日志读取binlog,然后执行binlog日志中的内容,也就是在自己本地再次执行一遍SQL,这样就可以保证自己跟主库的数据是一样的。

如果主库突然宕机,然后恰好数据还没同步到从库,那么有些数据可能在从库上是没有的,这时候从库成为了主库,那么有些数据可能就丢失了。

开启半同步复制 semi-sync ,用来解决主库数据丢失问题;

这个所谓半同步复制, semi-sync复制 ,指的就是主库写入binlog日志之后,就会将强制此时立即将数据同步到从库,从库将日志 写入自己本地的relay log之后 ,接着会 返回一个ack 给主库, 主库接收到至少一个从库的ack之后才会认为写 *** 作完成了。 如果 过程出现失败 ,那么 我们的客户端就可以进行重试了 ;

主从延迟对于读写分离的涉及影响比较大

这里有一个非常重要的一点,就是 从库同步主库数据的过程是串行化的 ,也就是说 主库上并行的 *** 作,在从库上会串行执行 。所以这就是一个非常重要的点了,由于从库从主库拷贝日志以及串行执行SQL的特点,在 高并发场景下,主库大量的写,那么从库的数据一个个的读,那么就会导致从库同步一定会比主库慢一些,是有延时的 。所以经常出现,刚写入主库的数据可能是读不到的,要过几十毫秒,甚至几百毫秒才能读取到。(主库并发写的量级越高,从库积压的同步数据越多,延迟越高)

我们可以用 show status 看看 Seconds_Behind_Master 参数,你可以看到从库复制主库的数据落后了几ms,但是这个也不是完全准确,可以看 Seconds_Behind_Master的

对于解决主从延迟,解决方案可以从以下方面考虑

一、复制表里面的一条记录并插入表里面\x0d\x0a① insert into article(title,keywords,desc,contents) select title,keywords,desc,contents from article where article_id = 100\x0d\x0a\x0d\x0a二、复制表里的多条数据/记录,并插入到表里面\x0d\x0a① INSERT INTO `power_node`(title,type,status) SELECT title,type,status FROM power_node WHERE id 回答于 2022-11-16


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8519168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存