首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

同一个mysql配置主主和主从

基础概念

MySQL的主主复制(Master-Master Replication)和主从复制(Master-Slave Replication)是两种常见的数据库复制方式,用于提高数据的可用性和读取性能。

主主复制(Master-Master Replication)

在主主复制中,两个MySQL服务器都可以接受写操作,数据会在两个服务器之间双向同步。这种配置提供了高可用性和负载均衡。

主从复制(Master-Slave Replication)

在主从复制中,一个MySQL服务器(主服务器)接受写操作,另一个或多个服务器(从服务器)复制主服务器的数据并接受读操作。这种配置主要用于读写分离,提高读取性能。

优势

主主复制

  1. 高可用性:如果一个服务器出现故障,另一个服务器可以接管。
  2. 负载均衡:写操作可以分布在两个服务器上,减轻单个服务器的压力。

主从复制

  1. 读写分离:主服务器处理写操作,从服务器处理读操作,提高整体性能。
  2. 数据备份:从服务器可以作为数据备份,防止数据丢失。

类型

  • 异步复制:主服务器在执行写操作后立即返回,不等待从服务器确认。
  • 半同步复制:主服务器在执行写操作后等待至少一个从服务器确认后才返回。
  • 同步复制:主服务器在执行写操作后等待所有从服务器确认后才返回。

应用场景

主主复制

  • 高并发写操作:适用于需要高并发写操作的场景,如电商平台的订单系统。
  • 地理分布式系统:适用于需要在不同地理位置部署数据库的场景。

主从复制

  • 读写分离:适用于读操作远多于写操作的场景,如新闻网站、社交媒体等。
  • 数据备份和恢复:适用于需要定期备份数据并快速恢复的场景。

常见问题及解决方法

主主复制常见问题

  1. 数据冲突:由于两个服务器都可以接受写操作,可能会出现数据冲突。
    • 解决方法:使用自增主键、时间戳等机制来避免冲突,或者使用分布式锁来控制并发写操作。
  • 网络延迟:双向同步可能会导致较高的网络延迟。
    • 解决方法:优化网络配置,减少网络延迟,或者使用半同步复制来平衡性能和数据一致性。

主从复制常见问题

  1. 数据不一致:由于异步复制,从服务器的数据可能会稍微滞后于主服务器。
    • 解决方法:使用半同步复制或同步复制来减少数据不一致的风险。
  • 从服务器性能瓶颈:如果从服务器的读取压力过大,可能会导致性能瓶颈。
    • 解决方法:增加从服务器的数量,或者优化从服务器的配置。

示例代码

以下是一个简单的MySQL主从复制的配置示例:

主服务器配置(my.cnf)

代码语言:txt
复制
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase

从服务器配置(my.cnf)

代码语言:txt
复制
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = mydatabase

主服务器创建复制用户

代码语言:txt
复制
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;

从服务器设置主服务器信息

代码语言:txt
复制
CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;

参考链接

希望这些信息对你有所帮助!如果有更多具体问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL主从配置——双

MySQL主从配置——双 本人是测试环境,准备了两台安装好mysql的服务器(masterA和masterB),可以保证没数据写入,否则需要先将两台服务器上的数据一致,然后再进行主从配置,步骤是:先...环境 MySQL)架构思路: 两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用; masterA是masterB的主库,masterB...又是masterA的主库,它们互为主从; 所有提供服务的从服务器与masterB进行主从同步(即可实现双多从); 架构图 搭建主从配置 创建主从同步用户 masterA: [root@adailinux...)的IP mysql> flush privileges; 配置mysql(/etc/my.cnf) 配置masterA [root@adailinux ~]# vim /etc/my.cnf [mysqld...status\G 在此查看有如下状态说明配置成功: Slave_IO_Running: Yes Slave_SQL_Running: Yes 主从同步测试 在masterA上创建一个库: mysql>

1.3K40

LVS+Keepalived高可用环境部署梳理(主和主从模式)

类似是集群中运行着两个或两个以上的一样的节点,当某个节点出现故障的时候,那么其他作为从 节点的节点就会接替节点上面的任务。...从节点可以接管节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从节点转移到从节点。 高可用性集群的作用:当一个机器宕机另一台进行接管。...环境相比于主从环境,区别只在于: 1)LVS负载均衡层需要两个VIP。...比如182.148.15.239和182.148.15.235 2)后端的realserver上要绑定这两个VIP到lo本地回环口上 3)Keepalived.conf的配置相比于上面的主从模式也有所不同...主架构的具体配置如下: 1)编写LVS启动脚本(在Real_Server1 和Real_Server2上都要操作,realserver脚本内容是一样的) 由于后端realserver机器要绑定两个

4.3K110
  • MySQL主从备份和备份配置+Keepalived+MySQL读写分离

    一、MySQL主从备份 为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当服务器的...服务,成功 也可以查出数据库 keepalived+mysql主从同步成功 四、MySQL读写分离 mysql读写分离是在mysql主从同步的基础上做的,mysql服务器负责写,多台mysql从服务器负责读...,mysql主从同步仅仅是把mysql服务器的数据库同步到了mysql从服务器上,如果要实现读写分离,还需要一个服务器去协调。...1.环境配置 mysql服务器:192.168.174.129 mysql从服务器:192.168.174.130 mysql-proxy服务器:192.168.174.131 master、slave...主从备份+mysql读写分离配置完成。

    3.2K30

    Mysql主从同步(1)-主从环境部署梳理

    4)Mysql复制的模式 1--主从复制:主库授权从库远程连接,读取binlog日志并更新到本地数据库的过程;主库写数据后,从库会自动同步过来(从库跟着主库变); 2--复制:主从相互授权连接...彻底解除主从复制关系 1)stop slave; 2)reset slave; 或直接删除master.info和relay-log.info这两个文件; 3)修改my.cnf删除主从相关配置参数。.......... 3)配置主从同步指令 mysql> stop slave; #执行同步前,要先关闭slave mysql> change master to master_host='182.148.15.238...而从库只能读不能写,一旦从库有写入数据,就会造成主从数据不一致! 下面就说下Mysql复制环境,在slave上更新数据时,master也能自动同步过来。...在同步配置时,需要将两台服务器的: auto_increment_increment 增长量都配置为2 auto_increment_offset 分别配置为1和2。

    2.4K51

    Haproxy+Keepalived高可用环境部署梳理(主和主从模式)

    目前关于网 站架构一般比较合理流行的架构方案: Web 前端采用Nginx/HAProxy+Keepalived 作负载均衡器;后端采用 MySQL 数据库一多从和读写分离,采用 LVS+Keepalived...4)HAProxy 支持 TCP 协议的负载均衡转发,可以对 MySQL 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,大家可以用 LVS+Keepalived 对 MySQL主从做负载均衡...客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来 说,这种主从的切换是透明的。...--------------------------------------------------------------- Haproxy+Keepalived的负载均衡和高可用环境的部署过程,有主从两种模式...主从环境相比于环境,区别只在于keepalived.conf的配置不同,其他的配置都和主模式下的一样,并且主从环境下只有一个VIP(默认在Master端配置) 比如:VIP为182.148.15.239

    8.3K103

    配置MySQL主从引发的反思 原

    记一次mysql配置全过程 [danger] 强烈建议在执行本节所有操作前将所有操作命令操作copy到Sublime Text编辑器替换port为要配置主从mysql实例对应的端口,避免误操作...[danger] 强烈建议在执行本节所有操作前将所有操作命令操作copy到Sublime Text编辑器替换port为要配置主从mysql实例对应的端口,避免误操作!!!...搭建mysql结构 配置文件 数据库配置示例文件(Attention: 因为数据库要配置双主模式,所以在部署时主库和从库的server-id一定不能一样): $ cat 3314.cnf [mysqld3314...# Generate by ansible mysql -u root -pxxxxxx -S /home/mysql/3314/mysql.sock $@ 配置主从 主从复制原理 ?...mysql复制的模式: 主从复制: 主库授权从库远程连接,读取binlog日志并更新到本地数据库的过程;主库写数据后,从库会自动同步过来(从库跟着主库变); 复制: 主从相互授权连接,读取对方

    95830

    数据库主从()配置

    一、如何配置MYSQL主从复制?1. 两台数据库服务器,IP分别为 192.168.216.128 和 192.168.216.129,在服务器上装MySQL(我的配置版本为5.7.24)2....是否配成一致4.bin-log 的信息是否正确二、如何配置MYSQL复制?...上面说了主从复制的配置方法,现在接着上面的配置继续,然后实现双复制,让以上的两个服务器互为主从。1....库【我一般都不写】配置之后重启MYSQL服务 service mysql restart2.在从服务器上配置 /etc/my.cnf 文件,配置如下auto_increment_increment=2 ...在两台服务器的MYSQL中分别进行一些建库、建表、插入、更新等操作,看一下另一台会不会进行同步,如果可以则证明主配置成功,否则还是上面的排错方法,进行错误排查。

    1K20

    MySQL主从复制与复制

    阅读目录 1、简介 2、环境说明 3、主从复制      3.1、MySQL      3.2、配置文件     3.3、开始构建主从复制       3.4、测试主从复制 4、MySql复制      ...数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和复制。...主从复制的配置就是如此的简单。 4、MySql复制      4.1、实现原理             复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更。...MySQL     4.3、开始构建复制            因为主复制是两个主从复制组合一起,所以我就接着上面主从复制接着配置。            ...完成复制配置     4.4、测试复制            分别开启slave start;            mysql>SHOW SLAVE STATUS\G   #查看主从复制是否配置成功

    1.6K50

    记录下,mysql主从复制,同步

    先说下主从复制 或者叫主从同步。...而同步就是两个主从同步,没什么多的东西 首先先修改下my.cnf配置文件 1. 数据库 vi /etc/my.cnf 在 [mysqld] 下面添加3行 # 修改,必须保证每个服务器不一样。...# binlog-ignore-db = mysql # binlog-ignore-db = hello # 下面两个用于在 双(多循环)互相备份。...# 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。 # 解决这个问题的办法就是让每个数据库的自增主键不连续。...同步 同步就是两台服务器互为主从,把上面的 主从配置 和 命令 反过来再做一遍 就可以了。

    1.7K20

    Mysql配置 同步(上)

    A数据库:182.92.172.80 B数据库:123.57.44.85 二.操作 A数据库操作 1.开启binlog vim /etc/my.cnf [mysqld] log-bin=mysql-bin...#开启二进制日志 server-id=1 #设置server-id,不能一样 2.重启mysql,创建用于同步的用户账号 systemc restart mysql 登陆数据库 mysql -hlocalhost...-uname -ppassword 创建用户并授权:用户:test密码:123456,ip配置为B的IP CREATE USER 'test'@'123.57.44.85' IDENTIFIED BY...privileges; 锁表,禁止写入,当前窗口不能退出,这时候开启另一个终端继续操作 flush table with read lock; 3.新窗口操作,查看master状态,记录二进制文件名(mysql-bin...Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin

    1.2K30

    Mysql主从配置实战

    实战mysql主从配置 准备两个docker容器,分别在3306和3307开启两个mysql主从数据库 可执行以下命令 docker run -p 3306:3306 --name mysql3306.../logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 现在配置mysql配置文件,在conf...binlog_format=mixed server-id=101 从mysql配置 [mysqld] # mysql二进制文件取名 log-bin=mysql-bin # 二进制日志的格式,有三种:...statement/row/mixed binlog_format=mixed server-id=102 在服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到服务器上来共享服务器的日志文件...- 在服务器mysql界面,输入下面语句 GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'; //最后为密码

    94830

    MySQL 主从同步配置

    MYSQL_ROOT_PASSWORD: 12345678 mysql配置文件在容器中 /etc/mysql/my.cnf 路径中,如果为了方便可以映射出来,执行docker-compose up...一一从同步,传统方式指定文件和位置同步 假设有mysql_1、mysql_2 ,1为master,2为slave,配置如下: master 端的配置文件中加入: server-id=1 log-bin...中是NULL MySQL 配置互为主备同步,使用gtid 模式同步 假设 我们目标是 mysql_1 和 mysql_3 互为主备 在mysql_1配置中增加: [mysqld] skip-host-cache...status上出现如标题的错误,如果有这种问题的话,也在slave上执行 reset master; 清除 slave上记录的 gtid,我清除后,stat slave 后看状态没有这个错误了,然后我试了一下在节点更新数据...就研究了下,怎么简单的配置主从设置,其实这块有很多细节。再生产环境中配置的话,需要深入的理解同步的机制,在出现同步问题的时候需要能够快速的解决。

    2.5K10
    领券