mysql主主-配置数据同步

1、数据库同步设置

  主机操作系统:Centos 6.2

  数据库版本:mysql  Ver 14.14 Distrib 5.1.73

  前提:MYSQL数据库正常启动

ServA:122.112.x.x

ServB:211.101.x.x

1.1 配置同步账号

 在ServA上增加一个ServB可以登录的帐号:

Mysql>grant replication slave on  *.* TO [email protected]‘211.101.x.x‘ IDENTIFIED BY ‘123.com‘;

mysql> flush privileges;

mysql> quit

 在ServB上增加一个ServA可以登录的帐号:

Mysql>grant replication slave on  *.* TO [email protected]‘122.112.x.x‘ IDENTIFIED BY ‘123.com‘;

mysql> flush privileges;

mysql> quit

2配置数据库参数

   以root用户登录ServA,修改ServA的my.cnf文件

[mysqld]

log-bin=mysql-bin

server-id = 1

log-bin = mysql-bin

log-slave-updates

sync_binlog=1

auto-increment-increment = 2

auto-increment-offset = 1
      replicate-do-db = test

replicate-ignore-db =p2pwiki

master-host     =   211.101.x.x

master-user     =   yunip

master-password =   123.com

master-port     = 3307

重启mysql服务:

service mysqldrestart

以root用户登录ServB,修改ServB的my.cnf文件

vi /etc/my.cnf

在[mysqld]的配置项中增加如下配置:

[mysqld]

log-bin=mysql-bin

server-id = 2

log-bin = mysql-bin
       log-slave-updates

sync_binlog=1

auto-increment-increment = 2

auto-increment-offset = 2
       replicate-do-db = test

replicate-ignore-db =p2pwiki

master-host     =   122.112.x.x

master-user     =   yunip

master-password =   123.com

master-port     = 3306

注:二库都只有server-id不同和 auto-increment- offset不同         
    auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
    replicate-do-db 指定同步的数据库,我们只在两台服务器间同步mydb数据库
另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2
(这段标注是抄袭51cto好友“红豆杀”的其主页是http://home.51cto.com/index.php?s=/space/2517622^_^ 在他这学到不少东西。)

#配置完成后,重启两台数据库
 service mysqld restart

3
、分别重启服务器ServAServB上的mysql服务 

分别在服务器ServA、ServB 上查看做为主服务器状态 
ServA:

mysql> stop slave;

mysql> flush tables with read lock;#防止进入新的数据 
Query OK, 0 rows affected (0.00 sec) 
mysql> show master status\G
*************************** 1. row ***************************

File: mysql-bin.000015

Position: 106

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

ServB:

mysql> stop slave;

mysql> flush tables with read lock; 
Query OK, 0 rows affected (0.00 sec) 
mysql> show master status\G
*************************** 1. row ***************************

File: mysql-bin.000025

Position: 106

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

注:这里锁表的目的是为了生产环境中不让进新的数据,好让从服务器定位同步位置。初次同步完成后,记得解锁。

 4、分别在服务器ServAServB上用change master语句指定同步位置 : 
 ServA

mysql>change master to master_host=‘211.101.x.x‘,master_user=‘yunip‘,master_password=‘123.com‘,master_log_file=‘mysql-bin.000025‘,master_log_pos=106; 
Query OK, 0 rows affected (2.28 sec)

ServB

mysql>change master to master_host=‘122.112.x.x‘,master_user=‘yunip‘,master_password=‘123.com‘,master_log_file=‘mysql-bin.000015‘,master_log_pos=106; 
Query OK, 0 rows affected (0.01 sec)

注:master_log_file,master_log_pos由上面主服务器查出的状态值中确定 
master_log_file对应File,master_log_pos对应Position

ServAServB :

mysql> unlock tables; 
Query OK, 0 rows affected (0.00 sec)

分别在服务器ServA、ServB上启动从服务器线程

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

分别在服务器ServA、ServB上查看从服务器状态 :

mysql> show slave status\G 
*************************** 1. row *************************** 
主要关注以下 2 个参数: 
... 
... 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
... 
... 
 注:查看以上两项的值,均为Yes则表示状态正常。

5测试 

ServB 
mysql> show databases; 
+--------------------+

| Database           |

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

| information_schema |

| mysql              |

| p2pbbs             |

| p2pnews            |

| p2pwiki            |

| test               |

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

6 rows in set (0.00 sec)

mysql> use test; 
Database changed 
mysql> show tables; 
Empty set (0.00 sec) 
mysql> create table water (id int); 
Query OK, 0 rows affected (0.04 sec) 
mysql> insert into water values(1); 
Query OK, 1 row affected (0.01 sec) 
mysql>commit; 
Query OK, 0 rows affected (0.00 sec) 
ServA  
mysql> show tables; 
+--------------------+ 
| Tables_in_db_rocky | 
+--------------------+ 
| test | 
| water | 
+--------------------+ 
2 rows in set (0.00 sec) 
mysql> select * from water; 
+------+ 
| id | 
+------+ 
| 1 | 
+------+ 
1 row in set (0.00 sec)

时间: 2024-08-29 15:07:13

mysql主主-配置数据同步的相关文章

【转】mysql数据库读写分离数据同步

转载请注明来源:mysql数据库读写分离数据同步 mysql数据库读写分离数据同步 我是用了两个xp(一个主的,一个从的)的系统测试成功的,linux系统我也做测试了,没有成功,不过我想我所遇到的问题是同一个问题,xp下的可以成功,linux下的应该也可以成功,稍候会测试,然后更新结果! PS:刚测试了下linux 可以同步成功,主服务器是xp,从服务器是centos,可以成功. 例: A机器 192.168.0.2 B机器 192.168.0.3 两个机器可以ping通,互相访问 先配置主服务

TiDB 作为 MySQL Slave 实现实时数据同步

由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性下使用 TiDB 对现有的业务进行备份,应对未来数据量或者并发量增长带来的单点故障风险,如需上线 TiDB,也只需要简单的将业务的主 MySQL 地址指向 TiDB 即可. 下面我们详细介绍了如何将 MySQL 的数据迁移到 TiDB,并将 TiDB 作为 MySQL 的 Slave 进行数据同步.

Mysql主从复制,实现数据同步

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

MySQL数据库跨服务器数据同步

1.背景介绍最近公司项目要求与开源项目Zentao做数据对接,因为改动开源项目风险较大,采用将Zentao数据库的相关表与本地数据库同步的方案.由我测试方案的可行性.mysql版本:5.7.20.本地数据库A(作为Zentao数据库),本地数据库B,本地程序C:本地为Windows环境. 2.方案探索方案1项目经理的意思是在A中写触发器,表中数据变化时将ID发给C,由C在A中查询变化的数据,写入B.过程中需要安装mysql-udf-http插件(参考:https://www.2cto.com/d

通过Gearman实现MySQL到Redis的数据同步

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached.File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器. 但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能. 所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache.而这种需求目前还没有看

搭建MySQL的主从、半同步、主主复制架构

复制其最终目的是让一台服务器的数据和另外的服务器的数据保持同步,已达到数据冗余或者服务的负载均衡.一台主服务器可以连接多台从服务器,并且从服务器也可以反过来作为主服务器.主从服务器可以位于不同的网络拓扑中,由于mysql的强大复制功能,其复制目标可以是所有的数据库,也可以是某些数据库,甚至是某个数据库中的某些表进行复制. MySQL支持的两种复制方案:基于语句复制,基于行复制基于语句复制基于行复制,这两种复制方式都是通过记录主服务器的二进制日志中任何有可能导致数据库内数据发生改变的SQL语句到中

mysql高可用方案之Keepalived+主主复制

环境规划: node1:    192.168.1.250 node2:    192.168.1.251 vip:      192.168.1.201 数据库:   mysql-5.6.23 1.各节点的网络配置 node1节点: [[email protected] ~]# hostname node1[[email protected] ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKN

MySQL双主+keepalived实现高可用

mysql+keepalived实现高可用+主主复制模式 为了解决mysql的单点故障问题,衍生出很多mysql的高可用方案: keepalived+双主.MHA.PXC.MMM.Hearbeat+DRBD等,比较常用的一般是keepalived+双主,MHA和PXC 在此搭建实验环境,实现keepalived+mysql双主模式. 实验思路: 两台MySQL互为主从关系(双主),通过keepalived配置虚拟vip,实现当其中的一台MySQL数据库宕机后,应用能自动切换到另外一台MySQL数

MySQL主从复制与主主复制

1.简介 MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一.但不可忽略的是它本身的功能的确很强大.随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器(这篇博客暂时不涉及).在此之前我们必须要保证每台MySQL服务器里的数据同步.数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制. 回到顶部 2.环境说明 两台linu