热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL多主自动同步配置并实现负载均衡健康检查

mysql多主同步方案简单实用,可用于生产环境,适合于数据库压力比较大的场景,扩容方便简单,利用haproxy实现负载均衡和故障检测。参考:1.环境ubuntu12.0464bitnode110.10.10.11node210.10.10.12node310.10.10.13MariaDB-galera-server-


H%}O_F2V4`_8WBO$HDX3]K0

mysql多主同步方案简单实用,可用于生产环境,适合于数据库压力比较大的场景,扩容方便简单,利用haproxy实现负载均衡和故障检测。
参考:


1.环境
ubuntu12.04 64bit
node1    10.10.10.11
node2    10.10.10.12
node3    10.10.10.13
MariaDB-galera-server-5.5
haproxy    10.10.10.20


 2.安装源
ubuntu
sudo apt-get install python-software-properties
sudo apt-key adv ?recv-keys ?keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository ‘deb http://mirror.yongbok.net/mariadb/repo/5.5/ubuntu precise main’


3.安装
apt-get update
apt-get install mariadb-galera-server-5.5 galera


 4.配置
node1    10.10.10.11
vi /etc/mysql/my.cnf
[mysqld]
# 1. Mandatory settings: these settings are REQUIRED for proper cluster operation
query_cache_size=0
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
# innodb_doublewrite=1 ? this is the default and it should stay this way
# 2. Optional mysqld settings: your regular InnoDB tuning and such
datadir=/www/mysql
innodb_buffer_pool_size=28G
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
# 3. wsrep provider configuration: basic wsrep options
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_optiOns=”gcache.size=32G; gcache.page_size=1G”
wsrep_cluster_address=gcomm://
wsrep_cluster_name=’gaojinbo_galera_cluster’
wsrep_node_address=’10.10.10.11′
wsrep_node_name=’node1′
wsrep_sst_method=xtrabackup
wsrep_sst_auth=gaojinbo:gaojinbo.com
node2    10.10.10.12
vi /etc/mysql/my.cnf
[mysqld]
# 1. Mandatory settings: these settings are REQUIRED for proper cluster operation
query_cache_size=0
binlog_format=ROW
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
# innodb_doublewrite=1 ? this is the default and it should stay this way
# 2. Optional mysqld settings: your regular InnoDB tuning and such
datadir=/www/mysql
innodb_buffer_pool_size=28G
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
# 3. wsrep provider configuration: basic wsrep options
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider_optiOns=”gcache.size=32G; gcache.page_size=1G”
wsrep_cluster_address=gcomm://10.10.10.11
wsrep_cluster_name=’gaojinbo_galera_cluster’
wsrep_node_address=’10.10.10.12′
wsrep_node_name=’node2′
wsrep_sst_method=xtrabackup
wsrep_sst_auth=gaojinbo:gaojinbo.com


 5.添加用户
GRANT USAGE ON *.* to gaojinbo@’%’ IDENTIFIED BY ‘gaojinbo.com’;
GRANT ALL PRIVILEGES on *.* to gaojinbo@’%';
GRANT USAGE ON *.* to gaojinbo@’localhost’ IDENTIFIED BY ‘gaojinbo.com’;
GRANT ALL PRIVILEGES on *.* to gaojinbo@’localhost’;
安装xtrabackup
由于同步使用的是xtrabackup,所以必需安装(略)
 6.启动集群
node1
/etc/init.d/mysql start
node2
/etc/init.d/mysql start
7.查看状态
mysql -uroot -p
SHOW STATUS LIKE ‘wsrep_%’;
show databases;
这时node1的所有库已同步到node2了,这时集群还是主从模式,需要配置node1,添加配置从node2同步数据,这样才是主主模式
 8.配置主主模式
node1    10.10.10.11
vi /etc/mysql/my.cnf
[mysqld]
wsrep_cluster_address=gcomm://
修改为:
wsrep_cluster_address=gcomm://10.10.10.12
 9.重启node1并查看状态
/etc/init.d/mysql restart
mysql -uroot -p
SHOW STATUS LIKE ‘wsrep_%’;
show databases;
这时node2的所有操作就能自动同步到node1了,主主模式配置完成
 9.添加新node到集群
可以任意新增多台Node到Cluster,设置过程非常简易
1)安装 MariaDB Server
2)安装 Galera Library
3)设定 wsrep_cluster_address=”gcomm://10.10.10.11″
4)安装xtrabackup
添加新node需要修改所有node的gcomm://值,比如添加了新Node 10.10.10.13,我们就必须改动其它Node的gcomm://设定,并且重新启动mysqld服务
为了不影响业务,可以通过下面方法修改,不需要重启服务:
mysql -uroot -p
SHOW VARIABLES LIKE ‘wsrep_cluster_address’;
SET GLOBAL wsrep_cluster_address=’gcomm://10.10.10.11,10.10.10.12,10.10.10.13′;
SHOW VARIABLES LIKE ‘wsrep_cluster_address’;
 重要:
最后需要注意的地方是,由于我们每一台机器都互相设定,如果要关闭全部Node机器,请务必将第一台重新设定gcomm://为空值,让后续重新启动的机器可以先连上此机器进行同步如果不设置gcomm://为空值,mysql集群将无法启动
 10.测试多主同步
登录node1,node2,node3节点,每个节点只建立1个数据库,如
mysql -uroot -p
create database gaojinbo1;
create database gaojinbo2;
create database gaojinbo3;
每个节点上运行,查看数据库:
show databases;
正常情况会显示出gaojinbo1,gaojinbo2.gaojinbo3


 11.配置haproxy
实现功能:
1)健康检查,down机的mysql自动从业务去除
2)负载均衡,配置专用的mysql读,写集群IP,程序通过该IP处理业务
下面haproxy配置使用自带的mysql检测功能,只能检测mysql是否存活。
如果要检测数据库一致性,需要配置xinetd服务写检测脚本通过option httpchk实现(略)
1)安装haproxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz
tar xvzfhaproxy-1.4.23.tar.gz
cd haproxy-1.4.23
make TARGET=generic
make install
2)添加mysql用户,在集群任何一台操作即可,会自动同步
添加权限,用于haproxy检测,不需要任何权限,haproxy只检测是否能正常连接关闭mysql
mysql -uroot -p
GRANT USAGE ON test.* to gaojinbo@’10.10.10.1′;
3)建立haproxy配置文件
vi /etc/haproxy.cfg
global
        maxconn 40000
        #debug
        daemon
        #quiet
        user haproxy
        group haproxy
        nbproc 1
        log 127.0.0.1 local3
        spread-checks 2
defaults
         timeout server  5m
         timeout connect 5m
         timeout client  5m
         timeout http-request 30s
         timeout queue   5m
frontend db_haproxy_status
        bind :80
        default_backend db_status
frontend db_write
        bind 10.10.10.21:3306
        default_backend cluster_db_write
frontend db_read
        bind 10.10.10.22:3306
        default_backend cluster_db_read
backend cluster_db_write
        mode    tcp
        option  tcpka
        balance roundrobin
        option  mysql-check user gaojinbo
        server  mdb1 10.10.10.11:3306 weight 1 check port 3306
        server  mdb2 10.10.10.12:3306 weight 1 check port 3306
        server  mdb3 10.10.10.13:3306 weight 1 check port 3306
backend cluster_db_read
        mode    tcp
        option  tcpka
        balance roundrobin
        option  mysql-check user gaojinbo
        server  mdb1 10.10.10.11:3306 weight 1 check port 3306
        server  mdb2 10.10.10.12:3306 weight 1 check port 3306
        server  mdb3 10.10.10.13:3306 weight 1 check port 3306
backend db_status
        mode http
        stats enable
       #stats scope
       #stats hide-version
        stats refresh 5s
        stats uri /status
        stats realm Haproxy statistics
        stats auth gaojinbo:gaojinbo.com
说明:
haproxy配置的5分钟超时,如果需要mysql长连接的话,修改超时设置即可

4)启动haproxy
haproxy -f /etc/haproxy.cfg
推荐阅读
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 新注册腾讯云最长可免费使用CVM服务器半年
    腾讯旗下的云计算业务目前开始推出面向新用户的免费套餐活动,最长每位用户可免费使用CVM服务器半 ... [详细]
  • 1.ATP方式安装在ubuntu系统的apt软件仓库中,默认存在MySQL数据库,所以直接使用apt命令就可以安装。使用命令:aptapt-getin ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
  • 本文是搭建的mariadb-10.0.17版本的下载地址:https:downloads.mariadb.orginterstitialmariadb-10.0.17sourcemariadb-10.0.17.tar.gzfromhtt ... [详细]
  • mariadb 1045 (28000): Access denied for user ... [详细]
  • MySQL之left join表查询中发生字符集转换导致表索引失效
    mysql,之,left,join,表,查询,中,发生,字符,集,转换, ... [详细]
  • centos7如何利用yum安装mysql 8.0.12
    这篇文章将为大家详细讲解有关centos7如何利用yum安装mysql8.0.12,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
author-avatar
YANLIUPING
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有