设为首页 收藏本站
查看: 602|回复: 0

[经验分享] mysql5.6部署集群基础环境

[复制链接]

尚未签到

发表于 2018-10-8 12:05:09 | 显示全部楼层 |阅读模式
  mysql5.6部署集群基础环境
  -----------------------------
  部署集群基础环境
  MySQL-MMM架构部署
  MySQL-MMM架构使用
  部署集群基础环境
  192.168.4.10     master1
  192.168.4.11     master2
  192.168.4.12     slave1
  192.168.4.13     slave2
  192.168.4.100     monitor
  使用5台mysql5.6 其中192.168.4.10、192.168.4.11作为mysql双主服务器,192.168.4.12、  192.168.4.13作为主服务器的从服务器。
  192.168.4.100 作为mysql-MMM架构中管理监控服务器, DSC0000.png
  步骤一:配置hosts本地解析
  1.配置本机hosts解析记录
  [root@master1 ~]# cat /etc/hosts
  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  192.168.4.10    master1         master1.tarena.com
  192.168.4.11    master2         master2.tarena.com
  192.168.4.12    slave1          slave1.tarena.com
  192.168.4.13    slave2          slave2.tarena.com
  192.168.4.100   monitor         monitor.tarena.com
  2.测试hosts解析成功
  [root@master1 ~]# ping -c 3 master1
  PING master1 (192.168.4.10) 56(84) bytes of data.
  64 bytes from master1 (192.168.4.10): icmp_seq=1 ttl=64 time=0.019 ms
  64 bytes from master1 (192.168.4.10): icmp_seq=2 ttl=64 time=0.019 ms
  64 bytes from master1 (192.168.4.10): icmp_seq=3 ttl=64 time=0.022 ms
  --- master1 ping statistics ---
  3 packets transmitted, 3 received, 0% packet loss, time 2000ms
  rtt min/avg/max/mdev = 0.019/0.020/0.022/0.001 ms
  ---------------------------------------------------
  步骤二:部署数据库主机
  http://xmomo.blog.51cto.com/5994484/1939747
  步骤三:部署双主多从结构
  1)数据库授权(4台数据库主机master1,master2,slave1,slave2执行以下操作)
  部署主从同步只需要授权一个主从同步用户即可,但是我们要部署mysql-MMM架构,
  所以在这里我们将mysql-MMM所需用户一并进行授权设置。再授权一个测试用户,在架构搭建完成时测试使用。
  master1设置:
  [root@master1 ~]# mysql -uroot -ppwd123
  数据库授权部分为了方便试验我直接允许所有地址访问了,生产环境需谨慎

  mysql> grant   replication  slave  on  *.*  to  slaveuser@"%">  Query OK,0 rows affected(0.00 sec)

  mysql> grant  replication  client  on *.*  to  monitor@"%">  Query OK,0 rows affected(0.06 sec)

  mysql> grant  replication client,process,super   on *.*  to  agent@"%">  Query OK,0 rows affected(0.00 sec)

  mysql> grant  all  on *.*  to  root@"%">  Query OK,0 rows affected(0.00 sec)
  mysql>
  2)开启主数据库bin-log日志、设置server_id(master1,master2)
  master1设置:
  [root@master1 ~]# vi /etc/my.cnf
  [mysqld]
  server_id=100      //设置server_id,服务器唯一ID,必须是1至232-1之间的整数
  log-bin            //(主库必须开启)开启bin-log日志
  master2设置:
  [root@master2 ~]# vi /etc/my.cnf
  [mysqld]
  server_id=101
  log-bin
  重启两台主库的mysql服务
  3)从库设置server_id(slave1,slave2)
  slave1设置:
  [root@slave1 ~]#vi /etc/my.cnf
  [mysqld]
  log-bin                  //主库必须开启
  server-id=102
  注意:在集群,所有的服务器ID编号都必须是唯一的。
  mysql主库的二进制日志必须要开启,从服务器上二进制日志功能是不需要开启的。
  但是,你也可以通过启用从服务器的二进制日志功能,实现数据备份与恢复,此外在一些更复杂的拓扑环境中,mysql从服务器也可以扮演其他从服务器的主服务器。
  slave2设置:
  [root@slave2 ~]#vi /etc/my.cnf
  [mysqld]
  log-bin
  server-id=103
  重启两台从库的mysql服务
  4)配置主从从从关系
  配置master2、slave1、slave2成为master1的从服务器
  查看master1服务器bin-log日志使用节点信息:
  [root@master1 ~]# mysql -uroot -ppwd123
  ....
  mysql> flush tables with read lock;
  mysql> show master status\G
  ***************************1. row ***************************
  File: master1-bin.000001
  Position:120
  Binlog_Do_DB:
  Binlog_Ignore_DB:
  Executed_Gtid_Set:
  1 row inset(0.00 sec)
  mysql>
  mysql> unlock tables;
  注意:执行完此步骤后不要再操作主服务器mysql,防止主服务器状态值变化
  防止其他主机操作主数据库,可以用只读锁表的方式来防止数据库被修改。
  flush tables with read lock; 命令的作用是对所有数据库的所有表执行只读锁定,
  只读锁定后所有数据库的写操作将被拒绝,但读操作可以继续。
  执行锁定可以防止在查看二进制日志信息的同时有人对数据进行修改操作,
  最后使用unlock tables; 语句对全局锁执行结束操作。
  设置master2为master1的从库:
  [root@master2 ~]# mysql -uroot -ppwd123
  ....
  mysql> change master to master_host='192.168.4.10',master_user='slaveuser',master_password='pwd123',master_log_file='master1-bin.000001',master_log_pos=120;
  数据复制的关键操作是配置从服务器去连接主服务器进行数据复制,我们需要告知从服务器建立网络连接所有必要的信息。
  使用CHANGE MASTER TO 语句即可完成该项工作,
  MASTER_HOST          指定主服务器主机名或IP地址,
  MASTER_USER          为主服务器上创建的拥有复制权限的账户名称,
  MASTER_PASSWORD      为该账户的密码,
  MASTER_LOG_FILE      指定主服务器二进制日志文件名称,
  MASTER_LOG_POS       为主服务器二进制日志当前记录的位置。
  mysql> start slave;  //启动同步进程
  注:以为我之前做过主从,在启动同步进程的时候报错(1872)。可以用命令 reset slave;  然后在change master to重新连接。
  mysql> show slave status\G                        //查看主从是否成功
  ....
  启动同步进程后查看IO节点和SQL节点是否为Yes如果均为Yes表示主从正常。
  Slave_IO_Running: Yes                //IO节点正常
  Slave_SQL_Running: Yes                //SQL节点正常
  ....
  设置slave1为master1从:
  [root@slave1 ~]# mysql -uroot -ppwd123
  mysql>change master to master_host='192.168.4.10',master_user='slaveuser',master_password='pwd123',master_log_file='master1-bin.000001',master_log_pos=120;
  mysql> start slave;
  mysql> show slave status\G
  ....
  Slave_IO_Running: Yes                //IO节点正常
  Slave_SQL_Running: Yes                //SQL节点正常
  ....
  mysql>
  设置slave2为master1从:
  [root@slave2 ~]# mysql -uroot -ppwd123
  ....
  mysql>change master to master_host='192.168.4.10',master_user='slaveuser',master_password='pwd123',master_log_file='master1-bin.000001',master_log_pos=120;
  mysql> start slave;
  mysql> show slave status\G
  ....
  Slave_IO_Running: Yes                //IO节点正常
  Slave_SQL_Running: Yes                //SQL节点正常
  ....
  ---------------------------------------------------------------------------------------------
  5)配置主主从从关系,将master1配置为master2的从
  查看master2的bin-log使用信息:
  [root@master2 ~]# mysql -uroot -ppwd123
  ....
  mysql> show master status\G
  ***************************1. row ***************************
  File: master2-bin.000001
  Position:120
  Binlog_Do_DB:
  Binlog_Ignore_DB:
  Executed_Gtid_Set:
  1 row inset(0.00 sec)
  设置master1成为master2的从:
  [root@master1 ~]# mysql -uroot -ppwd123
  ....
  mysql> change master to master_host='192.168.4.11',master_user='slaveuser',master_password='pwd123',master_log_file='master2-bin.000001',master_log_pos=120;
  mysql> start slave;
  Query OK,0 rows affected(0.27 sec)
  mysql> show slave status\G
  ....
  Slave_IO_Running: Yes                //IO节点正常
  Slave_SQL_Running: Yes                //SQL节点正常
  ....
  6)测试主主从从架构是否成功
  master1更新数据,查看其它主机是否同步:
  [root@master1 ~]# mysql -uroot -ppwd123
  ....
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | test               |
  +--------------------+
  4 rows inset(0.00 sec)
  mysql> create database tarena;
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  5 rows inset(0.00 sec)
  mysql>
  master2主机查看:
  [root@master2 ~]# mysql -uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  slave1主机查看:
  [root@slave1 ~]# mysql -uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  slave2主机查看:
  [root@slave2 ~]# mysql -uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  =============================================================
  2 mysql-MMM架构部署
  使用5台centos服务器,其中192.168.4.10、192.168.4.11作为mysql双主服务器,192.168.4.12、192.168.4.13作为主服务器的从服务器,
  192.168.4.100 作为mysql-MMM架构中管理监控服务器,实现监控mysql主从服务器的工作状态及决定故障节点的移除或恢复工作。
DSC0001.png

  步骤一:安装mysql-MMM
  安装依赖yum源(mysql集群内5台服务器master1,master2,slave1,slave2,monitor)均需安装
  rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  1) 安装监控程序
  在管理服务器(monitor)上,执行下面命令:
  [root@monitor ~]# yum -y install mysql-mmm-monitor*   perl-Time-HiRes*
  2) 安装代理程序
  mysql集群内4台服务器(master1、master2、slave1、slave2)
  # yum -y install mysql-mmm-agent*
  ....
  步骤二:修改配置文件
  1)修改公共配置文件
  本案例中mysql集群的5台服务器(master1、master2、slave1、slave2、monitor)都需要配置,可以先配好一台后使用scp复制。
  [root@master1 ~]# vim  /etc/mysql-mmm/mmm_common.conf
  active_master_role    writer
  
  cluster_interface        eth0
  pid_path                /var/run/mmm_agentd.pid
  bin_path                /usr/lib/mysql-mmm/
  replication_user        slaveuser            //设置主从同步的用户
  replication_password    pwd123            //设置主从同步用户密码
  agent_user            agent              //mmm-agent控制数据库用户
  agent_password        agent             //mmm-agent控制数据库用户密码
  
    //设置第一个主服务器
  ip                      192.168.4.10//master1 IP 地址
  mode                    master
  peer                    master2            //指定另外一台主服务器
  
    //指定另外一台主服务器
  ip                    192.168.4.11
  mode                    master
  peer                    master1
  
    //设置第一台从服务器
  ip                    192.168.4.12//slave1 IP 地址
  mode                    slave                //本段落配置的是slave服务器
  
  
  ip                    192.168.4.13
  mode                    slave
  
     //设置写入服务器工作模式
  hosts                master1,master2        //提供写的主服务器
  ips                    192.168.4.200       //设置VIP地址
  mode                    exclusive          //排他模式
  
    //设置读取服务器工作模式
  hosts                slave1,slave2         //提供读的服务器信息
  ips                    192.168.4.201,192.168.4.202   //多个虚拟IP
  mode                    balanced                        //均衡模式
  
  ....
  2)修改管理主机配置文件(monitor主机配置)
  [root@monitor ~]# vim /etc/mysql-mmm/mmm_mon.conf
  include mmm_common.conf
  
  ip                        192.168.4.100//设置管理主机IP地址
  pid_path                /var/run/mmm_mond.pid
  bin_path                /usr/lib/mysql-mmm/
  status_path                /var/lib/misc/mmm_mond.status
  ping_ips                192.168.4.10,192.168.4.11,192.168.4.12,192.168.4.13   //设置被监控数据库
  
  
  monitor_user            monitor                    //监控数据库mysql用户
  monitor_password        monitor                    //监控数据库mysql用户密码
  
  debug 0
  ....
  [root@monitor ~]#
  3)修改客户端配置文件
  master1配置
  [root@master1 ~]# vi /etc/mysql-mmm/mmm_agent.conf
  include mmm_common.conf
  this master1
  master2配置
  [root@master2 ~]# vi /etc/mysql-mmm/mmm_agent.conf
  include mmm_common.conf
  this master2
  slave1配置
  [root@slave1 ~]# vi /etc/mysql-mmm/mmm_agent.conf
  include mmm_common.conf
  this slave1
  slave2配置
  [root@slave2 ~]# vi /etc/mysql-mmm/mmm_agent.conf
  include mmm_common.conf
  this slave2
  ==========================================================
  3 mysql-MMM架构使用
  启动MMM集群架构
  设置集群中服务器为online状态
  mysql-MMM架构部署完成后需要启动,数据库端启动mmm-agent进程,管理端启动mmm-monitor进程,启动完成后设置所有数据库主机状态为online。
  步骤一:启动MMM集群架构
  1)启动mmm-agent进程
  master1操作:
  [root@master1 ~]# /etc/init.d/mysql-mmm-agent start
  master2操作:
  [root@master2 ~]# /etc/init.d/mysql-mmm-agent start
  slave1操作:
  [root@slave1 ~]# /etc/init.d/mysql-mmm-agent start
  slave2操作:
  [root@slave2 ~]# /etc/init.d/mysql-mmm-agent start
  2)启动mmm-monitor进程
  monitor主机操作:
  [root@monitor ~]# /etc/init.d/mysql-mmm-monitor start
  步骤二:设置集群中服务器为online状态
  控制命令只能在管理端monitor服务器上执行。
  查看当前集群中各服务器状态:
  [root@monitor ~]# mmm_control show
  master1(192.168.4.10)master/AWAITING_RECOVERY. Roles:
  master2(192.168.4.11)master/AWAITING_RECOVERY. Roles:
  slave1(192.168.4.12)slave/AWAITING_RECOVERY. Roles:
  slave2(192.168.4.13)slave/AWAITING_RECOVERY. Roles:
  设置4台数据库主机状态为online:
  [root@monitor ~]# mmm_control set_online master1
  OK: State of 'master1' changed to ONLINE. Now you can wait some time and check its new roles!
  [root@monitor ~]# mmm_control set_online master2
  OK: State of 'master2' changed to ONLINE. Now you can wait some time and check its new roles!
  [root@monitor ~]# mmm_control set_online slave1
  OK: State of 'slave1' changed to ONLINE. Now you can wait some time and check its new roles!
  [root@monitor ~]# mmm_control set_online slave2
  OK: State of 'slave2' changed to ONLINE. Now you can wait some time and check its new roles!
  再次查看当前集群中各服务器状态:
  [root@monitor ~]# mmm_control show
  master1(192.168.4.10)master/ONLINE. Roles:writer(192.168.4.200)
  master2(192.168.4.11)master/ONLINE. Roles:
  slave1(192.168.4.12)slave/ONLINE. Roles:reader(192.168.4.201)
  slave2(192.168.4.13)slave/ONLINE. Roles:reader(192.168.4.202)
  步骤三:测试mysql-MMM架构
  2)mysql-MMM虚拟IP访问测试
  [root@client ~]# mysql -h192.168.4.200-uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  [root@client ~]#
  [root@client ~]# mysql -h192.168.4.201-uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  [root@client ~]#
  [root@client ~]# mysql -h192.168.4.202-uroot -ppwd123 -e "show databases"
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  [root@client ~]#
  3)主数据库宕机测试
  [root@master1 ~]# service mysql stop                    //停止master1上服务
  Shutting down mysql....[确定]
  [root@monitor ~]# mmm_control show                        //查看集群内服务器状态
  通过输出信息可以看到虚拟IP从master1切换到master2:
  master1(192.168.4.10)master/HARD_OFFLINE. Roles:
  master2(192.168.4.11)master/ONLINE. Roles:writer(192.168.4.200)
  slave1(192.168.4.12)slave/ONLINE. Roles:reader(192.168.4.201)
  slave2(192.168.4.13)slave/ONLINE. Roles:reader(192.168.4.202)
  [root@client ~]# mysql -h192.168.4.200-uroot -ppwd123 -e "show databases"  //访问虚拟IP测试
  Warning: Using a password on the command line interface can be insecure.
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | tarena             |
  | test               |
  +--------------------+
  [root@client ~]#
  MySQL-MMM集群架构就完成了。
  过程中遇到的问题:
  我在第一次 mmm_control show 查看集群服务器状态的时候,发现除了master1的状态为AWAITING_RECOVERY, 其他三台为HARD_OFFLINE。
  这是因为我最开始创建的monitor用户没有被同步过去,在主库master1 重新创建就好。
  查看MYSQL数据库中所有用户 ,
  mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
  还有一个问题,我的环境是虚拟机克隆的,配置主从的时候遇到UUID冲突的问题,
  停止数据库 把数据库所在目录下的auto.cnf 备份一份之后,删除。 重启就好了。
  主库master1 一定要记得开启 log-slave-updates


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-616551-1-1.html 上篇帖子: MySQL数据类型--------字符串类型实战 下篇帖子: MySQL数据类型--------日期与时间类型实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表