首页 > 数据库 >mysql主主复制(双主复制)配置步骤

mysql主主复制(双主复制)配置步骤

时间:2024-01-23 15:03:07浏览次数:26  
标签:Log 主主 192.168 Master 复制 master mysql 服务器

以前我们介绍的都是主从复制,这里给各位介绍一个双主复制了,下面都希望两个主服务器数据自动复制的话可参考一下此文章。

 

MySQL主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。
有了上一节的主从复制,那么主主复制就很容易了。

一、先修改配置文件

服务器A(192.168.1.254)配置如下

 
log-bin   = mysql-bin
server-id = 1 
expire-logs-days  = 100 
replicate-do-db   = test
binlog-ignore-db  = mysql
binlog-ignore-db  = information_schema
auto-increment-increment = 2 
auto-increment-offset = 1
服务器B(192.168.1.252)配置

 
log-bin   = mysql-bin
server-id = 2
expire-logs-days  = 100
replicate-do-db   = test
binlog-ignore-db  = mysql
binlog-ignore-db  = information_schema
auto-increment-increment = 2
auto-increment-offset = 2
两台服务器都重启

 
mysql> service mysqld restart
注:二都只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
replicate-do-db 指定同步的数据库,我们只在两台服务器间同步test数据库
另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2

二、同步数据

本文是用test做的实验,导出将test.sql文件从254服务器拷贝到252服务器
备份数据前先锁表,保证数据一致性

 
mysql> FLUSH TABLES WITH READ LOCK;

 
# mysqldump -uroot -p123456 test> /tmp/test.sql;

 
mysql> UNLOCK TABLES;

 scp /tmp/test.sql [email protected]:/tmp三、相互授权用户(在A服务器授权一个允许B访问的用户,反之亦然)

在服务器A(192.168.1.254)上

 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.252' IDENTIFIED BY PASSWORD '123456';
mysql> flush privileges;
在服务器B(192.168.1.252)上

 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.254' IDENTIFIED BY PASSWORD '123456';
mysql> flush privileges;
四、互告bin-log信息

在服务器A(192.168.1.254)

 
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000006 |      106 |      | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
在服务器A(192.168.1.252)

 
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File     | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000008 |      192 |      | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
在A服务器(192.168.1.254)上执行

 
mysql> change master to master_host='192.168.1.252',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000008',master_log_pos=192;
在B服务器(192.168.1.252)上执行

 
mysql> change master to master_host='192.168.1.254',master_user='mysync',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;
五、在两服务器都执行以下命令

mysql> start slave;

六、查看状态

mysql> show slave status\G
A服务器(192.168.1.254)状态如下:

 Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.1.252
  Master_User: mysync
  Master_Port: 3306
Connect_Retry: 60
      Master_Log_File: mysql-bin.000008
  Read_Master_Log_Pos: 192
       Relay_Log_File: mysqld-relay-bin.000009
Relay_Log_Pos: 337
Relay_Master_Log_File: mysql-bin.000008
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
      Replicate_Do_DB: test
B服务器(192.168.1.252)状态如下:

  Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.1.254
  Master_User: mysync
  Master_Port: 3306
Connect_Retry: 60
      Master_Log_File: mysql-bin.000006
  Read_Master_Log_Pos: 106
       Relay_Log_File: mysqld-relay-bin.000014
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000006
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
      Replicate_Do_DB: test
当看到了两个yes,即:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明已经配置成功了

接下来看可以做一下实验,测试一下是否同步

PS:
在测试的过程当中,我也遇到一些问题主要是两台机器互相通信的问题
请注意,一定要保持两台的服务器的mysql端口都向对方打开,要不然是不能成功同步的。



标签:Log,主主,192.168,Master,复制,master,mysql,服务器
From: https://blog.51cto.com/u_16532032/9380056

相关文章

  • MySQL MHA配置
     MySQL环境:   master:192.168.202.129:3306   slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130:3306,192.168.202.130:3307,192.168.202.130:3308   MariaDB-10.0.13   MHA环境:   manager:192.168.202.129   node:192.168.202.130(3306端......
  • mysql mha 主从自动切换 高可用
    mha(MasterHighAvailability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案。 一,什么是mha,有什么特性1.主服务器的自动监控和故障转移MHA监控复制架构的主服务器,一旦检测到主服务器故障,就会自动进行故障转移。即使有些从服务器没有收到最新的relaylog,MHA自动......
  • mysql innobackupex xtrabackup 大数据量 备份 还原
    大数据量备份与还原,始终是个难点。当MYSQL超10G,用mysqldump来导出就比较慢了。在这里推荐xtrabackup,这个工具比mysqldump要快很多。 一、Xtrabackup介绍1,Xtrabackup是什么Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDBHot......
  • mysql 查询所有表
    MySQL是一种开源的关系型数据库管理系统,在各种Web应用中使用广泛,因为它是高度可定制且易于管理的。MySQL包含一组操作,使您可以创建,更新和查询数据库中的数据。其中一个重要操作是查询所有表的数据,本文将介绍如何实现这一操作。一、使用SHOWTABLES命令SHOWTABLES命令是最简单和......
  • mysql权限的一个细枝
    业务需求:对一个用户回收一个表的所有权限,但是之前对这个用户是授权表所在库的整个权。 背景:某个表后来插入了机密数据,不能再让人随便查阅了。  比如:存在库test01 库下存在表T1,那mysql是否支持呢,来复盘下整个操作:  首先整库授权: grantallprivilgesontest01.*to......
  • mysql分析sql语句基础工具 -- explain
    分析sql语句explainexplain(sql语句)G;分析结果:idsql语句编号如果是连接查询,表之间是平等关系,编号相同;如果有子查询,编号递增。select——type查询类型table查询针对的表 该值可能是实际的表名或者临时表,derived表示form子查询,null表示无须查表possible_key可能用到的索引ke......
  • MySQL 8.0 的xtrabackup备份
     xtrabackup备份语句:   fname=`date+%F_%H-%M-%S`mkdir-p/mnt/dbbak/db_$fnamextrabackup--defaults-file=/etc/my.cnf-uhyb-phd-h/var/lib/mysql-S/var/lib/mysql/mysql.sock-Hlocalhost--port=3306--backup--parallel=4--target-dir=/mnt/dbbak/db_$f......
  • mysql之my.cnf详解
    值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;relay-log-purge=1#是否自动清空不再需要中继日志时。默认值为1(启用)expire_logs_days=30#超过30天的binlog删除binlog_cache_size=1M#在一个事务中......
  • 随Linux开机自动启动mysql
    在MySQL的管理过程中,会遇到PCServer脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都手动操作,是很繁琐的事情。我们可以采用随系统一起启动MySQL服务,这样就解决了频繁手动启动MySQL的问题。要实......
  • mysql_safe和mysql_multi
    1mysql_safe原理mysqld_safe其实为一个shell脚本(封装mysqld),启动时需要调用server和database(即/bin和/data目录),因此需要满足下述条件之一:1/bin和/data和mysql_safe脚本位于同一目录;2如果本地目录找不到找到/bin和/data,mysqld_safe试图通过绝对路径定位(/usr/local);shell>......