热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxmysql主主同步复制

以前两台mysql服务器已经做了主从复制,现在实现两台mysql服务器相互进行数据的同步,实现过程如下:1、两个数据库做如下操作:mysql>stopslave;QueryOK


以前两台mysql服务器已经做了主从复制,现在实现两台mysql服务器相互进行数据的同步,实现过程如下:


1、两个数据库做如下操作:

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

注:1.如果停止slave话,当锁定数据表时,无法再停止

    2.都停止slave时防止数据再更新,这样更能保证的数据的一致性


mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

注:确认现在哪台数据库服务器中的数据是最新的,确认完成之后,就锁定这台服务器数据库的表,另一台不用锁定


假如:A(192.168.0.100)、B(192.168.0.200)两台数据库服务器,A服务器上数据库的数据是最新的,


一、在A服务器上的操作:


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 |

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

| mysql-bin.000103 | 24210472 |              |                  | 

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

1 row in set (0.00 sec)


备份A服务器上的数据:

[root@server ~]# mysqldump --lock-tables=false -u root -p123456 --all-databases > /back/mysql/all_db.sql


注:mysqldump备份时不能锁表,如果想在锁表情况下备份加上:--lock-tables=false参数,如果是innodb,则加上--single-transcation比较好。


将备份的数据拷贝到B服务器上

[root@server ~]# scp /back/mysql/all_db.sql root@192.168.0.110:/back/mysql/all_db.sql



二、在B服务器上的操作:

将A服务器备份的数据导入到B服务器的数据库中

[root@server mysql]# mysql -uroot -p123456


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 |

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

| mysql-bin.000078 | 53243762 |              |                  | 

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

1 row in set (0.00 sec)


在B服务器上更新二进制日志信息使之与A服务器上的日志信息一致

mysql> change master to master_host='192.168.0.100',master_user='rsynUser',master_password='rsyn123456',master_log_file='mysql-bin.000103',master_log_pos=24210472;  



三、在A服务器上的操作:

在A服务器上同样也更新二进制日志信息使之与B服务器上的日志信息一致

mysql> change master to master_host='192.168.0.200',master_user='rsynUser',master_password='rsyn123456',master_log_file='mysql-bin.00078',master_log_pos=53243762;  


开启复制功能

mysql> start slave;


四、在B服务器上的操作:

开启复制功能

mysql> start slave;


解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)


五、在A服务器上的操作:

解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)


查看状态,如果出现如下,都是YES,那么就成功了

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes



同样在B服务器上也查看状态,如果出现两个YES ,说明主主复制成功配置完成



=========================================================================================

配置文件注意:


在MySQL的主配置文件中修改/添加如下内容:

Server-A上:

[mysqld]

log-bin=mysql-bin

server-id=111

auto-increment-offset=1

auto-increment-increment=2

replicate-do-db=mydb


[root@server ~]# service mysqld restart


Server-B上:

[mysqld]

log-bin=mysql-bin

server-id=222

auto-increment-offset=2 

auto-increment-increment=2

replicate-do-db=mydb


[root@server ~]# service mysqld restart


注:二都只有server-id不同和 auto-increment-offset不同

auto-increment-offset是用来设定数据库中自动增长的起点的,会为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

replicate-do-db 指定同步的数据库,我们只在两台服务器间同步mydb数据库


另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2




本文出自 “分享技术,分享快乐” 博客,请务必保留此出处http://techs.blog.51cto.com/5627717/1556272


推荐阅读
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
author-avatar
书苑幽香
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有