MySQL-master1:192.168.72.128
 
MySQL-master2:192.168.72.129
 
OS版本:CentOS 5.4
MySQL版本:5.5.9(主从复制的master和slave服务器中的mysql版本相同或者master版本高于slave版本)
 
一、MySQL master-master配置
 
1、修改MySQL配置文件
 
两台MySQL均如要开启binlog日志功能,开启方法:在MySQL-master1  配置文件/etc/my.cnf
 
 [MySQLd]段中加上
 
user = mysql
log-bin=mysql-bin
server-id = 1
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
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
server-id= 2
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
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 是不要记录日志的数据库名,多个数据库中间用逗号(,)隔开;
 
mysql配置文件my.cnf中    log-slave-updates表示 如果一个MASTER 挂掉的话,另外一个马上接管。
 
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1   指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 。
 
auto_increment_offset = 1
auto_increment_increment = 2
这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
 
auto_increment_offset = 2
auto_increment_increment = 2
这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了
 
你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3 台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID 重复。
 
2、将192.168.72.128设为192.168.72.129的主服务器
 
在192.168.72.128上新建授权用户
 
MySQL> grant replication slave on *.* to 'replication'@'%' identified by 'replication';
Query OK, 0 rows affected (0.00 sec) 
 
 MySQL>flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
MySQL> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 |      374 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 
    ------------------------------------------------------------------------------
在192.168.72.129将192.168.72.128为自己的主服务器
 
MySQL> change master to master_host='192.168.72.128',master_user='replication',master_password='replication',master_log_file='MySQL-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)  
 
MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)  
 
MySQL> show slave status/G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.72.128
                Master_User: replication
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: MySQL-bin.000003
        Read_Master_Log_Pos: 374
             Relay_Log_File: MySQL-master2-relay-bin.000002
              Relay_Log_Pos: 235
      Relay_Master_Log_File: MySQL-bin.000003
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 374
            Relay_Log_Space: 235
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 0
1 row in set (0.00 sec)
 
红色标注部分为192.168.72.128主机中show master status命令结果中的file postion两个值
 
 
 
3、将192.168.72.129设为192.168.72.128的主服务器
 
在192.168.72.129上新建授权用户
 
MySQL> grant replication slave on *.* to 'replication'@'%' identified by 'replication';
Query OK, 0 rows affected (0.00 sec)  
 
 MySQL>flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
MySQL> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 |      374 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 
----------------------------------------------------------------------------------
在192.168.72.128将192.168.72.129为自己的主服务器
 
MySQL> change master to master_host='192.168.72.129',master_user='replication',master_password='replication',master_log_file='MySQL-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)  
 
MySQL> start slave;
Query OK, 0 rows affected (0.00 sec)  
 
MySQL> show slave status/G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.72.129
                Master_User: replication
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: MySQL-bin.000003
        Read_Master_Log_Pos: 374
             Relay_Log_File: MySQL-master2-relay-bin.000002
              Relay_Log_Pos: 235
      Relay_Master_Log_File: MySQL-bin.000003
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 374
            Relay_Log_Space: 235
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 0
1 row in set (0.00 sec)
 
如果主数据库有数据的话
 
数据库锁表操作,不让数据再进行写入动作。mysql> FLUSH TABLES WITH READ LOCK ;
 
用命令mysqldump
 
备份数据库。
 
在master服务器执行
 
shell> mysqldump -uroot -p123456 --master-data  --opt test1 > backup-file.sql
 
看主数据库的状态mysql> show master status;
 
记录File 和Position 项的值
 
注:由于没有锁定主服务器,这里记录的主服务器二进制日志position值可能会大于做mysqldump时的值,这将导致从服务器丢失在此期间的更新。如果可以保证在此期间主服务器不会出现创建新表的更新,那么丢失的影响不大;否则,将导致从服务器复制线程失败,这时必须在做mysqldump时锁定主服务器。
 
-----------------------------------------------
 
从服务器中my.cnf文件中加入选项
skip-slave-start
skip-slave-start 表示从mysql服务器启动时不启动同步线程,这就要在启动从服务器之后,手工启动同步线程,在mysql> 提示符下面运行“start slave”就可以
 
保存my.cnf后
 
执行
 
shell> mysqladmin -uroot -p123456 create test1
 
shell> mysql -uroot -p123456 test1 < backup-file.sql
 
启动从服务器线程
 
mysql>start slave;
 
取消主数据库锁定mysql>UNLOCK TABLES;
 
4、其他命令
 
1、查看复制进度
需要在主库上运行
mysql>show processlist \G;
 
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}
 
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端已同步过的日志
 
=========================================================================
skip-slave-start
server-id = 1
 
log-bin=C:/Program Files/MySQL/MySQL Server 5.0/00/repbinlog
log-error=C:/Program Files/MySQL/MySQL Server 5.0/rep/rep.err
relay-log=C:/Program Files/MySQL/MySQL Server 5.0/rep/beltal_relay_log
sync_binlog=1
log-slave-updates
innodb_flush_log_at_trx_commit=1
binlog-do-db=sync
 
#slave
master-host     =   192.168.1.144
master-user     =   replicate
master-password =   replicate
master-port     =  3306
master-connect-retry=60
replicate-do-db = sync
report-host=192.168.1.80

mysql互为主从复制配置笔记的更多相关文章

  1. mysql互为主从复制配置笔记--未读,稍后学习

    MySQL-master1:192.168.72.128 MySQL-master2:192.168.72.129 OS版本:CentOS 5.4MySQL版本:5.5.9(主从复制的master和s ...

  2. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  3. mysql的主从复制配置

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...

  4. Linux下mysql的主从复制配置

    1.准备两台数据库环境,或者单台多实例环境,能正常启动和登录. 数据库的安装和多实例配置请参考https://www.cnblogs.com/qiuhom-1874/p/9757061.html. 2 ...

  5. mysql 互为主从复制常见问题

    报错:1)change master导致的:              Last_IO_Error: error connecting to master - retry-time: 60  retr ...

  6. Keepalived与MySQL互为主从自动切换配置

    为解决Mysql数据库单点问题,实现两台MySQL数据库互为主备,双向replication.当一Master出现问题,则将Slave切换为Master继续工作. 环境说明 系统版本:CentOS L ...

  7. mysql主从复制配置

    使用mysql主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务. 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率. 3. ...

  8. Mysql中主从复制的原理、配置过程以及实际案例

    Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...

  9. 二:mysql安装配置、主从复制配置详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8213723.html 邮箱:moyi@moyib ...

随机推荐

  1. uva 1056

    floyd 算法 用了stl 的map 存名字的时候比较方便 #include <cstdio> #include <cstdlib> #include <cmath&g ...

  2. xml存储图片 二进制存储图片

    一.保存图片到XML文件 /// <summary> /// 保存图片到XML文件 /// </summary> private void UploadImageToXml() ...

  3. Ignore files which are already versioned

    If you accidentally added some files which should have been ignored, how do you get them out of vers ...

  4. html rowspan colspan代码示例

    <html> <body> <table border="1"> <tr> <td rowspan="4" ...

  5. javascript加速运动

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. Oracle 6 - 锁

    Oracle锁没有额外的开销?Oracle的锁是怎么实现的?因为其他数据库,锁都是一种稀有资源和开销. 答:代码级实现?? 没有锁的话,并发更新就会有丢失更新的问题. 悲观锁和乐观锁 悲观锁一般用于有 ...

  7. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序

    posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...

  8. wxpython ItemContainer

    ItemContainer 是 很多可以添加string item的部件的父类,封装很多有用的方法,可以用来获取部件的被选中item 的string 如wx.ListBox ,wx.CheckList ...

  9. WCF 简单示例

    WCF(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK).WC ...

  10. !!流行的php面试题及答案

    分类: 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; ...