zoukankan      html  css  js  c++  java
  • 构建高性能的MYSQL数据库系统-主从复制

    实验环境:

    DB1:172.16.1.100

    DB2:172.16.1.101

    VRRIP:172.16.1.99

    步骤:

    yum -y install mysql

    1。修改DB1的mysql配置文件

    server-id = 2 #DB1和DB2的id 必须不同
    log-bin=mysql-bin  #开启mysql的二进制日志功能
    read_only=1 #定义主从复制,只读模式 relay-log = mysql-relay-bin #定义中继日志的命名格式 replicate-wild-ignore-table=mysql.% #不复制的数据库或表 replicate-wild-ignore-table=test.% #不复制的数据库或表
    replicate-wild-ignore-table=information_schema.% #不复制的数据库或表

    2. 在DB1创建复制用户并授权

    grant replication slave on *.*  to  "chen"@"172.16.1.101" identified by "123456";
    show master status;
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000006 | 106         |                    |           |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    3.在DB2的mysql库将DB1设为自己的主服务器

    mysql > change master to 
            master_host="172.16.1.100",
            master_user="chen",
            master_password="123456",
            master_log_file="mysql-bin.000006",
            master_log_pos=106;        
    

    4.然后运行

    mysql > start slave;
    

    5.查询DB2运行状态

    mysql > show slave status;
    mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.16.1.100
                      Master_User: chen
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000009
              Read_Master_Log_Pos: 106
                   Relay_Log_File: mysql-relay-bin.000021
                    Relay_Log_Pos: 251
            Relay_Master_Log_File: mysql-bin.000009
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: mysql.%,test.%,information_schema.%
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 106
                  Relay_Log_Space: 551
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    

    6.然后再DB1和DB2配置上面的配置

    7.在DB1和DB2上下载keepalived

    yum install keepalived

    8.配置keepalived的配置文件

    [root@db1 ~]# vim /etc/keepalived/keepalived.conf 

    [root@db2 ~]# vim /etc/keepalived/keepalived.conf 
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     172.16.1.99
     }
    }
    virtual_server 172.16.1.99 3306 {
     delay_loop 2
     #lb_algo rr              #LVS算法,用不到,我们就关闭了
     #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL 
     persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
     protocol TCP
     real_server 172.16.1.101 3306 {  #检测本地mysql,backup也要写检测本地mysql
     weight 3
     notify_down /usr/local/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死
    keepalived实现切换
     TCP_CHECK {
     connect_timeout 3    #连接超时
     nb_get_retry 3      #重试次数
     delay_before_retry 3 #重试间隔时间
      }
    }
    "/etc/keepalived/keepalived.conf" 40L, 1292C written
    [root@db2 ~]# vim /etc/keepalived/keepalived.conf 
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     172.16.1.99
     }
    }
    virtual_server 172.16.1.99 3306 {
     delay_loop 2
     #lb_algo rr              #LVS算法,用不到,我们就关闭了
     #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL 
     persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
     protocol TCP
     real_server 172.16.1.101 3306 {  #检测本地mysql,backup也要写检测本地mysql
     weight 3
     notify_down /usr/local/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死
    keepalived实现切换
     TCP_CHECK {
     connect_timeout 3    #连接超时
     nb_get_retry 3      #重试次数
     delay_before_retry 3 #重试间隔时间
      }
    }
    

    8./usr/local/keepalived/mysql.sh

      

    #!/bin/bash
    #function:监视mysql主从服务器状态
    #written by:alec
    #
    user=mysql
    host=172.16.1.150
    password=123
    #
    check_mysql() {
    IO=`/usr/local/mysql/bin/mysql -u$user -p$password -h$host -e 'show slave statusG'|grep IO_Running|tr -s ' '|awk '{print $2}'|grep Yes|wc -l`
    SQL=`/usr/local/mysql/bin/mysql -u$user -p$password -h$host -e 'show slave statusG'|grep SQL_Running|tr -s ' '|sed -n '1p'|awk '{print $2}'|grep Yes|wc -l`
    if [ "$IO" -eq 1 ]&&[ "$SQL" -eq 1 ]
    then
    service keepalived status|grep pid
    if [ $? -eq 0 ]
    then
    echo "服务已经启动"
    else
    service keepalived start
    if [ $? -eq 0 ]
    then
    echo "服务启动成功"
    else
    echo "服务启动失败"
    fi
    fi
    else
    service keepalived status|grep pid
    if [ $? -eq 0 ]
    then
    service keepalived stop
    if [ $? -eq 0 ]
    then
    echo "服务关闭成功"
    else
    echo "服务关闭失败"
    fi
    else
    echo "服务已经关闭"
    fi
    fi
    }
    main(){
    check_mysql
    }
    main;

    systemctl start keepalived

     ------------------------------------

    错误一:database doesn't exist' on query. Default database

     解决:

    1.stop slave;

    2.set global sql_slave_skip_counter=1;

    3.start slave;

     

  • 相关阅读:
    Java排序算法之堆排序
    servlet学习总结(一)——HttpServletRequest(转载)
    servlet学习总结(一)——初识Servlet
    Java排序算法之快速排序
    Java排序算法之直接选择排序
    第八课、泛型编程简介
    第六课、算法效率的度量
    第四课、程序灵魂的审判
    第三课、初识程序的灵魂------------------------狄泰软件学院
    用solidity语言开发代币智能合约
  • 原文地址:https://www.cnblogs.com/powpoia/p/6081677.html
Copyright © 2011-2022 走看看