安装MySQL及配置HA和keepalive

1.软件准备

  1. 下载MySQL:wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz
  2. https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar

2.安装MySQL

  1. 解压MySQL

    tar -xvf xxx.tar.gz
    
  2. 将MySQL解压文件移动

    mv mysql /usr/local
    
  3. 创建数据目录

    mkdir /data/mysql
    
  4. 新建mysql用户、组及目录

    groupadd  mysql
    useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql     ---新建msyql用户禁止登录shell
    
  5. 修改目录属有者

    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /data/mysql
    
  6. 配置参数初始化

    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
    记住生成的临时密码:[Note] A temporary password is generated for root@localhost:YLi>7ecpe;YP
    
  7. SSL的安装与配置

    bin/mysql_ssl_rsa_setup --datadir=/data/mysql
    #执行完后数据目录下多出了一些以pem结尾的文件,而这些文件就是开启SSL连接所需要的文件
    
  8. 解决初始化数据库碰到的类库的问题

    将extra的库复制到 /usr/lib64目录下
    删除软链接
    新建软链接
    

    在这里插入图片描述

  9. 将配置文件复制到对应的目录下

    cp mysql/my.cnf /etc/my.cnf
    cp support-files/mysql.server /etc/init.d/mysqld
    
  10. 添加环境变量

     # vim /etc/profile
    添加:
    export PATH=/usr/local/mysql/bin:$PATH
    # source /etc/profile
    
  11. 修改my.cnf配置文件
    第一个mysql主节点的配置文件

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    #主主复制配置:
    auto_increment_offset=1
    auto_increment_increment=2
    #启用二进制日志 注意:日志的目录需要先建立,并将所有者该为mysql
    log-bin=mysql-bin
    binlog_format=row
    log_bin_trust_function_creators=1
    #注:不加binlog-do-db和binlog_ignore_db,那就表示全部数据库都记录二进制日志。
    #需要记录二进制日志的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    binlog-do-db=ambari
    binlog-do-db=hive
    binlog-do-db=ranger
    #不需要记录二进制日志的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-ignore-db=performance_schema
    #超过30天的binlog删除
    expire_logs_days=30
    #服务器唯一ID,默认是1,一般取IP最后一段
    server-id=4
    #配置从库上的更新操作是否写入二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步
    log-slave-updates
    sync_binlog=1
    #中继日志文件
    relay_log = mysql-relay-bin
    #需要复制的数据库名,如果有多个数据库,需要重复设置此参数,每个数据库一行
    replicate-do-db=ambari
    replicate-do-db=hive
    replicate-do-db=ranger
    #不需要复制的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    replicate-ignore-db=mysql
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    

    第二个mysql主节点的配置文件

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    #主主复制配置:
    auto_increment_offset=2
    auto_increment_increment=2
    #启用二进制日志 注意:日志的目录需要先建立,并将所有者该为mysql
    log-bin=mysql-bin
    binlog_format=row
    log_bin_trust_function_creators=1
    #注:不加binlog-do-db和binlog_ignore_db,那就表示全部数据库都记录二进制日志。
    #需要记录二进制日志的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    binlog-do-db=ambari
    binlog-do-db=hive
    binlog-do-db=ranger
    #不需要记录二进制日志的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-ignore-db=performance_schema
    #超过30天的binlog删除
    expire_logs_days=30
    #服务器唯一ID,默认是1,一般取IP最后一段
    server-id=3
    #配置从库上的更新操作是否写入二进制文件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进行日志同步
    log-slave-updates
    sync_binlog=1
    #中继日志文件
    relay_log = mysql-relay-bin
    #需要复制的数据库名,如果有多个数据库,需要重复设置此参数,每个数据库一行
    replicate-do-db=ambari
    replicate-do-db=hive
    replicate-do-db=ranger
    #不需要复制的数据库,如果有多个数据库,需要重复设置此参数,每个数据库一行
    replicate-ignore-db=mysql
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    
  12. 启动数据库并配置

    bin/mysqld_safe --user=mysql &  或者service mysqld start
    in/mysql --user=root –p   输入 6 操作步骤生成的临时密码
    重新设置密码:
    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_length=1;
    mysql> set password=password('xxxxxx');
    mysql> grant all privileges on *.* to root@'%' identified by 'xxxxxx';
    mysql> grant all privileges on *.* to 'root'@'%' with grant option;
    
    允许远程登录:
    mysql>grant all privileges on *.* to root@'%' identified by 'xxxxxx';
    mysql> flush privileges;
    查看用户信息
    mysql> use mysql;
    mysql> select host,user from user where user='root';
    +-----------+------+
    | host      | user |
    +-----------+------+
    | %         | root |
    | localhost | root |
    +-----------+------+
    
    
  13. 设置主主复制
    在第一节点MySQL上配置同步第二节点MySQL的数据(第一节点是备,第二节点是主)

    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication'@'第二节点的IP' IDENTIFIED BY  'repl_password';
    查看5第二节点主 mysql master 状态
    mysql> show master status;
    +------------------+----------+-------------------+--------------------------+-------------------+
    | File             | Position | Binlog_Do_DB      | Binlog_Ignore_DB         | Executed_Gtid_Set |
    +------------------+----------+-------------------+--------------------------+-------------------+
    | mysql-bin.000009 |      154 | ambari,hive,ranger| mysql,information_schema |                   |
    +------------------+----------+-------------------+--------------------------+-------------------+
    
    mysql> change  master to master_host='第二节点的IP',	master_user='replication',	master_password='repl_password',	master_log_file='mysql-bin.000009',	master_log_pos=154;  #对端状态显示的值
    mysql> start  slave;
    

    在第二节点MySQL上配置同步第一节点MySQL的数据(第一节点是主,第二节点是备),操作如上,对应的master_host、master_log_file、aster_log_pos都需要替换成对应主MySQL的信息

  14. 检查主主是否进行同步了

    mysql>show slave status \G
    状态返回如下信息为正常: Slave_IO_Running:Yes Slave_SQL_Running:Yes Seconds_Behind_Master: 0
    
    若数据不同步则需要重新设置:
    
    
  15. 设置MySQL开机自启

    chmod 755 /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig --level 345 mysqld on
    

3.配置keepalive

  1. 安装keepalive
    yum install keepalived -y
    
  2. 配置第一节点的keepalive参数
    #vi /etc/keepalived/keepalived.conf
     global_defs {
       notification_email {
       }
    }
    
    vrrp_instance PX_MYSQL {
        state MASTER 
        #state BACKUP 
        interface bond1
        virtual_router_id 50
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass password123
        }
        virtual_ipaddress {
            浮动IP
        }
    }
    
    virtual_server 浮动IP 3306 {
        delay_loop 3
        lb_algo wrr
        lb_kind DR
        persistence_timeout 9600
        protocol TCP
    
        real_server 第一节点的IP 3306 {
            notify_down /usr/sbin/stop_keepalived.sh
            weight 1
            TCP_CHECK {
              connect_timeout 10
              connect_port    3306
            }
        }
    }
    
  3. 配置第二节点的 keepalve参数
    global_defs {
           notification_email {
           }
        }
    
        vrrp_instance PX_MYSQL {
            state MASTER 
            #state BACKUP 
            interface bond1
            virtual_router_id 50
            priority 90
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass password123
            }
            virtual_ipaddress {
                浮动IP
            }
        }
    
        virtual_server 浮动IP 3306 {
            delay_loop 3
            lb_algo wrr
            lb_kind DR
            persistence_timeout 9600
            protocol TCP
    
            real_server 第二节点MySQL的IP 3306 {
                notify_down /usr/sbin/stop_keepalived.sh
                weight 1
                TCP_CHECK {
                  connect_timeout 10
                  connect_port    3306
                }
            }
        }
    
    
  4. 设置脚本
    vi /usr/sbin/start_keepalived.sh
    #!/bin/sh
    #start keepalived if mysqld started.
    if [ $(systemctl status mysqld|grep -c "active (running)") -eq 1 ];
    then
            if [ $(systemctl status keepalived|grep -c "active (running)") -eq 0 ];
            then
                    systemctl start keepalived
            fi
    fi
    
    vi /usr/sbin/stop_keepalived.sh
    #!/bin/sh
    systemctl stop keepalived	
    
    chmod 755 /usr/sbin/start_keepalived.sh
    chmod 755 /usr/sbin/stop_keepalived.sh
  5. 配置自检监控
    * * * * * /usr/sbin/start_keepalived.sh &>/dev/null
    
  6. 启动
    systemctl start keepalived
    systemctl enable keepalived

4.MySQL数据备份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值