MYSQL 截止目前高可用的方式主要有传统的复制方式,MGR 也叫innodb cluster , 以及今天要说的 innodb replicatset。
实际上replicatset 就是复制方式的自动化部署以及切换的一个mysql的叫法,如果你要使用首先要把你的MYSQL 提高到 8.019版本以上,同时在安装完mysql后,你还需要安装 mysql shell 否则这个工作就泡汤了。
虽然高版本的 MYSQL 8.026 在安装上有点小问题,相信大部分同学都能解决,这里就不废话,假设你已经安装了两台 myql 8.026 和 mysql -shell的基础上,咱们开始安装 innodb replicatset.
这里先感性在理性,我们先实际操作 这里先准备两台机器,并安装好mysqlshell 与 mysql 8.026
1 通过mysql shell 登陆到mysql中 dba.configureReplicaSetInstance()
在键入命令后,后会给出提示是否进行创建新的用户,这里选择2 创建新的负责replicate 的用户并且给出密码,
整体的过程,全部为自动化,仅仅给出提示让你选择,修改一些必要的复制需要的参数。
COMMIT_ORDER
WRITESET
enforce_gtid_consistency
OFF
ON
gtid_mode
OFF
ON
replica_parallel_type
DATABASE
LOGICAL_CLOCK
replica_preserve_commit_order
OFF
ON
server_id
1
<unique ID>
1 你的账号通过root 来进行远程访问(对 root 账号进行修改)
2 或产生一个新的账号,权限仅仅是为远程访问制作
3 系统中修改了那些值,相关的值已经列到了上面,主要涉及了几个值
1 commit_order
2 gtid_mode
3 replica_parallel_type
4 replica_preserve_commit_order
上面的值是原值,后面的值是修改的值,可以看出来这里将性能作为主要的优化点,如 replica_parallel_type 对影响值进行了修改,同时也对复制中必然要进行的修改进行了操作如server_id
并将配置存在 mysqld-auto.cnf 中持久化存储
做完这些MYSQL服务会从起,让配置参数生效
或者你可以在安装服务器时就 建立一个数据库用户,在此时就可以通过新建的用户来进行工作,下面就是直接使用之前建立的数据库账号进行工作
测试建立一个复制集,replicatset, 此时在两个服务器上都进行相同的操作,另外用户rpelicate 的用户名和密码必须一样
在主服务器上建立主复制节点
通过刚才建立的复制账号对系统进行操作
replica = dba.getReplicaSet()
replica.status()
然后在主节点通过命令直接加入另外一个节点作为从节点
根据系统的提示,选择 clone 的方式将主节点的数据推送到从节点
此间如果你DNS 不给力或者没有配置 HOSTS 则Clone 会失败
那我们再次查看系统的复制状态
在从库中直接 show slave 从库已经完成正在该工作状态
当然如果认为mysql shell 仅仅就是代替了手动操作MYSQL的服务器的主从搭建,可就不是了,这里提供了手动的服务器的主从切换。
replica.setPrimaryInstance('192.168.198.201:3306')
可以看到主从的切换已经完成了,非常方便
那么急于高版本的MYSQL 8 的主从复制建立以及切换都比较方便和智能,通过mysql router 可以进行完全替代原有 MYSQL 高可用的方式。
基于上面的简单操作 ,整体MYSQL 在基于PAXOS 协议上的MYSQL INNODB CLUSTER 以外给了另一个传统意义上的复制功能自动化的选择,简化了DBA 复杂的劳动。
本文分享自 AustinDatabases 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!