返回顶部
首页 > 资讯 > 数据库 >mysql双主配合keepalived可用简析
  • 942
分享到

mysql双主配合keepalived可用简析

2024-04-02 19:04:59 942人浏览 安东尼
摘要

一 版本。    mysql数据库版本:Preconna Server ,MariaDB还是Mysql    1.mysql三种存储引擎 

一 版本。
    mysql数据库版本:Preconna Server ,MariaDB还是Mysql
    1.mysql三种存储引擎
        mysql提供了两种存储引擎,MyISAM,InnoDB.xtraDB
        MyISAM没有日志和事物支持。所以I/0性能非常好
        InnoDB有日志支持提供事务支持。(通过日志记录,方便恢复。增强了mysql的健壮性)mysql5.5版本默认为InnoDB
        xtraDB是InnoDB存储引擎的增强版本,提供了对更高性能计算机的支持。
    2.Percona Server 分支
        由 Percona 公司(mysql咨询公司)发布的mysql版本。提供xtraDB引擎,附带了Percona-toolkit等管理工具
        不过percona Server 是闭源的。
    3.MariaDB
        MariaDB10.0.9版本使用xtraDB引擎。有mysql创始人开发开源版本。避免甲骨文公司闭源mysql的风险。
二 mysql 命令操作
    1.连接mysql
        #cd /usr/local/mysql
        小技巧;隐藏密码 。在命令行下输入 # HISTCONTROL=ignorespace  下面的输入总先输入空格就不会记录内容
        #./bin/mysql -h 主机名称 -u 用户名 -p 密码 -h 主机名 -A (可以切换库名)
        #./bin/mysql -uroot -p
        mysql>  show dattabases; (查看数据库名)
        mysql> use database  (切换数据库)
        mysql> show tables (查看database库的表)
        mysql> desc table (查看表的结构)
        mysql> create database name (创建库)
        mysql> create table swa (a int,b varchar(200)); (创建表swa)
        mysql> desc swa;
        +-------+--------------+------+-----+---------+-------+
        | Field | Type         | Null | Key | Default | Extra |
        +-------+--------------+------+-----+---------+-------+
        | a     | int(11)      | YES  |     | NULL    |       |
        | b     | varchar(200) | YES  |     | NULL    |       |
        +-------+--------------+------+-----+---------+-------+
        mysql> alter table swa add id int(4) default '0';(增加表的字段)
        mysql>rename table 原表名 to 新表名;(修改表的名称)
        mysql> insert into swa values(11,'aasdfsdfsf'); (插入数据)
        mysql> select * from swa;
        +------+------------+
        | a    | b          |
        +------+------------+
        |   11 | aasdfsdfsf |
        +------+------------+
        mysql> insert into swa values(12,'123424'); (写入内容到swa表)
        mysql> select * from swa where a=11;
        +------+------------+
        | a    | b          |
        +------+------------+
        |   11 | aasdfsdfsf |
        +------+------------+
        mysql> select * from swa where a=12;
        +------+--------+
        | a    | b      |
        +------+--------+
        |   12 | 123424 |
        +------+--------+
        mysql> drop table name; (删除表)
        mysql> drop database  name; (删除库)
        如果是删除没有的数据库会报错。解决方法:
        mysql> drop database if exists name; (在 database  后面 判断是否含有数据库)
    
    2.修改密码:在shell下(不在mysql里面)使用/bin/mysqladmin 命令:
      格式 mysqladmin -u 用户名 -p 旧密码 passWord 新密码
     # ./bin/mysqladmin -uroot -proot password root123
    Warning: Using a password on the command line interface can be insecure.
    3.增加新用户/授权用户
        格式 grant 权限 on 数据库.数据表 to 用户名@登录主机 identified by '密码';
        如果登陆主机设置成%表示任意主机都可以登录,(十分危险)
        mysql> grant select,insert on swa.* to code@localhost identified by '123';
        删除用户;(原理:删除 mysql库下的user表的数据)
        mysql> drop user code@localhost;
    4.备份数据库:在shell下(不在mysql里面)使用/bin/mysqldump 命令
        # ./bin/mysqldump -u 用户名 -p 数据库名称 > 路径.sql
        # ./bin/mysqldump -u 用户名 -p 数据库名称 表名称 > 路径.sql (备份表)
    5.还原数据库。
        1.在shell命令行下:
            ./bin/mysql -u 用户名 -p -A 数据库名称< 路径.sql
        2.进入数据库
                mysql> use swa;
                mysql> source 路径.sql;
三 mysql的高可用构架 mysql主从复制 .
        123:作为主库mysql:DB1    124:作为从库mysql:DB2
        DB1的配置:
        默认配置文件/etc/my.cnf
        [mysqld]
        server-id = 1
        log-bin=mysql-bin
        relay-log = mysql-relay-bin
        replicate-wild-ignore-table=mysql.%
        replicate-wild-ignore-table=test.%
        replicate-wild-ignore-table=infORMation_schema.%
        简析 含义:
        server-id = 1    #节点的识别符 ,主从的要不一致
        log-bin=mysql-bin    # 二进制文件的命名格式
        relay-log = mysql-relay-bin   #从服务器中继日志的格式
        replicate-wild-ignore-table   #可以忽略同步的数据库名
        DB2:slave 的配置 也是在/etc/my.cnf的[mysqld]字段
###############slave####################
server_id = 2
#log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
#########################################
     配置主从;
        1.同步数据:
            DB1:mysql>FLUSH TABLES WITH READ LOCK; #
            > UNLOCK TABLES;#解锁
            将DB1的数据拷贝到DB2的位置上。
        2.在DB1上给DB2赋予权限:
            mysql> grant replication slave on *.* to 'rep_user'@'192.168.1.124' identified by 'rep_user';
            mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      334 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
        3. 在DB2上配置slave,并开启slave
            mysql> change master to master_host='192.168.1.123',master_user='rep_user',master_password='rep_user',master_log_file='mysql-bin.000001',master_log_pos=334;
            mysql> start slave;
        错误信息:
        Last_SQL_Error: Error 'Can't drop database 'swa1'; database doesn't exist' on query. Default database: 'swa1'. Query: 'drop database swa1'

        DB2:  mysql> stop slave;            
            mysql> set global sql_slave_skip_counter=1;
            msyql > start slave;
        也可以反过来做。DB2为主。DB1为从。DB2的my.cnf开启log-bin日志。在DB2上给DB1权限。DB1配置从信息。
    如果出现错误:请检查几个地方:
        change master to master_host='192.168.1.123',master_user='rep_user',master_password='rep_user',master_log_file='mysql-bin.000001',master_log_pos=334;
        这条语句中所有的参数都是","相连的。还有就是这些参数不要写错。
        在这些的基础上,再检查:DB1和DB2 是否可以通信 ping.查看3306端口是否开启。安全机制如果不会配的话就关闭。
为了实现高可用:下面安装keepalived实现高可用
        下载软件: wget Http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
        安装软件:
         tar xf
         cd keepalived-1.2.12
        ./configure   --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64
        错误提示:!!! Can not include OpenSSL headers files.
             configure: error: ! OpenSSL is not properly installed on your system
        解决方法: # yum install openssl-devel perl-DBI perl-DBD-MySQL -y
        (我的监测脚本是perl语言的所以安装了perl的扩展模块)
         ./configure   --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64
         make && make install
         两台机器做keepalived:
         123:master  124 backup
         123的配置
         vim keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id MySQLHA_DEVEL
}
vrrp_script check_mysqld {
    script "/etc/keepalived/mysqlcheck/check_slave.pl 127.0.0.1"  #这里的脚本一定要有执行权限
    interval 2
    }
vrrp_instance HA_1 {
    state MASTER           # 如果主机出现问题,会切换到备机上。等到主机恢复了。切换回主机。
    interface eth0
    virtual_router_id 80
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass qweasdzxc
    }
    track_script {
    check_mysqld
    }
    virtual_ipaddress {
        192.168.1.133/24 dev eth0
    }
}
        124的配置:vim keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MySQLHA_DEVEL
}
vrrp_script check_mysqld {
    script "/etc/keepalived/mysqlcheck/check_slave.pl 127.0.0.1" #检测mysql复制状态的脚本
    interval 2
#    weight 21              #如果是多台BACKUP的时候开启。2台不开启。容易导致解析错误
    }
vrrp_instance HA_1 {
    state BACKUP                #在DB1和DB2上均配置为BACKUP
    interface eth0
    virtual_router_id 80
    priority 90                 #这里的数值不同
    advert_int 2
#    nopreempt  #不抢占模式,只在优先级高的机器上设置即可,优先级低的机器不设置
    authentication {
        auth_type PASS
        auth_pass qweasdzxc
    }
    track_script {
    check_mysqld
    }
    virtual_ipaddress {
        192.168.1.133/24 dev eth0       #mysql的对外服务IP,即VIP
    }
}
        下面是check_slave.pl
#!/usr/bin/perl -w
use DBI;
use DBD::mysql;

# CONFIG VARIABLES
$SBM = 120;
$db = "";
$host = $ARGV[0];
$port = 3306;
$user = "root";
$pw = "";

# SQL query
$query = "show slave status";

$dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, { RaiseError => 0,PrintError => 0 });

if (!defined($dbh)) {
    exit 1;
}

$sqlQuery = $dbh->prepare($query);
$sqlQuery->execute;

$Slave_IO_Running =  "";
$Slave_SQL_Running = "";
$Seconds_Behind_Master = "";

while (my $ref = $sqlQuery->fetchrow_hashref()) {
    $Slave_IO_Running = $ref->{'Slave_IO_Running'};
    $Slave_SQL_Running = $ref->{'Slave_SQL_Running'};
    $Seconds_Behind_Master = $ref->{'Seconds_Behind_Master'};
}
$sqlQuery->finish;
$dbh->disconnect();

if ( $Slave_IO_Running eq "No" || $Slave_SQL_Running eq "No" ) {
    exit 1;
} else {
    if ( $Seconds_Behind_Master > $SBM ) {
        exit 1;
    } else {
        exit 0;
    }
}
    这里遇到的问题是脚本没有权限的话。keepalived启动不了VIP,此外这个脚本还需要perl扩展支持。前面已经yum了。
         
         测试; 开启另一台同网段的主机。
         在123 和124 上分别赋予权限。
         # grant  all privileges on *.* to 'root'@'新开启的主机ip' identified by 'root';
         在新开启的主机上登录;
         ./bin/mysql -uroot -p -h 192.168.1.133
         这里需要注意的是:-h  跟VIP 地址需要 keepalived服务成功启动。不然生成不了VIP。
         mysql > show variables like '%hostname%'
         mysql > show variables like '%hostname%';
         可以查看是登录的是哪台mysql机器。

您可能感兴趣的文档:

--结束END--

本文标题: mysql双主配合keepalived可用简析

本文链接: https://lsjlt.com/news/38238.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql双主配合keepalived可用简析
    一 版本。    mysql数据库版本:Preconna Server ,MariaDB还是MYSQL    1.mysql三种存储引擎 ...
    99+
    2024-04-02
  • mysql+keepalived 双主热备高可用
    理论介绍: 我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互...
    99+
    2024-04-02
  • Keepalived+MariaDB10配置+双主+高可用数据库
    Keepalived+MariaDB10配置双主高可用数据库  OSRS子网掩码路由网关Centos6.6MariaDB10Keepalived Eth0:192.168.26...
    99+
    2024-04-02
  • Mysql8高可用之双主+keepalived
    1. 概述 利用keepalived实现Mysql数据库的高可用,Keepalived+Mysql双主来实现MYSQL-HA,我们必须保证两台Mysql数据库的数据完全一致,实现方法是两台Mysql互为主从关系,通过keepalived配...
    99+
    2023-10-08
    mysql 数据库 linux
  • keepalived Mysql双主热备配置的示例分析
    这篇文章主要介绍keepalived Mysql双主热备配置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 基于keepalived双主热备:...
    99+
    2024-04-02
  • mysql主主+keepalived高可用
    mysql主主+keepalived高可用 1.两台主机 host: db1 外网:11.0.0.51 内网:172.16.1.51 db2 外网:11.0.0.52 内网:172.16.1.52 ...
    99+
    2024-04-02
  • MySQL数据库如何配置Keepalived双主
    下面一起来了解下MySQL数据库如何配置Keepalived双主,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL数据库如何配置Keepalived双主这篇短内容是你想要的。1、环境设置10.0....
    99+
    2024-04-02
  • keepalived+vip+mysql双机高可用的示例分析
    这篇文章主要为大家展示了“keepalived+vip+mysql双机高可用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“keepalived+vip...
    99+
    2024-04-02
  • Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)
    Mysql5.5双机热备 实现方案 安装两台Mysql 安装Mysql5.5 sudo apt-get update apt-get install aptitud...
    99+
    2024-04-02
  • Mysql5.6.22双向复制+KeepAlived如何配置mysql的高可用
    小编给大家分享一下Mysql5.6.22双向复制+KeepAlived如何配置mysql的高可用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 基础安装环境  ,采...
    99+
    2024-04-02
  • PGSQL主从+keepalived高可用配置
    环境说明:主机与IP:192.168.11.177 主库192.168.11.180 备库 192.168.11.210  VIP 系统:centos7.2PGSQL9.6主从...
    99+
    2024-04-02
  • 搭建MySQL双主MM+keepalived高可用架构的具体流程
    下文我给大家简单讲讲关于搭建MySQL双主MM+keepalived高可用架构的具体流程,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完搭建MySQL双主MM+keepaliv...
    99+
    2024-04-02
  • MySQL数据库--主主复制+keepalived高可用
                  MySQL数据库--主主复制+keepalived高可用之前我们有学习过mysql的主从复制,主要...
    99+
    2024-04-02
  • Mysql - 配置Mysql主从复制-keepalived高可用-读写分离集群
    目录 高可用: 为什么需要高可用呢? 高可用的主要作用: keepalived是什么?它用在哪里? 什么是VRRP协议,它的作用是什么? 搭建一个基于keepalived的高可用Mysql主从复制读写分离集群 一、项目中的IP地址配置表:...
    99+
    2023-09-18
    数据库
  • mysql+keepalived高可用业务配置教程
    本文主要给大家简单讲讲mysql+keepalived高可用业务配置教程,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql+keepalived高可用...
    99+
    2024-04-02
  • Centenos7.4下搭建mysql集群--mysql主主互备,keepalived高可用
    mysql + keepalived环境搭建 1.环境准备 系统:Centenos7.4 mysql版本 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz keepal...
    99+
    2024-04-02
  • MySQL主主复制+Keepalived打造高可用MySQL集群的步骤
    这篇文章主要介绍“MySQL主主复制+Keepalived打造高可用MySQL集群的步骤”,在日常操作中,相信很多人在MySQL主主复制+Keepalived打造高可用MySQL集群的步骤问题上存在疑惑,小...
    99+
    2024-04-02
  • Nginx+Keepalived主备高可用怎么安装与配置
    本篇内容介绍了“Nginx+Keepalived主备高可用怎么安装与配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境说明:操作系统:C...
    99+
    2023-06-04
  • MySQL主从配置及haproxy和keepalived搭建过程解析
    目录docker 小知识创建harpoxy、Keepalive 的容器下载MySQLMySQL主主配置172.17.0.2 MySQL 配置172.17.0.2的配置执行sql命令M...
    99+
    2024-04-02
  • MySQL5.7+MHA+Keepalived高可用配置的示例分析
    这篇文章主要介绍了MySQL5.7+MHA+Keepalived高可用配置的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据库架构...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作