MySQL主主+Keepalived高可用(一):解决单点故障

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

在企业中,一般系统架构的瓶颈会出现在数据库这一部分,Mysql主从架构在很大程度上解决了这部分瓶颈,但是在Mysql主从同步的架构也存在很多问题。比如:

1. 关于数据写入部分(也就是主库)往往很难做到扩展,虽然很多大公司在逻辑业务方面就进行对数据的拆分,比如商品库存按照区域去拆分(一个区域走一个库存也就是一个主库,然后定时同步总的库存),按照商品类型去划分(一个类型的商品走一套数据库),但是这对于很多中小型公司来说实现起来还是比较困难的;

2. 主从同步一般都是一个主库,一旦主库出现问题,就有可能直接导致整个主从同步架构崩盘,虽然发现后也是可以慢慢恢复的,但是这个恢复时间对于很多公司来说是难以接受的。

今天的这篇博文主要给解决主库单点故障这个问题提供一个思路:

  • 一台主库(我们称之为master-01)提供服务,只负责数据的写入;

  • 拿出一台数据库服务器(我们称之为Master-02)资源做master-01主库的从库(之间做主从同步);

  • 两台主库之间做高可用,可以采用keepalived等方案(一定要保证master-01同时也要作为keepalived的主);

  • 程序在调用主库IP地址的地方写为高可用的VIP地址;

  • 所有提供服务的从服务器与master-02进行主从同步;

  • 建议采用高可用策略的时候,当master-01出现问题切换到master-02的时候,即使master-01恢复了,也不要让它去自动承接VIP地址,否则可能造成数据的混写

这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力;但是也有几个不足的地方:

  • master-02可能会一直处于空闲状态(其实完全可以让它承担一部分从库的角色来负责一部分查询请求的);

  • 这样真正提供服务的从库要等master-02先同步完了数据后才能去master-02上去同步数据,这样可能会造成一定程度的同步延迟时间的加长;

  •  如果master-01一旦恢复正常,会不会导致数据写入混乱(这个可以在keepalived中设置响应的规则,让其不”夺权”,我们认为的去调整操作即可。

架构的简易图如下:

wKiom1NFKNvDUb10AADdD6vme7s011.jpg

方案简介

         由keepalive实现VIP转移,从而实现高可用

软件环境

OS VersionRed Hat Enterprise Linux Server release 6.3 (Santiago)

MySQL Version: MySQL-server-5.6.21-1.el6.x86_64

KeepAlived Version: keepalived-1.2.13

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

部署步骤

1)    配置MySQL主主

详细步骤省略…………..

Master A>show processlist\G

*************************** 1. row ***************************

     Id: 1

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 9654

  State: Slave has read all relay log; waiting for the slave I/O thread to update it

   Info: NULL

*************************** 2. row ***************************

     Id: 2

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 12773

  State: Waiting for master to send event

   Info: NULL

*************************** 3. row ***************************

     Id: 1677

   User: slave

   Host: 192.168.56.102:34325

     db: NULL

Command: Binlog Dump

   Time: 9678

  State: Master has sent all binlog to slave; waiting for binlog to be updated

   Info: NULL

Master B>show processlist \G

*************************** 1. row ***************************

     Id: 1

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 9771

  State: Waiting for master to send event

   Info: NULL

*************************** 2. row ***************************

     Id: 2

   User: system user

   Host:

     db: NULL

Command: Connect

   Time: 9770

  State: Slave has read all relay log; waiting for the slave I/O thread to update it

   Info: NULL

*************************** 3. row ***************************

     Id: 12

   User: slave

   Host: 192.168.56.101:46709

     db: NULL

Command: Binlog Dump

   Time: 9746

  State: Master has sent all binlog to slave; waiting for binlog to be updated

   Info: NULL

2)    安装KeepAlived

#A和B主机都安装

]# tar -zxvf keepalived-1.2.13.tar.gz -C /opt/

]# cd /opt/keepalived-1.2.13/

]# mkdir /usr/local/keepalived

]# ./configure --prefix=/usr/local/keepalived/

]# make;make install

问题:configure报错

configure: error:

  !!! OpenSSL is not properly installed on your system. !!!

  !!! Can not include OpenSSL headers files.            !!!

]# rpm -ivh keyutils-libs-devel-1.4-4.el6.x86_64.rpm

]# rpm -ivh libcom_err-devel-1.41.12-12.el6.x86_64.rpm

]# rpm -ivh pkgconfig-0.23-9.1.el6.x86_64.rpm

]# rpm -ivh libselinux-devel-2.0.94-5.3.el6.x86_64.rpm

]# rpm -ivh krb5-devel-1.9-33.el6.x86_64.rpm

]# rpm -ivh zlib-devel-1.2.3-27.el6.x86_64.rpm

]# rpm -ivh openssl-devel-1.0.0-20.el6_2.5.x86_64.rpm

3)    配置KeepAlived

Create Control File

默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件

#A主机和B主机都操作

]# mkdir /etc/keepalived

#cp安装生成的conf模板到/etc/keepalived

]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

Master A配置

a)      Master A配置文件

#Master A配置文件

~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

#全局配置

global_defs {

#表示keepalived在发生诸如切换操作时发送Email给哪些地址,邮件地址可以多个,每行一个

   notification_email {

     jixiang.yu@trekiz.com

   }

#表示发送通知邮件时邮件源地址是谁

   notification_email_from Alexandre.Cassen@firewall.loc

#表示发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现 

   smtp_server 127.0.0.1

#连接smtp连接超时时间

   smtp_connect_timeout 30

#机器标识

   router_id MySQL_HA

}

 

vrrp_instance MySQL-HA{

    state BACKUP  #state指定instance的初始状态,但这里指定的不算,还是得通过优先级竞选来确定。两台配置此处均是BACKUP。

    interface eth1 #实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的

    virtual_router_id 51 #这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址

     priority 100 #设置本节点的优先级,优先级高的为master,如另外一个节点配置为90,那此节点就是master

    advert_int 1  #检查间隔,默认为1秒

    nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {         #这里设置的就是VIP,也就是虚拟IP地址

        192.168.56.111

    }

}

 

virtual_server 192.168.56.111 3306{

    delay_loop 2    #每个2秒检查一次real_server状态

    lb_algo wrr

    lb_kind DR

    persistence_timeout 50 #会话保持时间

    protocol TCP

 

    real_server 192.168.56.101 3306{

        weight 3

        notify_down /usr/local/MySQL/bin/MySQL.sh        #检测到服务down后执行的脚本

        TCP_CHECK {

            connect_timeout 3  #连接超时时间

            nb_get_retry 3        #重连次数

            delay_before_retry 3 #重连间隔时间

            connect_port 3306   #健康检查端口

        }

    }

}

b)     Master A编写notify_down脚本

~]# mkdir -p /usr/local/MySQL/bin/

~]# vim /usr/local/MySQL/bin/MySQL.sh

#!/bin/sh

pkill keepalived

注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP

c)      Master A启动KeepAlived服务

~]# /usr/local/keepalived/sbin/keepalived –D

~]# ps aux|grep keep

root     29423  0.0  0.1  39484   764 ?        Ss   20:27   0:00 /usr/local/keepalived/sbin/keepalived -D

root     29424  0.0  0.4  43660  2056 ?        S    20:27   0:00 /usr/local/keepalived/sbin/keepalived -D

root     29425  0.0  0.2  43660  1368 ?        S    20:27   0:00 /usr/local/keepalived/sbin/keepalived -D

root     29439  0.0  0.1 103240   840 pts/2    S+   20:27   0:00 grep keep

#可以看到VIP已经飘在eth1上

~]# ip a|grep eth1

3: eth1:< BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth1

inet 192.168.56.111/32 scope global eth1

d)     Master A测试keepalived服务

#停止MySQL服务

~]# /etc/init.d/mysql stop

Shutting down MySQL.....                                   [  OK  ]

#查看vip,发现VIP已经不存在

~]# ip a|grep eth1

3: eth1:< BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth1

#查看keepalive进程消失

~]# ps -ef|grep keep

root     29537  4894  0 20:34 pts/2    00:00:00 grep keep

#监控日志

~]# tail -f /var/log/messages

Dec  3 20:34:08 MySQL1 Keepalived_healthcheckers[29424]: TCP connection to [192.168.56.101]:3306 failed !!!

Dec  3 20:34:08 MySQL1 Keepalived_healthcheckers[29424]: Removing service [192.168.56.101]:3306 from VS [192.168.56.111]:3306

Dec  3 20:34:08 MySQL1 Keepalived_healthcheckers[29424]: Executing [/usr/local/MySQL/bin/MySQL.sh] for service [192.168.56.101]:3306 in VS [192.168.56.111]:3306

Dec  3 20:34:08 MySQL1 Keepalived_healthcheckers[29424]: Lost quorum 1-0=1 > 0 for VS [192.168.56.111]:3306

Dec  3 20:34:08 MySQL1 Keepalived_healthcheckers[29424]: Remote SMTP server [127.0.0.1]:25 connected.

Dec  3 20:34:09 MySQL1 Keepalived[29423]: Stopping Keepalived v1.2.13 (12/03,2014)

Dec  3 20:34:09 MySQL1 Keepalived_vrrp[29425]: VRRP_Instance(MySQL-HA{) sending 0 priority

Dec  3 20:34:09 MySQL1 Keepalived_vrrp[29425]: VRRP_Instance(MySQL-HA{) removing protocol VIPs.

Dec  3 20:34:09 MySQL1 Keepalived_healthcheckers[29424]: Netlink reflector reports IP 192.168.56.111 removed

Dec  3 20:34:09 MySQL1 avahi-daemon[1430]: Server startup complete. Host name is MySQL1-62.local. Local service cookie is 1197773774.

Dec  3 20:34:09 MySQL1 avahi-daemon[1430]: Withdrawing address record for 192.168.56.111 on eth1.

Dec  3 20:34:10 MySQL1 avahi-daemon[1430]: Service "MySQL1-62" (/services/ssh.service) successfully established.

Master B配置

a)    Master B配置文件

#跟DB1基本一致,但有三个地方不同:优先级为90、无抢占设置、real_server为本机IP

DB2~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   notification_email {

        jixiang.yu@trekiz.com

   }

   notification_email_from jixiang.yu@trekiz.com

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id MySQL_HA

}

 

vrrp_instance MySQL-HA{

    state BACKUP       

    interface eth1

    virtual_router_id 51

    priority 90          

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.56.111

    }

}

 

virtual_server 192.168.56.111 3306{

    delay_loop 2

    lb_algo wrr

    lb_kind DR

    persistence_timeout 50

    protocol TCP

 

    real_server 192.168.56.102 3306{

        weight 3

        notify_down /usr/local/MySQL/bin/MySQL.sh

        TCP_CHECK {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

            connect_port 3306   #健康检查端口

        }

    }

}

b)   Master B编写notify_down脚本

~]# mkdir -p /usr/local/MySQL/bin/

~]# vim /usr/local/MySQL/bin/MySQL.sh

#!/bin/sh

pkill keepalived

c)    Master B启动KeepAlived服务

~]# /usr/local/keepalived/sbin/keepalived –D

~]# ps aux|grep keep

root      2855  0.0  0.1  39484   764 ?        Ss   09:56   0:00 /usr/local/keepalive/sbin/keepalived -D

root      2856  0.0  0.3  41588  1992 ?        S    09:56   0:00 /usr/local/keepalive/sbin/keepalived -D

root      2857  0.0  0.2  41588  1288 ?        S    09:56   0:00 /usr/local/keepalive/sbin/keepalived -D

root      2865  0.0  0.1 103240   840 pts/2    S+   09:56   0:00 grep keep

#可以看到VIP已经飘在eth1上

~]# ip a|grep eth1

3: eth1:< BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.56.102/24 brd 192.168.56.255 scope global eth1

inet 192.168.56.111/32 scope global eth1

d)   Master B测试keepalived服务

#停止MySQL服务

~]# /etc/init.d/mysql stop

Shutting down MySQL.....                                   [  OK  ]

#查看vip,发现VIP已经不存在

~]# ip a|grep eth1

3: eth1:< BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth1

#查看keepalive进程消失

~]# ps -ef|grep keep

root     29537  4894  0 20:34 pts/2    00:00:00 grep keep

#监控日志

~]# tail -f /var/log/messages

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: TCP connection to [192.168.56.102]:3306 failed !!!

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: Removing service [192.168.56.102]:3306 from VS [192.168.56.111]:3306

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: Executing [/usr/local/MySQL/bin/MySQL.sh] for service [192.168.56.102]:3306 in VS [192.168.56.111]:3306

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: Lost quorum 1-0=1 > 0 for VS [192.168.56.111]:3306

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: Remote SMTP server [127.0.0.1]:25 connected.

Dec  4 10:35:53 MySQL2 Keepalived[6732]: Stopping Keepalived v1.2.13 (11/24,2014)

Dec  4 10:35:53 MySQL2 Keepalived_vrrp[6734]: VRRP_Instance(MySQL-HA{) sending 0 priority

Dec  4 10:35:53 MySQL2 Keepalived_vrrp[6734]: VRRP_Instance(MySQL-HA{) removing protocol VIPs.

Dec  4 10:35:53 MySQL2 Keepalived_healthcheckers[6733]: Netlink reflector reports IP 192.168.56.111 removed

Dec  4 10:35:54 MySQL2 avahi-daemon[1387]: Withdrawing address record for 192.168.56.111 on eth1.

4)    MySQL Client使用VIP连接数据库

~]# mysql -u trekiz -h 192.168.56.111 -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2622

Server version: 5.6.21-log MySQL Community Server (GPL)

 

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql>

5)    配置init.d/keepalived脚本

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

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

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

~]# /etc/init.d/keepalived -h

Usage: /etc/init.d/keepalived {start|stop|reload|restart|condrestart|status}

6)    KeepAlived Failover Test

a)         Master A,B都启动keepalived,vip在A上,此时A主机pkill keepalived

mysql> show master status;

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

| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master_slave.000031 |      532 |              |                  |                   |

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

1 row in set (0.00 sec)

 

mysql> show master status;

ERROR 2013 (HY000): Lost connection to MySQL server during query

mysql> show master status;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    168

Current database: *** NONE ***

 

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

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master_a.000021 |      532 |              |                  |                   |

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

1 row in set (0.00 sec)

结果

VIP就会切换到Master B上面去

b)        启动Master A的keepalived,vip在B上,B主机pkill keepalived

mysql> show master status;

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

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master_a.000021 |      532 |              |                  |                   |

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

1 row in set (0.00 sec)

mysql> show master status;

ERROR 2013 (HY000): Lost connection to MySQL server during query

mysql> show master status;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    2845

Current database: *** NONE ***

 

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

| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master_slave.000031 |      532 |              |                  |                   |

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

1 row in set (0.08 sec)

结果

VIP就会切换到Master A上面去

c)         Master A,B都启动keepalived,vip在A上,此时A主机stop mysql

结果

VIP就会切换到Master B上面去

d)        启动Master A的keepalived,vip在B上,B主机stop mysql

结果

VIP就会切换到Master A上面去 













本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1617272 ,如需转载请自行联系原作者




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
运维 容灾 关系型数据库
介绍几种 MySQL 官方高可用方案
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
236 3
介绍几种 MySQL 官方高可用方案
|
1月前
|
SQL 关系型数据库 MySQL
使用mysql数据库的binlog应对故障
【6月更文挑战第1天】本文介绍`mysql的 binlog`工具用于解析MySQL的二进制日志,转换为可执行的SQL语句,主要用于数据库主从复制和增量恢复。定期备份和binlog推送能实现故障时的数据恢复。
63 9
使用mysql数据库的binlog应对故障
|
1月前
|
SQL 关系型数据库 MySQL
MySQL高可用架构设计:从主从复制到分布式集群
MySQL高可用性涉及主从复制、半同步复制和Group/InnoDB Cluster。主从复制通过二进制日志同步数据,保证故障时可切换。半同步复制确保事务在至少一个从服务器确认后才提交。Group Replication是多主复制,支持自动故障切换。InnoDB Cluster是8.0的集成解决方案,简化集群管理。使用这些技术能提升数据库的稳定性和可靠性。
223 2
|
1月前
|
负载均衡 关系型数据库 MySQL
MySQL 主主复制与主从复制对比
MySQL的主主复制和主从复制是两种常见的数据库复制配置方式,各有优缺点和适用场景。以下是对这两种复制方式的详细对比: ### 主从复制 (Master-Slave Replication) **特点:** 1. **单向复制**:数据从主服务器复制到一个或多个从服务器。从服务器只能从主服务器接收数据更新,不能向主服务器发送数据。 2. **读写分离**:主服务器处理写操作(INSERT、UPDATE、DELETE),从服务器处理读操作(SELECT),可以分担读负载,提高系统的整体性能。 3. **数据一致性**:数据在主服务器上是最新的,从服务器上可能会有一定的延迟。 **优点:**
|
2月前
|
SQL 关系型数据库 MySQL
mysql 故障排除与优化
mysql 故障排除与优化
|
2月前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
|
2月前
|
SQL canal 运维
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
|
21天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
19天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
18天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
994 7
Mysql 数据库主从复制