广告
返回顶部
首页 > 资讯 > 数据库 >mysql数据库主从同步之双主配置----互为主从
  • 751
分享到

mysql数据库主从同步之双主配置----互为主从

2024-04-02 19:04:59 751人浏览 泡泡鱼
摘要

Mysql数据库复制原理:整体上来说,复制有3个步骤:   (1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log even


Mysql数据库复制原理:

整体上来说,复制有3个步骤:  

(1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2)slave将master的binary log events拷贝到它的中继日志(relay log);

(3)slave重做中继日志中的事件,将改变反映它自己的数据。

下图描述了复制的过程:

mysql数据库主从同步之双主配置----互为主从


                                 

      该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。Mysql将事务串行的写入二进制日 志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

       下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中 继日志。

       sql slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数 据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

        此外,在master中也有一个工作线程:和其它mysql的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制 过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。



具体配置


环境

MySQL-master1:10.6.1.210

MySQL-master2:10.6.1.211

OS版本:Centos 6.6
MySQL版本:5.1.73


一、MySQL master-master配置


1.1、修改MySQL配置文件


两台MySQL均如要开启binlog日志功能,开启方法:在MySQL-master1  配置文件/etc/my.cnf


 [MySQLd]段中加上

user = mysql
log-bin=mysql-bin

binlog_fORMat=mixed

relay-log=relay-bin

server-id = 1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates=1     (log-slave-updates也可以)
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1


在MySQL-master2 配置文件/etc/my.cnf


 [MySQLd]段中加上

user = mysql
log-bin=mysql-bin

binlog_format=mixed
relay-log=relay-bin

server-id=10
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates=1   (log-slave-updates也可以)

slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2


将两个配置文件保存,分别重启mysql服务器


讲解几个重要的常用选项:


server_id

值必须为2到232–1之间的一个正整数值。ID值唯一的标识了复制群集中的主从服务器,因此它们必须各不相同。


binlog-do-db=database

是要记录日志的数据库


同步多个数据库重复设置选项 binlog-do-db=test 和replicate-do-db=test

例如                              

 binlog-do-db=test1

 replicate-do-db=test1

 binlog-do-db=test2 

 replicate-do-db=test2


binlog-ignore-db

不要记录日志的数据库名,多个数据库中间用逗号(,)隔开;

 

log-slave-updates=1

这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如果这个从服务器B是服务器A的 从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选项,这样它的从服务器C才能获得它的二进制日志进行同步操作


sync_binlog=1

  这个参数直接影响mysql的性能和完整性. 在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统Crash,在文件系统缓存中的所有Binlog信息都会丢失



auto_increment_increment=2
auto_increment_offset=1


auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了


auto_increment_increment = 2

auto_increment_offset = 2

auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了


这样才可以避免两台服务器同时做更新时自增长字段的值之间发生冲突。


另外:

master-connect-retry


master-connect-retry这个参数是用来设置在和主服务器连接丢失的时候,重试的时间间隔,默认是60秒


read-only

read-only是用来限制普通用户对从数据库的更新操作,以确保从数据库的安全性,不过如果是超级用户依然可以对从数据库进行更新操作


slave-skip-errors


在复制过程中,由于各种的原因,从服务器可能会遇到执行BINLOG中的SQL出错的情况,在默认情况下,服务器会停止复制进程,不再进行同步,等到用户自行来处理。

Slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句。


skip-slave-start

表示从mysql服务器启动时不启动同步线程,这就要在启动从服务器之后,手工启动同步线程



1.2  做同步之前要保证两个数据库数据一致.


如果主数据库有数据的话。 数据库表操作,不让数据再进行写入动作。

mysql> FLUSH TABLES WITH READ LOCK;


用命令mysqldump备份数据库。

在master服务器执行

shell> mysqldump -uroot -p123456 test >test.sql

看主数据库的状态 mysql> show master status;

记录File 和 Position 项的值

注:没有锁定主服务器,这里记录的主服务器二进制日志position值可能会大于做mysqldump时的值,这将导致从服务器丢失在此期间的更新。如果可以保证在此期间主服务器不会出现创建新表的更新,那么丢失的影响不大;否则,将导致从服务器复制线程失败,这时必须在做mysqldump时锁定主服务器。

-----------------------------------------------

从服务器中my.cnf文件中加入选项

skip-slave-start

表示从mysql服务器启动时不启动同步线程,这就要在启动从服务器之后,手工启动同步线程,在mysql> 提示符下面运行“start slave”就可以

保存my.cnf后


执行

shell> mysqladmin -uroot -p123456 create test

shell> mysql -uroot -p123456 test <test.sql


启动从服务器线程

mysql>start slave;

取消主数据库锁定 mysql>UNLOCK TABLES;





1.3、将10.6.1.210设为10.6.1.211的主服务器


在10.6.1.210上新建授权用户 

MySQL> grant  replicationclient,replication  slave  on  *.*   to  'repluser'@'10.6.1.211'  identified by  '123456';

Query OK, 0 rows affected (0.00 sec) 


MySQL>flush privileges;
Query OK, 0 rows affected (0.00 sec)


查看Master数据库上的bin文件以及时间点. 登录Master服务器的mysql  后执行:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000015 |     2474 | test         |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


此处,bin文件为mysql-bin.000015,节点为2474。



在10.6.1.211将10.6.1.210设为自己的主服务器


MySQL> change master to master_host='10.6.1.210',master_user=' repluser ',master_passWord='123456',master_log_file='MySQL-bin.000015',master_log_pos=2474;
Query OK, 0 rows affected (0.05 sec)


红色标注部分为10.6.1.210主机中show master status;命令结果中的file、postion两个值


MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)

  

MySQL> show slave status/G


Slave_IO_Running:Yes            #IO thread  是否运行

Slave_SQL_Running:Yes         #SQL thread是否运行


 


1.4、将10.6.1.211设为10.6.1.210的主服务器


在10.6.1.211上新建授权用户 

MySQL> grant  replicationclient,replication  slave  on  *.*   to 'repluser'@'10.6.1.210'  identified by  '123456';

Query OK, 0 rows affected (0.00 sec)

 

 MySQL>flush privileges;
Query OK, 0 rows affected (0.00 sec)


查看Master数据库上的bin文件以及时间点. 登录Master服务器的mysql  后执行:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |     1476 | test         |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


此处,bin文件为mysql-bin.000004,节点为1476。




在10.6.1.210将10.6.1.211设为自己的主服务器

MySQL> change master to master_host='10.6.1.211',master_user=' repluser ',master_password='123456',master_log_file='MySQL-bin.000004',master_log_pos=1476;
Query OK, 0 rows affected (0.05 sec)  

MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)   

MySQL>

MySQL> show slave status/G


Slave_IO_Running:Yes            #IO thread  是否运行

Slave_SQL_Running:Yes         #SQL thread是否运行



1.5 、其他命令

1.5.1、查看复制进度
需要在主库上运行
mysql>show processlist \G;

1.5.2、主服务器上的相关命令:
show processlist;
show master status
show slave hosts
show {master|binary} logs
show binlog events
purge {master|binary} logs to 'log_name'
purge {master|binary} logs before 'date'
reset master(老版本flush master)
set sql_log_bin={0|1}

1.5.3、从服务器上的相关命令:
slave start
slave stop
slave stop IO_THREAD //此线程把master段的日志写到本地
slave start IO_THREAD
slave stop SQL_THREAD //此线程把写到本地的日志应用于数据库
slave start SQL_THREAD
reset slave
set global sql_slave_skip_counter
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息
PURGE MASTER [before 'date'] 删除master端已同步过的日志




您可能感兴趣的文档:

--结束END--

本文标题: mysql数据库主从同步之双主配置----互为主从

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql数据库主从同步之双主配置----互为主从
    Mysql数据库复制原理:整体上来说,复制有3个步骤:   (1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log even...
    99+
    2022-10-18
  • MySQL主从配置:主从介绍、配置主和从 、测试主从同步
                MySQL主从介绍(两台机器数据同步)主:-->binlog从:-...
    99+
    2022-10-18
  • MySQL数据库之主从同步
    一、概述:MYSQL主从同步架构是目前使用最多的数据库架构之一,主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(sl...
    99+
    2022-10-18
  • Mysql数据库的主从同步配置
    目录Mysql主从同步配置1、安装两个 mysql 2、编写mysql配置文件3、初始化数据4、其他mysql 相关命令Mysql主从同步配置 配置准备: 需要两个数据库...
    99+
    2022-11-12
  • MySQL主从同步配置
    Mysql 主从同步原理 就是基于数据库里面的那个 binlog 文件进行数据同步 具体步骤: step1:master将数据改变记录到二进制日志(binary log)中。step2: 当slav...
    99+
    2023-09-09
    mysql
  • linux下mysql数据库主从同步配置
    说明:操作系统:CentOS 5.x 64位MySQL数据库版本:mysql-5.5.35MySQL主服务器:192.168.21.128MySQL从服务器:192.168.21.129准备篇:说明:在两台...
    99+
    2022-10-18
  • Mysql数据库主从同步简单配置
    一、主从同步:(A--->B) master:192.168.71.128slave:192.168.71.138 1、Master配置:vi /etc/my.cnfserver-...
    99+
    2022-10-18
  • MySQL数据库的主从配置(多主对一从)
    一、实验环境部署主服务器 192.168.18.42 端口3306  ==》 从服务器 192.168.18.44 端口 3306    主服务器...
    99+
    2022-10-18
  • MariaDB、MySQL数据库主从同步
    1、Mysql主从同步异步概念    异步:主服务器写完日志后立即返回同步完成消息,不受从服务器的状态和影响,mysql默认为异步工作模式  &n...
    99+
    2022-10-18
  • Linux下Mongodb数据库主从同步配置
    说明:有两台已经安装完成的Mongodb数据库服务器,现在需要把一台设置为主库,另一台设置为从库,实现主从同步。操作系统:CentOS 7.0 64位MongoDB数据库版本:mongodb-linux-x...
    99+
    2022-10-18
  • 配置mysql数据库主从同步非交互式的具体步骤
    下文主要给大家带来配置mysql数据库主从同步非交互式的具体步骤,希望配置mysql数据库主从同步非交互式的具体步骤能够带给大家实际用处,本文以一台mysql数据库多实例3306和3308为例进行配置,33...
    99+
    2022-10-18
  • 配置mysql数据库主从同步交互式的操作方法
    下面一起来了解下配置mysql数据库主从同步交互式的操作方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望配置mysql数据库主从同步交互式的操作方法这篇短内容是你想要的。一.my.cnf文件配置1.修...
    99+
    2022-10-18
  • MYSQL数据库怎么设置主从同步
    本篇文章为大家展示了MYSQL数据库怎么设置主从同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、配置主数据库主master : 192.168.1.132从slave : 192.168.1....
    99+
    2023-06-29
  • MYSQL数据库如何设置主从同步
    目录1、配置主数据库2、配置从数据库总结MYSQL可以配置1个主数据库多个从数据库 1、配置主数据库 主master : 192.168.1.132 从slave : 192.168...
    99+
    2022-11-13
  • MySQL中怎样配置互为主从
    本篇文章给大家分享的是有关MySQL中怎样配置互为主从,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQL-VIP:192.168.1.2...
    99+
    2022-10-18
  • MySQL中怎么配置互为主从
    这期内容当中小编将会给大家带来有关MySQL中怎么配置互为主从,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1)    &nb...
    99+
    2022-10-18
  • mysql服务器主从数据库同步如何配置
    小编给大家分享一下mysql服务器主从数据库同步如何配置,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!首先需要在同一个局域网内的两台机器(当然也可以用一台机器虚拟两台机器出来),都安装上mys...
    99+
    2022-10-18
  • 如何进行mysql数据库主从同步中数据库同步配置
    这篇文章给大家介绍如何进行mysql数据库主从同步中数据库同步配置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的...
    99+
    2022-10-18
  • MySQL 5.6.35主从同步配置案例
    MySQL 5.6主从同步配置案例分享本文环境  主库:Redhat 6.5 x64 192.168.1.180 mysql-5.6.35   备库:Redhat 6.5 x6...
    99+
    2022-10-18
  • MySql主从同步配置及实现
    mysql主从复制 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作