加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何领会基于keepalived的MySQL主主复制

发布时间:2023-08-04 13:23:52 所属栏目:MySql教程 来源:
导读:这篇文章将为大家详细讲解有关如何理解基于keepalived的MySQL主主复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。系统环境:Linux red hat 6.3mysql版本:m

这篇文章将为大家详细讲解有关如何理解基于keepalived的MySQL主主复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

系统环境:Linux red hat 6.3

mysql版本:mysql 5.6.34

mater1节点ip:192.168.140.222  主机名:red1

mater2节点ip:192.168.140.224  主机名:red2

一、分别在两个节点安装mysql数据库。

二、1节点修改/etc/my.cnf参数

server_id =1      //标志,节点之间不能重复

log-bin=/var/lib/mysql/xbinlog/binlog    //开启binlog,并保存在位置/var/lib/mysql/xbinlog/下

binlog-format=ROW       //binlog的模式是row模式  

log_slave_updates=1     //开启log-slave-updates参数后,从库从主库复制的数据会写入log-bin日志文件里

sync_binlog=1      //当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

innodb_flush_log_at_trx_commit=1     //代表每1次事务提交或事务外的指令都需要把日志写入(flush)硬盘

slave-parallel-workers=2      //设定从服务器的SQL线程数位2个;0表示关闭多线程复制功能

replicate-do-db=replicate     //同步的数据库是replicate

并且给/var/lib/mysql/xbinlog/目录赋予mysql:mysql权限,否则会起不来 chown mysql:mysql /var/lib/mysql/xbinlog/

重启mysql服务

2节点修改/etc/my.cnf参数

server_id =2                  //这个参数要保证2个节点不一致

log_bin=/opt/mysql/data/ybinlog/binlog

binlog-format=ROW

log_slave_updates=1

sync_binlog=1

innodb_flush_log_at_trx_commit=1

slave-parallel-workers=2

replicate-do-db=replicate

并且给/var/lib/mysql/ybinlog/目录赋予mysql:mysql权限,否则会起不来 chown mysql:mysql /var/lib/mysql/ybinlog/

重启mysql服务

三、在1节点:

mysql> grant replication slave on *.* to 'replicate'@'192.168.140.224' identified by 'replicate';  

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush tables with read lock; 

Query OK, 0 rows affected (0.00 sec)

 

mysql> show master status;

+---------------+----------+--------------+------------------+-------------------+

| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+---------------+----------+--------------+------------------+-------------------+

| binlog.000002 |   337 |       |         |         |

+---------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql> unlock tables; 

Query OK, 0 rows affected (0.00 sec)

在2节点

mysql> change master to master_host='192.168.140.222',master_user='replicate',master_password='replicate',master_log_file='binlog.000002',master_log_pos=337;

Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status\G         //查看Slave_IO_Running 和 Slave_SQL_Running两项是不是yes状态

mysql> show master status; 

+---------------+----------+--------------+------------------+-------------------+

| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+---------------+----------+--------------+------------------+-------------------+

| binlog.000001 |   120 |       |         |         | 

+---------------+----------+--------------+------------------+-------------------+

在1节点

mysql> change master to master_host='192.168.140.224',master_user='replicate', master_password='replicate',master_log_file='binlog.000001',master_log_pos=120;

Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show slave status\G         //查看Slave_IO_Running 和 Slave_SQL_Running两项是不是yes状态

四、测试,在2个节点都插入数据,然后select验证一下

五、下载keepalived

http://www.keepalived.org/software/keepalived-1.2.13.tar.gz

解压:tar xvf keepalived-1.2.13.tar.gz

cd keepalived-1.2.13

初始化: ./configure --disable-fwmark

编译安装:make && make install

keepalived的配置前提

1、本机的主机名与hosts中定义的主机保持一致。

2、各节点要能互相解析主机名,也就是说hosts文件中要有本机的和对方的ip和对应的主机名

3、各个节点的时间必须同步

 关闭selinux并清空防火墙规则

[root@red1 ~]# setenforce 0

[root@red1 ~]# iptables -F

配置keepalived

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/sbin/keepalived /usr/bin/

cp /software/keepalived/keepalived-1.2.13/keepalived/etc/init.d/keepalived.init /etc/init.d

mkdir -p /etc/keepalived

cp /software/keepalived/keepalived-1.2.13/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

节点1上配置

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {           //全局配置段

  notification_email {      //定义故障通知邮箱  

     root@localhost      //邮箱地址,可以多个

  } 

  notification_email_from root@localhost     //发件人地址

  smtp_server localhost            //邮件服务器地址

  smtp_connect_timeout 30         //联系邮件服务器的超时时长

  router_id red1             //当前物理设备在网络中的唯一ID标识 

}

vrrp_instance VI_1 {           //实例名在配置文件中不能重复

  state MASTER             //MASTER或BACKUP,定义当前节点默认为主或从节点

  interface eth0

  virtual_router_id 51         //当前虚拟路由的标识符,必须全局唯一

  priority 100             //定义当前实例的优先级,备机要小于主机 

  advert_int 1            //状态通告周期(秒)---用于主节点向BACKUP节点通告心跳信息 

  authentication {           /消息认证配置

    auth_type PASS         //认证方式(MD5或PASS简单字符认证)

    auth_pass 1111        //认证密码,所有同一虚拟实例节点的必须保持一致

  }

  virtual_ipaddress {       //自动配置在interface上的(vip)虚拟IP地址,可以是多个

   192.168.140.66        //虚拟ip

  } 

}

virtual_server 192.168.140.66 {      //虚拟ip

  delay_loop 6              //RealServer的健康状态探查的时间间隔

  lb_algo rr                 //负载均衡的调度算法(Scheduler)

  lb_kind DR                 //LVS类型。支持NAT/DR/TUN

  persistence_timeout 50          //持久连接超时时间

  protocol TCP               //只能适用TCP,若适用UDP则使用ops参数

  real_server 192.168.140.222 {        //1节点ip

    weight 1                 权重

    TCP_CHECK {               

      connect_timeout 3           健康状态监测超时时间        

      nb_get_retry 3            number of get retry 

      delay_before_retry 3         每次重试之前延迟3秒  

      # connect_port 3306

   }

  }

}

节点2上配置

! Configuration File for keepalived

global_defs {

  notification_email {

     root@localhost

  }

  notification_email_from root@localhost

  smtp_server localhost

  smtp_connect_timeout 30

  router_id red2

}

vrrp_instance VI_1 {

  state BACKUP

  interface eth0

  virtual_router_id 51

  priority 90

  advert_int 1

  authentication {

    auth_type PASS

    auth_pass 1111

  }

  virtual_ipaddress {

   192.168.140.66

  }

}

virtual_server 192.168.140.66 {

  delay_loop 6

  lb_algo rr

  lb_kind DR

  persistence_timeout 50

  protocol TCP

  real_server 192.168.140.224{

    weight 1

    TCP_CHECK {

      connect_timeout 3

      nb_get_retry 3

      delay_before_retry 3

      #connect_port 3306

   }

  }

}

开启服务 service keepalived start

查看状态 service keepalived status

查看VIP是否在本节点 ip add             //VIP:192.168.140.66会在节点1上,因为1节点的优先级高。

六、测试keepalived

此时在1节点和2节点上执行ip add,会发现VIP 192.168.140.66会飘在1节点上。

然后在1节点上执行service keepalived stop,然后在2节点上执行ip add,会发现vip飘到了2节点。

然后在1节点service keepalived start,会发现vip又回到了1节点。

到此,测试成功。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章