阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 复制介绍及搭建

230次阅读
没有评论

共计 1891 个字符,预计需要花费 5 分钟才能阅读完成。

MySQL 复制介绍

MySQL 复制就是一台 MySQL 服务器(slave)从另一台 MySQL 服务器(master)进行日志的复制然后再解析日志并应用到自身,类似 Oracle 中的 Data Guard。

MySQL 复制有那些好处:

  • 第一是解决宕机带来的数据不一致,因为 MySQL 复制可以实时备份数据;

  • 第二点是减轻数据库服务器的压力,多台服务器的性能一般比单台要好。但是 MySQL 复制不适合大数据量,大数据量推荐使用集群。

MySQL 复制过程分成三步:

  • master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;

  • slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

  • slave 重做中继日志中的事件,将改变应用到自己的数据库中。MySQL 复制是异步的且串行化的

MySQL 复制介绍及搭建

MySQL 复制搭建

环境准备

master 192.168.1.5

slave 192.168.1.6

OS:Oracle Linux 6.1

MySQL:5.5.37

Master 配置

1)分配复制权限

主库和从库均需要执行

MySQL 复制介绍及搭建

2)清空日志文件

主从库都是默认开启二进制日志文件

MySQL 复制介绍及搭建

需要注意的是,如果不想清空日志文件的话,需要记录当前 master 的 log_file 和 log_pos,并在下面启用复制操作时指定这两个参数或者在 slave 的配置文件指定。

Slave 设置

1)修改从服务器 server-id

MySQL 复制介绍及搭建

修改完以后需要重启数据库

2)清空日志文件,同 Master

3)启用复制

让 slave 连接 master 并开始重做 master 二进制日志中的事件

MySQL 复制介绍及搭建

master_log_pos 的值为 0,因为它是日志的开始位置;master_log_file 是初始日志文件。如果 master 日志没有被清空,这里就是当前 master 的日志信息

需要注意的是,默认情况下,会同步该用户下所有的 DB,如果想限定哪些 DB,有 3 种思路

  • 在 master 上的 /etc/my.inf 中通过参数 binlog-do-db、binlog-ignore-db 设置需要同步的数据库

  • 在执行 grant 分配权限操作的时候,限定数据库

  • 在 slave 上限定数据库使用 replicate-do-db=dbname

4)开启 slave

MySQL 复制介绍及搭建

5)确认 Slave 是否和 Mater 成功通信。如果 Slave_IO_Running 和 Slave_SQL_Running 都是 yes,则证明配置成功

MySQL 复制介绍及搭建

测试

Master 创建数据库

MySQL 复制介绍及搭建

Slave 查看数据库已同步

MySQL 复制介绍及搭建

Master 创建表插入数据

MySQL 复制介绍及搭建

Slave 查看

MySQL 复制介绍及搭建

通过以上验证,可以看到主服务器上的修改能够正常同步到从服务器。

补充说明

1)做了 MySQL 主从复制以后,使用 mysqldump 对数据备份时,一定要注意按照如下方式:

MySQL 复制介绍及搭建

这样就可以保留 file 和 position 的信息,在新搭建一个 slave 的时候,还原完数据库,file 和 position 的信息也随之更新,接着再 start slave 就可以很迅速的完成增量同步。

其他复制方式

主主复制

master-slave 只能进行单向操作,像网络中的半双工。master-master 可以实现服务器之间互相同步,且主主复制可以避免出现单点故障后整个系统宕机。主主复制最大的问题就是数据插入或更新冲突。配置方法同主从复制,反过来让 slave 同步 master。注意 master_log_file 和 master_log_pos 参数要与 master 上对应。具体可以参考这里

单一 master 和多 slave

由一个 master 和多个 slave 组成的复制系统比较简单。slave 之间并不互相通信,只能与 master 通信。如果写操作较少,读操作很多,可以采用。可以将读操作分布到其他 slave,从而减轻 master 的压力。但 slave 增加到一定数量时,slave 对 master 的负载以及网络带宽都会成为问题。

主从多级复制

读操作很多可以采用单一 maste 和多 slave,但增大到一定 slave 后连到 master 的 slaveIO 线程太多会造成 master 压力增大,从而造成数据复制延时。多级复制就是为了解决这个问题。如果想实现主 - 从(主)- 从多级复制,需要设置 log-slave-updates 参数。同时二进制日志也必须启用。

MySQL 复制介绍及搭建

当然,增加复制的级联层次,同一个变更传到最底层的 Slave 所需要经过的 MySQL 也会更多,同样可能造成延时较长的风险。如果条件允许,倾向于通过拆分成多个 Replication 集群来解决。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/132425.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1891字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中