zoukankan      html  css  js  c++  java
  • MariaDB-5.5.56 主主复制+keepalived高可用

    mariadb主主复制+keepalived高可用

    主机1:192.168.1.22

    主机2:  192.168.1.23

    VIP1:192.168.1.233

    VIP2:  192.168.1.234

    主机1设置:

    安装需要用到的rpm包

    yum -y install ipvsadm keepalived mariadb mariadb-server    

    启动mariadb并设置为开机启动

    systemctl start mariadb

    systemctl enable mariadb

    设置密码

    mysql_secure_installation

    回车以后提示:

    enter current password for root (enter for none):  ## 如果是初次运行直接回车,因为没有密码

    set root password?[Y/n]   ##是否设置root用户密码,输入y回车

    new password:  ##设置root用户密码

    re-enter new password:   ##国际惯例再输入一次密码

    remove anonymous users?[Y/n]  ##是否删除匿名用户

    disallow root login remotely?[Y/n]  ##是否禁止root用户远程登录

    remove test database and access to it?[Y/n]   ## 是否删除test数据库

    reload privilege tables now?[Y/n]   ## 是否重新加载权限表

    测试登录

    mysql -uroot -p 密码

    修改配置文件

    vim /etc/my.cnf

    [mysqld]

    init_connect='SET collation_connection = utf8_unicode_ci'

    init_connect='SET NAMES utf8'

    character-set-server=utf8

    collation-server=utf8_unicode_ci

    skip-character-set-client-handshake

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    symbolic-links=0

    log-bin=mysql-bin           #手动添加该项配置 二进制文件的前缀

    log-slave-updates=true       #手动添加该项配置 开启从日志

    relay-log=relay-log-bin       #手动添加该项配置 中继日志文件的前缀

    relay-log-index=slave-relay-bin.index  #手动添加该项配置 定义中继日志的名称

    server-id=11                #手动添加该项配置 ID号唯一,不能重复

    [mysqld_safe]

    log-error=/var/log/mariadb/mariadb.log

    pid-file=/var/run/mariadb/mariadb.pid

    !includedir /etc/my.cnf.d

    保存退出,重启mariadb

    systemctl restart mariadb

    写监测脚本

    vim /opt/chk_mysql.sh

    #!/bin/bash

    #check mysqld server status

    mysqlpid=$(ps -C mysqld --no-header | wc -l)

    if [ $mysqlpid -eq 0 ];then

        systemctl start mariadb

        sleep 3

        mysqlpid=$(ps -C mysqld --no-header | wc -l)

        if [ $mysqlpid -eq 0 ];then

            systemctl stop keepalived

            echo "Keepalived服务关闭,请检查你的mariadb服务!" | tee -a /var/log/messages

        fi

    fi

    保存退出

    修改keepalived配置文件

    vim /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

    global_defs {

       notification_email {

        xing5759@163.com

       }

       notification_email_from Alexandre.Cassen@firewall.loc

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id MYSQL_mariadb

    }

    vrrp_script chk_mysql {

        script /opt/chk_mysql.sh               #指定脚本位置

        interval 2                            #2秒检查一次

        weight -10                          # 权重 -10

    }

    vrrp_instance VI_1 {                 

        state MASTER

        interface ens32

        virtual_router_id 51          # VI_1里的 ID 号和从里的VI_1的ID是一致的

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

    track_script {

              chk_mysql        #重新指向vrrp_script

        }

        virtual_ipaddress {

            192.168.1.233           #VIP

        }

    }

    vrrp_instance VI_2 {

        state MASTER

        interface ens32

        virtual_router_id 52                   #区别VI_1的ID

        priority 90

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        track_script {

                chk_mysql

        }

        virtual_ipaddress {

            192.168.1.234

        }

    }

    主机2配置:

    安装需要用到的rpm包

    yum -y install ipvsadm keepalived mariadb mariadb-server    

    启动mariadb并设置为开机启动

    systemctl start mariadb

    systemctl enable mariadb

    设置密码

    mysql_secure_installation

    回车以后提示:

    enter current password for root (enter for none):  ## 如果是初次运行直接回车,因为没有密码

    set root password?[Y/n]   ##是否设置root用户密码,输入y回车

    new password:  ##设置root用户密码

    re-enter new password:   ##国际惯例再输入一次密码

    remove anonymous users?[Y/n]  ##是否删除匿名用户

    disallow root login remotely?[Y/n]  ##是否禁止root用户远程登录

    remove test database and access to it?[Y/n]   ## 是否删除test数据库

    reload privilege tables now?[Y/n]   ## 是否重新加载权限表

    测试登录

    mysql -uroot -p 密码

    修改配置文件

    vim /etc/my.cnf

    [mysqld]

    init_connect='SET collation_connection = utf8_unicode_ci'

    init_connect='SET NAMES utf8'

    character-set-server=utf8

    collation-server=utf8_unicode_ci

    skip-character-set-client-handshake

    datadir=/var/lib/mysql

    socket=/var/lib/mysql/mysql.sock

    symbolic-links=0

    log-bin=mysql-bin           #手动添加该项配置 二进制文件的前缀

    log-slave-updates=true       #手动添加该项配置 开启从日志

    relay-log=relay-log-bin       #手动添加该项配置 中继日志文件的前缀

    relay-log-index=slave-relay-bin.index  #手动添加该项配置 定义中继日志的名称

    server-id=12               #手动添加该项配置 ID号唯一,不能重复

    [mysqld_safe]

    log-error=/var/log/mariadb/mariadb.log

    pid-file=/var/run/mariadb/mariadb.pid

    !includedir /etc/my.cnf.d

    保存退出,重启mariadb

    systemctl restart mariadb

    写监测脚本

    vim /opt/chk_mysql.sh

    #!/bin/bash

    #check mysqld server status

    mysqlpid=$(ps -C mysqld --no-header | wc -l)

    if [ $mysqlpid -eq 0 ];then

        systemctl start mariadb

        sleep 3

        mysqlpid=$(ps -C mysqld --no-header | wc -l)

        if [ $mysqlpid -eq 0 ];then

            systemctl stop keepalived

            echo "Keepalived服务关闭,请检查你的mariadb服务!" | tee -a /var/log/messages

        fi

    fi

    保存退出

    修改keepalived配置文件

    vim /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived

    global_defs {

       notification_email {

        xing5759@163.com

       }

       notification_email_from Alexandre.Cassen@firewall.loc

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id MYSQL_mariadb

    }

    vrrp_script chk_mysql {

        script /opt/chk_mysql.sh               #指定脚本位置

        interval 2                            #2秒检查一次

        weight -10                          # 权重 -10

    }

    vrrp_instance VI_1 {                 

        state MASTER

        interface ens32

        virtual_router_id 51          # VI_1里的 ID 号和从里的VI_1的ID是一致的

        priority 100

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

    track_script {

              chk_mysql        #重新指向vrrp_script

        }

        virtual_ipaddress {

            192.168.1.233           #VIP

        }

    }

    vrrp_instance VI_2 {

        state MASTER

        interface ens32

        virtual_router_id 52                   #区别VI_1的ID

        priority 90

        advert_int 1

        authentication {

            auth_type PASS

            auth_pass 1111

        }

        track_script {

                chk_mysql

        }

        virtual_ipaddress {

            192.168.1.234

        }

    }

    配置互为主从复制:

    首先是主机1:

    给从服务器授权:

    mysql -uroot -p123123

    grant replication slave on *.* to ‘myslave’@’192.168.1.%’ identified by ‘123123’;

    flush privileges;

    show master status;   #记住file的文件名 和position的id号

    进入主机2

    mysql -uroot -p123123

    change master to master_host=’192.168.1.22’,master_user=’myslave’,master_password=’123123’,master_log_file=’mysql-bin.000004’,master_log_pos=’475’;      #这里写上主机1上显示的file的文件名和id号

    start slave;

    show slave status G;

     

    主机2:

    给从服务器授权:

    mysql -uroot -p123123

    grant replication slave on *.* to ‘myslave’@’192.168.1.%’ identified by ‘123123’;

    flush privileges;

    show master status;   #记住file的文件名 和position的id号

    进入主机1

    mysql -uroot -p123123

    change master to master_host=’192.168.1.23’,master_user=’myslave’,master_password=’123123’,master_log_file=’mysql-bin.000004’,master_log_pos=’475’;      #这里写上主机1上显示的file的文件名和id号

    start slave;

    show slave status G;

     

    配置完成

  • 相关阅读:
    Anaconda 安装及包管理工具 conda 进行虚拟环境包管理的基本操作
    终端分屏复用工具 tmux 基本操作教程
    在远程登陆的Ubuntu服务器上通过命令行源码编译安装 GNU M4、autoconf、automake 等程序
    Ubuntu18.04 使用过程遇到的问题记录
    缓冲区溢出基础实践(二)——ROP 与 hijack GOT
    vue.js 使用记录(1)
    fis3 安装(Linux)
    js常用共同方法
    ajax跨域 自定义header问题总结
    服务器配置记录
  • 原文地址:https://www.cnblogs.com/liuYGoo/p/9451305.html
Copyright © 2011-2022 走看看