mysql主主复制

-1 主主复制读分担50%,写无法分担

-2 配置方法

--1 服务器1号(192.168.1.1)配置完,重启mysql

1   [mysql]
2   server-id=1
3   log-bin=mysql-bin
4   auto-increment-increment=2 
5   auto-increment-offset=1
6   sync-binlog=1
7   innodb-flush-logs-at-trx-commit=1
8   replication-ignore-db=mysql

--2 服务器2号(192.168.1.2)配置完,重启mysql

1   [mysql]
2   server-id=1
3   log-bin=mysql-bin
4   auto-increment-increment=2 
5   auto-increment-offset=2
6   sync-binlog=1
7   innodb-flush-logs-at-trx-commit=1
8   replication-ignore-db=mysql

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

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

--3 服务器1号备份当前数据并记录备份前一刻的bin日志位置(--lock-all-tables自缩/解表,--master-data=2加入bin日志位置,方便一会查看,这里假设1号当前日志是mysql-bin.000004;位置是300)

 ---1 备份服务器1号当前数据

1    mysqldump --all-databases --lock-all-tables --master-data=2 > /tmp/mysql1.sql
2 
3    scp /tmp/mysql1.sql root@192.168.1.2:/tmp/

 ---2 创建授权账号

    ----1 服务器1号授权给服务器2号      

1   mysql -uroot
2   >GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'REPL1'@'192.168.1.1' IDENTIFIED BY '123456';

    ----2 服务器2号授权给服务器1号

1   mysql -uroot
2   >GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'REPL2'@'192.168.1.2' IDENTIFIED BY '123456';

--4 服务器2号导入1号数据,保证1/2号数据库一致性,记录此时2号日志位置(这里假设2号日志是mysql-bin.000001;位置是100);添加1号日志位置,并开启2号slave;

   同时服务器1号添加2号日志位置,并开启1号slave;

  ---1 服务器2号

 1     mysql -uroot -ppassword < /tmp/mysql1.sql
 2     mysql -uroot
 3 
 4     >FLUSH TABLES WITH READ LOCK;
 5 
 6     >SHOW MASTER STATUSG
 7 
 8     >UNLOCK TABLES;
 9 
10     >CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='REPL1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql_bin.000004' 
11 
12      MASTER_LOG_POS='300';
13 
14     >START SLAVE;

  ---2 服务器1号

1     mysql -uroot
2 
3     >CHANGE MASTER TO MASTER_HOST='192.168.1.2',MASTER_USER='PERL2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql_bin-00001' 
4 
5      MASTER_LOG_POS='100';
6 
7     >START SLAVE;

关于FLUSH TABLES WITH READ LOCK

-1 进入mysql会话使用此命令时一定不能退出会话,如果退出会话,所有表会自动解锁

-2 使用flush tables with read lock后再用mysqldump导出数据库脚本会遇到“Toomany connections”的错误,此时在my.cnf中添加“max_connections=500”以及”max_packet=32M”的选项

 
 binlog-format?
 
[星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
原文地址:https://www.cnblogs.com/aaa103439/p/3298833.html