zoukankan      html  css  js  c++  java
  • Lvs+keepalived+mysql(主从复制)

    1、准备环境
    操作系统:centos 6.5
    2台机器主机名为node53、node54
     
      Mysql Lvs keepalived
    node2 Y Y Y
    node3 Y Y Y
     
     
     
     
     
     
    2、安装mysql(配置主主复制)
     
     
    服务器名称 ip vip
    node2 192.168.0.12 192.168.0.200
    node3 192.168.0.13 192.168.0.200
      
     
     
     
     
    2.1、安装数据库
          yum install -y mysql
     
    2.2、关闭防火墙
        
     service iptables stop
     chkconfig iptables off
     
    2.3、修改root用户名/访问权限
    use mysql
    delete from user where user='';
    grant replication slave on *.* to 'root'@'%' identified by '123456';
    2.4、修改/etc/my.cnf
    在node2机器上配置如下
     
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
     
    log-bin=mysql-bin
    server-id=1
    #需要记录二进制日志的数据库,如果有多个库,写多个binlog-do-db,用逗号隔开,测试时发现不能同步?有空在研究
    binlog-do-db=amdb
    binlog-do-db=hivedb
    binlog-do-db=ooziedb
    #不需要记录日志的数据库
    binlog-ignore-db=mysql
    #需要同步的数据库
    replicate-do-db=amdb
    replicate-do-db=hivedb
    replicate-do-db=ooziedb
    #不需要同步的库
    replicate-ignore-db=mysql,information_schema
    #默认值3600s
    slave-net-timeout=60
     
    #保证slave挂在任何一台master上都会接收到另一个master的写入信息
    log-slave-updates
    sync_binlog=1
    slave-skip-errors=all
    auto_increment_offset=1
    auto_increment_increment=2
     
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
     
     
    在node3机器上配置如下
     
     
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
     
    log-bin=mysql-bin
    #设置不同的id
    server-id=2
    #需要记录二进制日志的数据库,如果有多个库,写多个binlog-do-db,用逗号隔开,测试时发现不能同步?有空在研究
    binlog-do-db=amdb
    binlog-do-db=hivedb
    binlog-do-db=ooziedb
    #不需要记录日志的数据库
    binlog-ignore-db=mysql
    #需要同步的数据库
    replicate-do-db=amdb
    replicate-do-db=hivedb
    replicate-do-db=ooziedb
    #不需要同步的库
    replicate-ignore-db=mysql,information_schema
    #默认值3600s
    slave-net-timeout=60
     
    #保证slave挂在任何一台master上都会接收到另一个master的写入信息
    log-slave-updates
    sync_binlog=1
    slave-skip-errors=all
    auto_increment_offset=1
    auto_increment_increment=2
     
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
     
    2.5、重启mysql服务
         service mysqld restart
     
    2.6、分别在node2、node3上执行
     
    mysql> flush tables with read lock;#防止进入新的数据
    Query OK, 0 rows affected (0.00 sec)
    mysql> show master statusG;
    *************************** 1. row ***************************
                File: mysql-bin.000007
            Position: 438
        Binlog_Do_DB: db_rocky
    Binlog_Ignore_DB: mysql
    1 row in set (0.00 sec)
     
    在node3
     
    mysql> flush tables with read lock;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show master statusG;
    *************************** 1. row ***************************
                File: mysql-bin.000008
            Position: 107
        Binlog_Do_DB: db_rocky
    Binlog_Ignore_DB: mysql
    1 row in set (0.01 sec)
     
    2.7、在node2、node3指定同步位置
    在node53
    mysql> change master to master_host='10.211.55.54',master_user='root',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=107;
    Query OK, 0 rows affected (0.05 sec)
     
    在node3
     
    mysql> change master to master_host='10.211.55.53',master_user='root',master_password='123456',
        -> master_log_file='mysql-bin.000007',master_log_pos=438;
    Query OK, 0 rows affected (0.15 sec)
     
    注:master_log_file,master_log_pos由上面主服务器查出的状态值中确定
     
    2.8、解锁表
     
    mysql> unlock tables;
    mysql> start slave;
     
    2.9、分别在2台机器查看状态
    show slave statusG;
    如果显示如下,则正常
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
    3、Lvs配置
    3.1 安装lvs
    yum install ipvsadm
    3.2 编写启动脚本
     
    vim /etc/init.d/realserver.sh
    #!/bin/bash
    #description: Config realserver lo and apply noarp
      
    SNS_VIP=10.211.55.200
    /etc/rc.d/init.d/functions
    case "$1" in
      
    start)
          ifconfig eth0:1 $SNS_VIP/24
          /sbin/route add -host $SNS_VIP dev eth0:1
          echo "vip Start OK"
          ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
          /sbin/route add -host $SNS_VIP dev lo:0
          echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
          echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
          echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
          echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
          sysctl -p >/dev/null 2>&1
          echo "RealServer Start OK"
          ;;
      
    stop)
          ifconfig eth0:1 down
          route del $SNS_VIP >/dev/null 2>&1
          echo "vip Stoped"
          ifconfig lo:0 down
          route del $SNS_VIP >/dev/null 2>&1
          echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
          echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
          echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
          echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
          echo "RealServer Stoped"
          ;;
      
    *)
      
          echo "Usage: $0 {start|stop}"
          exit 1
    esac
    exit 0
     
    配置开机启动
     
     echo "/etc/init.d/realserver.sh start" >> /etc/rc.d/rc.local
    4、配置keepalived
    4.1、安装keepalived
      yum install keepalived
     
    4.2、配置keepalived.conf
     
     
      
    vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
    global_defs {
      
            notification_email {
                 yangyufans@qq.com
            }
            notification_email_from yangyufans@qq.com
            smtp_server smtp.qq.com
            smtp_connect_timeout 30
            router_id LVS1
    }
      
    vrrp_sync_group test {
            group {
                    loadbalance
            }
    }
      
    vrrp_instance loadbalance {
            state MASTER
            lvs_sync_daemon_inteface eth0
            virtual_router_id 51
            priority 150
            advert_int 1
      
            authentication {
                    auth_type PASS
                    auth_pass 1111
            }
      
            virtual_ipaddress {
                    10.211.55.200 dev eth0 label eth0:1
            }
    }
    virtual_server 10.211.55.200 3306 {
            delay_loop 6
            lb_algo rr
            lb_kind DR
            persistence_timeout 20
            protocol TCP
            sorry_server 10.211.55.54 3306
            real_server 10.211.55.53 3306 {
                    weight 3
                    TCP_CHECK {
                            connect_timeout 3
                            nb_get_retry 3
                            delay_before_retry 3
                            connect_port 3306
                    }
            }
    }
     
     
    node3上配置keepalived.conf
    2个参数不同,其他配置相同
    state BACKUP
    priority 100
     
    chkconfig keepalived on
     
    插入图片=============
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    2018年左其盛读过评过的书(持续更新中)
    2星|《用场景营销引爆你的生意》:总共4个推荐案例,3个已经失败
    2018左其盛经管新书差评榜(持续更新中)
    3星|《十大全球CEO亲授企业高速成长的关键战略》:作为CEO,我也非常坦率地表明过家庭优先于工作
    2018左其盛好书榜(持续更新中)
    3星|《你的品牌需要一个讲故事的人》:有理论没案例
    《思考快与慢》前传,两位天才犹太心理学家的传奇人生与学术故事:4星|《思维的发现》
    C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
    在XML里的XSD和DTD以及standalone的使用
    数据库操作之简单带参操作
  • 原文地址:https://www.cnblogs.com/lovelanglangyou/p/8890764.html
Copyright © 2011-2022 走看看