• zhy2_rehat6_mysql04


    export LANG=en_US

    环境:------------------------------------------


    机器 VPN ip linux 账号/密码
    manager1 172.28.20.130 10.1.1.10 
    mysql1-z(主) 172.28.20.132 10.1.1.12 
    mysql1-c(从) 172.28.20.134 10.1.1.14 
    mysql1-b(备) 172.28.20.136 10.1.1.16

    ================================================

    >>>>1. 在 10.1.1.12 上, 杀掉主库mysql进程,模拟主库发生故障,进行自动failover操作。

    [root@10.1.1.12 ~]# pkill -9 mysqld

    查看MHA切换日志,了解整个切换过程,在10.1.1.10上查看日志:
    [root@192.168.0.20 ~]# cat /var/log/masterha/app1/manager.log


    >>>>2.在 10.1.1.14 上:从信息显示为空了。

    [root@DB-mysql1-c ~]# ip add
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:50:56:b7:2e:ce brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.14/24 brd 10.1.1.255 scope global eth0
    inet 10.1.1.20/24 brd 10.1.1.255 scope global secondary eth0:1

    mysql> show slave statusG
    Empty set (0.00 sec)


    在 10.1.1.16 上:从信息显示为

    mysql> show slave statusG
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 10.1.1.14
    Master_User: repl
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql_bin.000003
    Read_Master_Log_Pos: 3549
    Relay_Log_File: DB-mysql1-b-relay-bin.000002
    Relay_Log_Pos: 320
    Relay_Master_Log_File: mysql_bin.000003
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    ===============================================================================
    >>>>3.cd /var/log/masterha/app1 目录下清除app1.failover.complete 这个文件
    [root@DB-manger1 app1]# cd /var/log/masterha/app1
    /var/log/masterha/app1
    [root@DB-manger1 app1]# rm -rf app1.failover.complete

    >>>>4.备主节点需要配置
    mysql> show variables like '%read_only%';
    mysql>set global read_only=on;


    [root@DB-manger1 app1]# vi /etc/masterha/app1.cnf
    会发现少一个,添加主1:

    [server1]
    hostname=10.1.1.12
    candidate_master=1
    port=3306


    在 10.1.1.12 上:---------------

    [root@DB-mysql1-z ~]# service mysqld start
    [root@DB-mysql1-z ~]# service mysqld status

    netstat -nutlp | grep 3306
    ps -ef |grep mysql
    mysql -uroot -proot


    两台slave服务器设置read_only(从库对外提供读服务,只所以没有写进配置文件,是因为随时slave会提升为master)

    在 10.1.1.14 上:---------------
    mysql> show master statusG
    *************************** 1. row ***************************
    File: mysql_bin.000003
    Position: 3549
    Binlog_Do_DB:
    Binlog_Ignore_DB: information_schema,performance_schema,mysql,mysql
    Executed_Gtid_Set:
    1 row in set (0.00 sec)
    mysql> show variables like '%relay_log%';
    mysql> set global read_only=1
    mysql> show variables like '%read_only%';

    在 10.1.1.12 上:---------------

    四.修复宕机的Master

    通常情况下自动切换以后,原master可能已经废弃掉,待原master主机修复后,如果数据完整的情况下,可能想把原来master重新作为新主库的slave,这时我们可以借助当时自动切换时刻的MHA日志来完成对原master的修复。下面是提取相关日志的命令:

    然后再执行主从:

    CHANGE MASTER TO
    MASTER_HOST='10.1.1.12',
    MASTER_USER='repl',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql_bin.000005',
    MASTER_LOG_POS=1871;


    CHANGE MASTER TO
    MASTER_HOST='10.1.1.14',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql_bin.000004',
    MASTER_LOG_POS=154,
    MASTER_USER='repl',
    MASTER_PASSWORD='123456';

    开启slave(10.1.1.12)上的IO线程,追赶落后于master的binlog。

    mysql> start salve; -----------期间丢失的数据就回来了。

    mysql> show variables like '%relay_log%';
    relay_log_purge | ON

    此时10.1.1.12 ,设置定期清理relay脚本(slave服务器),请自行查看搭建手册txt


    在 10.1.1.16 上:---------------
    mysql> show variables like '%relay_log%';
    mysql> set global relay_log_purge=1;

    mysql> show variables like '%read_only%';


    ========================================================
    >>>>5.检查SSH配置

    检查MHA Manger到所有MHA Node的SSH连接状态:

    [root@DB-manger1 app1]# masterha_check_ssh --conf=/etc/masterha/app1.cnf

    必须,看见各个节点ssh验证都是ok的~!!!

    通过masterha_check_repl脚本查看整个集群的状态

    # 开启slave(10.1.1.12)上的IO线程,追赶落后于master的binlog。
    # mysql> start slave io_thread;
    # mysql> reset slave all; --------------清楚主库的(从配置)


    [root@DB-manger1 app1]# masterha_check_repl --conf=/etc/masterha/app1.cnf


    通过master_check_status脚本查看Manager的状态:

    [root@DB-manger1 app1]# masterha_check_status --conf=/etc/masterha/app1.cnf


    开启MHA Manager监控(注意:是一行命令,全部复制,注意不要回车)!!

    [root@DB-manger1 app1]# nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

    关闭MHA Manage监控

    [root@DB-manger1 app1]# masterha_stop --conf=/etc/masterha/app1.cnf


    查看日志:
    [root@DB-manger1 app1]# tail -f /var/log/messages
    [root@DB-manger1 app1]# tail -n20 /var/log/masterha/app1/manager.log

    查看VIP 切换脚本:
    vi /usr/local/bin/master_ip_failover


    -------------------------
    测试:
    在 10.1.1.14 上:---------------

    mysql> create database bai2;
    Query OK, 1 row affected (0.01 sec)

    mysql> use bai2;
    Database changed
    mysql> create table t2(a int);
    Query OK, 0 rows affected (0.01 sec)

    mysql> insert into t2 values(1);
    Query OK, 1 row affected (0.01 sec)

    mysql> insert into t2 values(12);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into t2 values(123);
    Query OK, 1 row affected (0.00 sec)

    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)

    mysql> select * from t2;
    +------+
    | a |
    +------+
    | 1 |
    | 12 |
    | 123 |
    +------+
    3 rows in set (0.00 sec)


    在 10.1.1.16 上:---------------

    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | bai2 |
    | mysql |
    | performance_schema |
    | sys |
    +--------------------+
    5 rows in set (0.01 sec)

    mysql> use bai2;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> select * from t2;
    +------+
    | a |
    +------+
    | 1 |
    | 12 |
    | 123 |
    +------+
    3 rows in set (0.00 sec)

    mysql>

  • 相关阅读:
    设计一个字符串类,并将字符串处理函数的内容进行封装
    C++字符串处理函数【自写】
    文件共享服务器nfs搭建过程
    svn服务器的搭建过程 主要为服务端
    uwsgi和wsgi
    熟悉了下HTTP协议
    ModelForm views.py
    隐藏tomcat nginx版本信息
    csrf
    开发模式
  • 原文地址:https://www.cnblogs.com/bayaim/p/11120287.html
Copyright © 2020-2023  润新知