设为首页 加入收藏

TOP

003.MMM双主-双从读写分离部署(一)
2019-09-17 17:57:19 】 浏览:71
Tags:003.MMM 双主 双从 读写 分离 部署

一 前期规划

1.1 主机规划

image

1.2 虚拟IP规划

image


1.3 用户列表

image

提示:以上角色需要在所有节点添加。

1.4 整体架构

clipboard

1.4 hosts修改

  1 [root@localhost ~]# vi /etc/sysconfig/network
  2 NETWORKING=yes
  3 HOSTNAME=Master01
  4 [root@Master01 ~]# vi /etc/hosts
  5 Master01    172.24.8.10
  6 Master02    172.24.8.11
  7 Slave01     172.24.8.12
  8 Slave02     172.24.8.13
  9 Monitor     172.24.8.20

提示:所有主机添加对应的hostname和hosts,此步骤非必须,为方便之后简化配置,建议修改hosts。

1.5 NTP配置

略,具体可参考笔记NTP-《003.NTP客户端配置》。
提示:针对高可用的优化,建议所有节点均配置NTP服务。

二 部署MySQL

2.1 安装MySQL

略,具体可参考MySQL主从复制-《MySQL高可用主从复制部署》。
提示:除去monitor节点外所有节点均需要部署。

三 双主复制部署

3.1 master01 my.cf配置

  1 [root@Master01 ~]# vi /etc/my.cnf
  2 [mysqld]
  3 ……
  4 server-id=1				#设置主服务器master的id
  5 log-bin=mysql-bin			#配置二进制变更日志命名格式
  6 replicate-wild-ignore-table=mysql.%
  7 replicate-wild-ignore-table=test.%
  8 replicate-wild-ignore-table=information_schema.%
  9 sync-binlog=1              		#每条自动更新,安全性高,默认是0
 10 auto_increment_increment=2  	#字段一次递增多少
 11 auto_increment_offset=1    		#自增字段的起始值
 12 log_slave_updates          		#当一个主故障,另一个立即接管
 13 read_only=1

注意:
master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:
方法一:
  1 # 不同步哪些数据库
  2 binlog-ignore-db = mysql
  3 binlog-ignore-db = test
  4 binlog-ignore-db = information_schema
  5 # 只同步哪些数据库,除此之外,其他不同步
  6 binlog-do-db = mysqltest

方法二:
建议采用以下方式配置过滤:
  1 replicate-wild-ignore-table=mysql.%	#从库配置不同步表
  2 replicate-wild-do-table=test.%		#从库配置需要同步的表

提示:不要在主库使用binlog-ignore-db和binlog-do-db,也不要在从库使用replicate-wild-ignore和replicate-wild-do-table。

3.2 Master02 my.cf配置

  1 [root@Master01 ~]# service mysqld start
  2 [root@Master01 ~]# mysql -uroot -px120952576
  3 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.%' identified by 'x12345678';
#创建用于复制的账号
  4 mysql> grant replication client on *.* to 'mmm_monitor'@'172.24.8.%' identified by 'x12345678';
#创建用于监控MySQL服务健康的账号
  5 mysql> grant super,replication client,process on *.* to 'mmm_agent'@'172.24.8.%' identified by 'x12345678';
#创建用于切换只读模式、同步Master信息的账号
  6 mysql> grant select,insert,update,delete,create,drop on *.* to 'mmm_test'@'172.24.8.%'  identified by 'x120952576' with grant option;        #创建之后用于读写分离测试的账号
  7 mysql> flush privileges;
  8 [root@Master01 ~]# service mysqld restart
  9 [root@Master01 ~]# mysql -uroot -px120952576
 10 mysql> show master status;

10_thumb1
master01:
file:mysql-bin.000001
position:120
注意:读写分离对于用于super或者all privileges权限的用户无效,需要创建普通用户进行测试。

3.4 Master02创建账号

略,同3.3 Master01创建账号同样操作即可。
  1 [root@Master01 ~]# service mysqld restart
  2 [root@Master01 ~]# mysql -uroot -px120952576
  3 mysql> show master status;

11_thumb1
master02:
file:mysql-bin.000001
position:120

3.5 启动双主复制

提示:如果Master01和Master02已经存在数据,则在开启主备复制之前,需要将Master01和Master02手动同步一次(/var/lib/mysql整个目录打包tar.gz),具体方法略。
注意:本实验都是重新安装的MySQL,可直接启动同步
  1 [root@Master01 ~]# mysql -uroot -px120952576
  2 Enter password:
  3 mysql> change master to master_host='172.24.8.11',
  4     -> master_user='repl_user',
  5     -> master_password='x12345678',
  6     -> master_log_file='mysql-bin.000001',
  7 -> master_port=3306,
  8     -> master_log_pos=120;
  9 mysql> start slave;
 10 mysql> show slave status\G			#查看slave状态

3.3 启动Master02的slave功能

  1 [root@Master02 ~]# mysql -uroot -px120952576
  2 mysql>
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Azure Cosmos DB 中 Document API.. 下一篇mysql碰到的问题总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目