q528 发表于 2018-12-31 10:44:29

读写分离+HA(mysql proxy+keepalived+mysql mmm)续

Mysql-mmm套件安装:
  在所有的数据库服务器,包括监控机上安装mysql-mmm套件
  #解压mysql-mmm套件
  # tar –xzvfmysql-mmm-2.2.1.tar.gz
  #进入mysql-mmm路径
  # cd mysql-mmm-2.2.1
  在所有的数据库服务器上都运行(master1,master2,slave1,slave2)
  # /usr/local/mysql/bin/mysql -uroot –p
  Enter password:
  Welcome to the MySQL monitor.Commands end with ; or \g.
  Your MySQL connection id is 7
  Server version: 5.0.87-terry-debug-log Source distribution
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  #创建用户权限
  mysql> GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.21.%' IDENTIFIED BY '123456';
  #创建用户权限
  mysql> GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.21.%'   IDENTIFIED BY '123456';
  #刷新权限
  mysql> flush privileges;
  配置所有数据库服务器包括监控机上的文件
  # vi /etc/mysql-mmm/mmm_common.conf
  active_master_role      writer
  
  cluster_interface               eth0
  #pid文件存储每次进程启动的pid
  pid_path                              /var/run/mmm_agentd.pid
  #路径位置
  bin_path                              /usr/libexec/mysql-mmm/
  #复制用户
  replication_user      replication
  #复制用户的明码
  replication_password    123456
  #Agent用户
  agent_user                      mmm_agent
  #agent用户的密码
  agent_password                  123456
  
  #服务器数据库1
  
  #数据库服务器真实IP地址
  ip                                              192.168.21.11
  #数据库服务器模式
  mode                                    master
  peer                                    db2
  
  
  #数据库服务器真实IP地址
  Ip 192.168.21.12
  #数据库服务器模式
  mode master
  peer db1
  
  
  #数据库服务器真实IP地址
  ip 192.168.21.13
  #数据库服务器模式
  mode slave
  
  
  #数据库服务器真实IP地址
  ip      192.168.21.14
  #数据库服务器模式
  mode    slave
  
  #写入角色
  
  #主机编号
  hosts db1, db2
  #虚拟IP
  ips 192.168.21.101
  #模式-独占
  mode exclusive
  
  #只读角色
  
  #主机编号
  hosts db1, db2, db3,db4
  #虚拟IP
  ips                                 192.168.21.111,192.168.21.112,192.168.21.114,192.168.21.115
  #模式 负载均衡模式
  mode   balanced
  
  修改监控机的mysql_mmm的配置
  # vi /etc/mysql-mmm/mmm_mon.conf
  include mmm_common.conf
  
  #监控机的IP
  ip                                              127.0.0.1
  #pid文件路径
  pid_path                              /var/run/mmm_mond.pid
  bin_path                              /usr/lib/mysql-mmm/
  #状态文件路径
  status_path                           /var/lib/misc/mmm_mond.status
  #可以ping的真实agent的IP
  ping_ips                              192.168.21.11,192.168.21.12,192.168.21.13,192.168.21.14
  #发现节点丢失则过6秒进行切换
  auto_set_online 6
  
  
  monitor_user                  mmm_monitor
  monitor_password                123456
  
  debug 0
  #启动数据库服务器上的agent
  # /etc/init.d/mysql-mmm-agent start
  Starting MMM Agent Daemon:                                 
  # /etc/init.d/mysql-mmm-agent start
  Starting MMM Agent Daemon:                                 
  # /etc/init.d/mysql-mmm-agent start
  Starting MMM Agent Daemon:                                 
  # /etc/init.d/mysql-mmm-agent start
  Starting MMM Agent Daemon:                                 
  #启动监控机上的monitor
  # /etc/init.d/mysql-mmm-monitor start
  Starting MMM Monitor Daemon:                              
  #在监控机上的查看各个agent的信息
  # mmm_control show
  db1(192.168.21.11) master/ONLINE. Roles: reader(192.168.21.112), writer(192.168.21.101)
  db2(192.168.21.12) master/ONLINE. Roles: reader(192.168.21.111)
  db3(192.168.21.13) slave/ONLINE. Roles: reader(192.168.21.115)
  db4(192.168.21.14) slave/ONLINE. Roles: reader(192.168.21.114)
  数据库的HA完毕
实现读写分离机制
  设置代理
  在192.168.21.6上安装mysql-proxy
  #解压lua,并且安装
  tar zxf lua-5.1.2.tar.gz && cd lua-5.1.2 && make linux install
  修改rw-splitting.lua这个脚本是用来控制读写分离的
  #mysql-proxy中参数的含义
  --proxy-read-only-backend-addresses为只读的机器
  --proxy-backend-addresses为写入机器
  --keepalive 支持keealived检测心跳
  --proxy-lua-script=rw-splitting.lua运用rw-splitting.lua脚本进行读写分离
  ./mysql-proxy
  --proxy-read-only-backend-addresses=192.168.21.102:3306
  --proxy-read-only-backend-addresses=192.168.21.103:3306
  --proxy-backend-addresses=192.168.21.101:3306
  --keepalive
  --proxy-lua-script=rw-splitting.lua
  测试
  mysql –uproxytest –pproxytest –P4040 h192.168.21.200
用keepalived实现mysql-proxy高可用
  在proxy1和proxy2上安装
  #下载keepalived
  wgethttp://www.keepalived.org/software/keepalived-1.1.19.tar.gz
  #解压keepalived
  tar zxvf keepalived-1.1.19.tar.gz
  cd keepalived-1.1.19
  #配置初始化参数,安装在/usr/local/keepalived目录下
  ./configure --prefix=/usr/local/keepalived
  #编译
  make
  #编译安装
  make install
  cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
  cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  mkdir /etc/keepalived
  cd /etc/keepalived/
  配置keepalived,
  # vi /etc/keepalived/keepalived.conf
  bal_defs {
  #配置邮件通知
  notification_email {
  xulean@gmail.com
  }
  notification_email_from xulean@gmail.com
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id test1
  }
  vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  smtp_alert
  authentication {
  auth_type PASS
  auth_pass 123
  }
  #配置虚拟IP
  virtual_ipaddress {
  192.168.21.200/32 scope global eth0
  }
  }
  #启动keepalived
  # /etc/rc.d/init.d/keepalived start
  Starting keepalived:                                       
  # /etc/rc.d/init.d/keepalived start
  Starting keepalived:                                       
  #在两台mysql-proxy上看是否启动了虚拟IP
  # ip add|grep 192.168.21.200
  inet 192.168.21.200/32 scope global eth0
  虚拟IP绑定成功
对数据库进行调整(引擎)
  为使数据库能支持事务,数据库主库采用innoDB引擎,slave库采用默认innodb引擎,在主库级别设置autocommit为0,备库autocommit为1,说明主库不能进行自动提交,而备库可以实现自动提交的功能,因为我们针对的是主的操作。

页: [1]
查看完整版本: 读写分离+HA(mysql proxy+keepalived+mysql mmm)续