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

[经验分享] MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)

[复制链接]

尚未签到

发表于 2015-11-20 09:10:19 | 显示全部楼层 |阅读模式
MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)

MySQL 一主多从半同步复制架构搭建

  一、下载并安装Cmake
  1、下载地址
  http://www.cmake.org/cmake/resources/software.html
  
  2、安装
  [iyunv@MySQL-15.11 xxm]# tar xf cmake-2.8.12.2.tar.gz
  [iyunv@MySQL-15.11 xxm]# cd cmake-2.8.12.2
  [iyunv@MySQL-15.11 cmake-2.8.12.2]# ./configure && make && make install
  
  二、下载并安装配置MySQL
  源码编译安装,因为MySQL的安装是一样的,以MySQL-15.11为例。
  
  1、下载地址
  http://dev.mysql.com/downloads/mysql/
  MySQL Community Server ->Source code ->Generic Linux (Architecture Independent), Compressed TAR
  Archive(mysql-5.5.37.tar.gz)
  2、安装
  2.1 创建mysql账号
  [iyunv@MySQL-15.11 xxm]# groupadd mysql
  [iyunv@MySQL-15.11 xxm]# useradd -g mysql mysql
  2.2 创建相应的目录
  [iyunv@MySQL-15.11 xxm]# mkdir -p  /data/log /data/tmp /data/data /var/run/mysql /usr/local/mysql
  [iyunv@MySQL-15.11 xxm]# chown -R mysql.mysql /data /var/run/mysql /usr/local/mysql
  Mysql数据目录:/data/data
  Mysql临时目录:/data/tmp
  Mysql日志目录:/data/log
  Mysql安装目录;/usr/local/mysql
  Mysql进程及socket目录:/var/run/mysql
  2.3 编译安装
  2.3.1 编译
  [iyunv@MySQL-15.11 xxm]# tar xf mysql-5.5.37.tar.gz
  [iyunv@MySQL-15.11 xxm]# cd mysql-5.5.37
  [iyunv@MySQL-15.11 mysql-5.5.37]# cmake . -LH |more
  cmake . -LH :查看支持的编译选项
  [iyunv@MySQL-15.11 mysql-5.5.37]]# cmake  .  \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
  -DMYSQL_DATADIR=/data/data  \
  -DSYSCONFDIR=/etc  \
  -DDEFAULT_CHARSET=utf8  \
  -DDEFAULT_COLLATION=utf8_general_ci  \
  -DEXTRA_CHARSETS=all  \
  -DENABLED_LOCAL_INFILE=1
  2.3.2 安装
  [iyunv@MySQL-15.11 mysql-5.5.37]]# make          (历时15分钟)
  [iyunv@MySQL-15.11 mysql-5.5.37]]# make install
  2.3.3 MySQL的动态链接库为系统所共享
  echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
  ldconfig
  
  2.4 配置my.cnf文件
  [client]
  port=36677
  socket=/var/run/mysql/mysql.sock
  
  [mysqld]
  port=36677
  user=mysql
  pid-file=/var/run/mysql/mysqld.pid
  socket=/var/run/mysql/mysql.sock
  basedir=/usr/local/mysql
  datadir=/data/data
  tmpdir=/data/tmp
  server-id=2 #每个MySQL server的此选项都必须唯一
  
  ###begin innodb settiong###
  innodb_file_per_table=1
  innodb_lock_wait_timeout=500
  innodb_buffer_pool_size=512M
  ###end innodb setting###
  
  ###key buffer size set###
  key-buffer-size=10M
  sort_buffer_size=10M
  ###key buffer size set###
  
  ###begin bin log###
  log-bin=/data/log/log
  expire-logs-days=90
  ###end bin log###
  
  ###begin general log###
  #general_log=1
  #general_log_file=/data/log/record.log
  ###end general log###
  
  ###begin error log###
  log_error=/data/log/error.log
  ###end error log###
  
  ###begin skip name resolve###
  skip_name_resolve=1
  ###end skip name resolve###
  
  ###being slow query log###
  slow_query_log=1
  long_query_time=0.1
  slow_query_log_file=/data/log/slow.log
  ###end slow query log###
  
  ###begin replication config###
  read_only=1 #MySQL主,此选项设为0MySQL从,此选项设为1
  relay_log_purge=0
  replicate_wild_ignore_table=information_schema.%
  replicate_wild_ignore_table=performance_schema.%
  #rpl_semi_sync_slave_enabled=1
  #rpl_semi_sync_master_enabled=1
  #rpl_semi_sync_master_timeout=1000 # 1 second
  ###end replication config###
  
  2.5 初始化数据库
  [iyunv@MySQL-15.11 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/data
  
  2.6 启动MySQL服务
  2.6.1 mysql客户端命令
  cp /etc/profile /etc/profile.bak
  echo ' '  >> /etc/profile
  echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
  source /etc/profile
  
  2.6.2 MySQL服务端命令
  cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  
  2.6.3 启动MySQL服务
  #使MySQL服务开机自启动
  [iyunv@MySQL-15.11 ~]# chkconfig mysqld on
  
  #启动MySQL服务
  [iyunv@MySQL-15.11 ~]#/etc/init.d/mysqld start
  
  2.7 账号管理
  2.7.1 删除匿名账号
  mysql -e "delete from mysql.user where user=' ';delete from mysql.user where user='';flush privileges;
  
  2.7.2 给管理员账号设密码
  mysqladmin -u root password $password
  
  2.7.3 创建复制账号
  create user repl@'192.168.15.%'  identified by '123456';
  grant replication slave on *.* to repl@'192.168.15.%' ;
  flush privileges;
  
  2.7.3 创建MHA管理账号
  create user mha_manager@'192.168.15.%' identified by '123456';
  grant all on *.* to mha_manager@'192.168.15.%';
  flush privileges;
  
  2.8 半同步复制
  2.8.1 安装相关插件
  mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
  mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
  
  2.8.2 配置相关参数
  #将前文提及的相关选项取消注释
  /bin/sed -i 's/#rpl_semi/rpl_semi/p' /etc/my.cnf
  #重启mysqld,使配置生效
  /etc/init.d/mysqld restart
  
  ******到此,上述操作在4MySQL服务器上均被执行,个别参数需注意(egserver_idread_only)下述2.8.3从指定主的操作仅在从服务器上执行。******
  
  2.8.3 slave指定master
  第一步:先查看Master——MySQL-15.11的二进制日志信息
  [iyunv@MySQL-15.11 ~ 10:00:27]#mysql -uroot -p123456 -e "show master status;"
  +------------+----------+--------------+------------------+
  | File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------+----------+--------------+------------------+
  | log.000003 |      394 |              |                  |
  +------------+----------+--------------+------------------+
  
  第二步:其他3Slave指定Master,以MySQL-15.12为例
  [iyunv@MySQL-15.12 ~ 10:06:17]#mysql -uroot -p123456 -e "change master to master_host='192.168.15.11', master_user='repl', master_password='123456', master_port=36677, master_log_file='log.000003', master_log_pos=394;"
  [iyunv@MySQL-15.12 ~ 10:07:55]#mysql -uroot -p123456 -e "start slave;"
  [iyunv@MySQL-15.12 ~ 10:08:13]#mysql -uroot -p123456 -e "show slave status\G"
  *************************** 1. row ***************************
  Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.15.11
  Master_User: repl
  Master_Port: 36677
  Connect_Retry: 60
  Master_Log_File: log.000003
  Read_Master_Log_Pos: 394
  Relay_Log_File: mysqld-relay-bin.000002
  Relay_Log_Pos: 247
  Relay_Master_Log_File: log.000003
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  。。。。。。
  Exec_Master_Log_Pos: 394
  Relay_Log_Space: 404
  。。。。。。
  Master_Server_Id: 11
  
  第三步:主、从上分别查看半复制状态
  
  主——MySQL-15.11
  [iyunv@MySQL-15.11 ~ 10:14:32]#mysql -uroot -p123456 -e "show global status like 'rpl_semi_sync%';"
  +--------------------------------------------+-------+
  | Variable_name                  | Value |
  +--------------------------------------------+-------+
  | Rpl_semi_sync_master_clients    | 3   |
  。。。。。。
  | Rpl_semi_sync_master_status    | ON  |
  。。。。。。
  | Rpl_semi_sync_slave_status      | OFF |
  +--------------------------------------------+-------+
  
  从——以MySQL-15.12为例
  [iyunv@MySQL-15.12 ~ 10:15:38]#mysql -uroot -p123456 -e "show global status like 'rpl_semi_sync%';"
  +--------------------------------------------+-------+
  | Variable_name                  | Value |
  +--------------------------------------------+-------+
  | Rpl_semi_sync_master_clients    | 0    |
  。。。。。。
  | Rpl_semi_sync_master_status     | OFF |
  。。。。。。
  | Rpl_semi_sync_slave_status      | ON  |
  +--------------------------------------------+-------+
  
  至此,MySQL的一主三从的半同步复制架构已搭建完成,下面进行实现MySQL高可用的MHA安装及配置。
  
  需注意的项:
  1、为保证每个slave都有可能成为master,所以每个MySQL server都开启binlog日志,并设置replication账号。因为每个slave都有可能成为master,所以binlogreplication 账号、semisyncmasterslave so文件安装及相关配置,所以的MySQL server都安装并配置。
  2masterslave上相关半同步复制的global variable必须在相应的so文件安装后才有效,否则设置了mysql也不认得。
  Master报错:
  141127 10:59:07 [ERROR] /opt/mysql/bin/mysqld: unknown variable 'rpl_semi_sync_master_enabled=1'
  Slave报错:
  141127 11:00:04 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'rpl_semi_sync_slave_enabled=1'
  3、在每个slave上设置read_only=1,避免应用程序对slave服务器进行write
  

运维网声明 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-141355-1-1.html 上篇帖子: [转]利用LVS+Keepalived 实现高性能高可用负载均衡服务器 下篇帖子: Keepalived 设置不抢占资源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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