1. binlog-do-dbreplicate-do-db表示需要同步的数据库
  2. binlog-ignore-dbreplicate-ignore-db表示不需要同步的数据库

云端服务器为master配置如下:

  1. [root@DB data]# egrep "server-id|log-bin|binlog-ignore-db|auto-increment-increment|auto-increment-offset|slave-skip-errors" /etc/my.cnf
  2. log-bin=mysql-bin
  3. binlog-ignore-db = mysql,information_schema
  4. auto-increment-increment = 2
  5. auto-increment-offset = 1
  6. slave-skip-errors = all
  7. server-id = 1
  8. #server-id = 2
  9. #log-bin=mysql-bin

先查看下log bin日志和pos值位置:

  1. [root@DB data]# mysql -uroot -p -e "show master status;"
  2. Enter password:
  3. +------------------+----------+--------------+--------------------------+
  4. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  5. +------------------+----------+--------------+--------------------------+
  6. | mysql-bin.000016 | 107 | | mysql,information_schema |
  7. +------------------+----------+--------------+--------------------------+
  1. [root@DB data]# service mysqld restart
  2. Shutting down MySQL. SUCCESS!
  3. Starting MySQL... SUCCESS!
  1. mysql> select user,password,host from user;
  2. +--------+-------------------------------------------+-----------+
  3. | user | password | host |
  4. +--------+-------------------------------------------+-----------+
  5. | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | localhost |
  6. | zabbix | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | % |
  7. +--------+-------------------------------------------+-----------+
  8. 2 rows in set (0.05 sec)
  9.  
  10. mysql> grant replication slave on *.* to 'rep'@'%' identified by 'replication';
  11. Query OK, 0 rows affected (0.05 sec)
  12.  
  13. mysql> flush privileges;
  14. Query OK, 0 rows affected (0.00 sec)
  15.  
  16. mysql> change master to
  17. -> master_host='192.168.1.99',
  18. -> master_user='rep',
  19. -> master_password='replication',
  20. -> master_log_file='mysql-bin.000016',
  21. -> master_log_pos=107;
  22. Query OK, 0 rows affected (0.41 sec)
  23.  
  24. mysql> select user,password,host from user;
  25. +--------+-------------------------------------------+-----------+
  26. | user | password | host |
  27. +--------+-------------------------------------------+-----------+
  28. | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | localhost |
  29. | rep | *D36660B5249B066D7AC5A1A14CECB71D36944CBC | % |
  30. | zabbix | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | % |
  31. +--------+-------------------------------------------+-----------+
  32. 3 rows in set (0.00 sec)
  33. mysql> start slave;
  34. Query OK, 0 rows affected (0.00 sec)

backup配置如下:

  1. mysql中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offsetauto_increment_increment
  2. auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 ..
  3. auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 ..
  4. 在主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为12.
  1. mysql> use mysql;
  2. Database changed
  3. mysql> select user,host,password from user;
  4. +--------+-----------+-------------------------------------------+
  5. | user | host | password |
  6. +--------+-----------+-------------------------------------------+
  7. | root | localhost | *5E9021B1C46435835981A94A7087707B3465144B |
  8. | master | % | *5E9021B1C46435835981A94A7087707B3465144B |
  9. | rep | % | *5E9021B1C46435835981A94A7087707B3465144B |
  10. +--------+-----------+-------------------------------------------+
  11. 3 rows in set (0.00 sec)
  12.  
  13. mysql> grant replication slave on *.* to 'rep'@'%' identified by "3306";
  1. mysql> show master status;
  2. +------------------+----------+--------------+------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +------------------+----------+--------------+------------------+
  5. | mysql-bin.000023 | 184 | | |
  6. +------------------+----------+--------------+------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> change master to
  9. -> master_host='192.168.1.66',
  10. -> master_user='rep',
  11. -> master_password='3306',
  12. -> master_log_file='mysql-bin.000023',
  13. -> master_log_pos=184;
  14. Query OK, 0 rows affected (0.29 sec)
  15.  
  16. mysql> start slave;
  17. Query OK, 0 rows affected (0.01 sec)
  1. mysql> show slave status;
  1. Slave_IO_Running: Yes
  2.  Slave_SQL_Running: Yes

如果有如下报错及解决方案:

  1. mysql> slave stop
  2. -> ;
  3. Query OK, 0 rows affected, 1 warning (0.00 sec)
  4.  
  5. mysql> reset slave;
  6. Query OK, 0 rows affected (0.18 sec)
  7.  
  8. mysql> slave start;
  9. Query OK, 0 rows affected (0.13 sec)
  10.  
  11. mysql> show slave status;
  1. Slave_IO_Running: Yes
  2.  Slave_SQL_Running: Yes
  1. [root@DB-S data]# egrep "server-id|log-bin|binlog-ignore-db|auto-increment-increment|auto-increment-offset|slave-skip-errors" /etc/my.cnf
  2. log-bin=mysql-bin
  3. server-id = 2

MASTER中新建张表;

  1. mysql> use test;
  2. Database changed
  3. mysql> show tables;
  4. Empty set (0.00 sec)
  5.  
  6. mysql> create table user (number INT(10),name VARCHAR(255));
  7. Query OK, 0 rows affected (0.17 sec)
  8.  
  9. mysql> SHOW TABLES;
  10. +----------------+
  11. | Tables_in_test |
  12. +----------------+
  13. | user |
  14. +----------------+
  15. 1 row in set (0.01 sec)

查看BACKUP是否同步:

  1. mysql> use test;
  2. Database changed
  3. mysql> show tables;
  4. +----------------+
  5. | Tables_in_test |
  6. +----------------+
  7. | user |
  8. +----------------+
  9. 1 row in set (0.00 sec)

在backup中插入一条数据:

  1. mysql> insert into user values(01,'zhangsan');
  2. Query OK, 1 row affected (0.11 sec)
  3.  
  4. mysql> select * from user;
  5. +--------+----------+
  6. | number | name |
  7. +--------+----------+
  8. | 1 | zhangsan |
  9. +--------+----------+
  10. 1 row in set (0.00 sec)

查看MASTER是否同步成功:

  1. mysql> select * from user;
  2. +--------+----------+
  3. | number | name |
  4. +--------+----------+
  5. | 1 | zhangsan |
  6. +--------+----------+
  7. 1 row in set (0.00 sec)
  8. 同步成功!

在BACKUP端:

  1. [root@DB ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包
  1. [root@DB ~]# which wget
  2. /usr/bin/wget
  3. [root@DB ~]# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
  4. [root@DB ~]# ls
  5. keepalived-1.2.7.tar.gz
  6. [root@DB ~]# cd keepalived-1.2.7
  7. [root@DB keepalived-1.2.7]# pwd
  8. /root/keepalived-1.2.7
  9. [root@DB keepalived-1.2.7]# ./configure --prefix=/usr/local/keepalived
  10. [root@DB keepalived-1.2.7]# make && make install
  1. [root@DB keepalived-1.2.7]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  2. [root@DB keepalived-1.2.7]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  3. [root@DB keepalived-1.2.7]# mkdir /etc/keepalived/
  4. [root@DB keepalived-1.2.7]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  5. [root@DB keepalived-1.2.7]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
  1. [root@DB keepalived]# cat /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3.  
  4. global_defs {
  5. router_id MYSQL_HA#标识,双主相同
  6. }
  7. vrrp_script check_run{
  8. script '/usr/local/mysql/mysql_check.sh'
  9. interval 300
  10. }
  11. vrrp_instance VI_1 {
  12. state BACKUP#两台都设置BACKUP
  13. interface eth0
  14. virtual_router_id 51#主备相同
  15. priority 100#优先级,backup设置90(最关建点之一,同为backup时优先级别越高,就会主动去抢VIP,所以如果不想让这种情况出现加参数nopreempt)
  16. advert_int 1#主备心跳检查间隔
  17. nopreempt #不主动抢占资源,只在master这台优先级高的设置,backup不设置(当master恢复时,不会把VIP抢过来)
  18. authentication {
  19. auth_type PASS
  20. auth_pass 1111
  21. }
  22. virtual_ipaddress {
  23. 192.168.1.74 #vip
  24. }
  25. }
  26.  
  27. virtual_server 192.168.1.74 3306 {
  28. delay_loop 2
  29. #lb_algo rr#LVS算法,用不到,我们就关闭了
  30. #lb_kind NAT
  31. #nat_mask 255.255.255.0
  32. persistence_timeout 50#同一IP的连接60秒内被分配到同一台真实服务器
  33. protocol TCP
  34.  
  35. real_server 192.168.1.66 3306 { #检测本地mysql,backup也要写检测本地mysql
  36. weight 3
  37. notify_down /usr/local/keepalived/mysql.sh #当mysq服down时,执行此脚本,杀死keepalived实现切换
  38. TCP_CHECK {
  39. connect_timeout 3#连接超时
  40. nb_get_retry 3#重试次数
  41. delay_before_retry 3#重试间隔时间
  42. }
  43. }
  1. [root@DB keepalived]# cat /usr/local/keepalived/mysql.sh
  2. #!/bin/bash
  3.  
  4. /usr/bin/pkill keepalived

backup端:

  1. [root@DB-S ~]# cat /etc/keepalived/keepalived.conf
  2. ! Configuration File for keepalived
  3.  
  4. global_defs {
  5. notification_email {
  6. acassen@firewall.loc
  7. failover@firewall.loc
  8. sysadmin@firewall.loc
  9. }
  10. notification_email_from Alexandre.Cassen@firewall.loc
  11. smtp_server 192.168.200.1
  12. smtp_connect_timeout 30
  13. router_id MYSQL_HA
  14. #router_id LVS_DEVEL
  15. }
  16.  
  17. vrrp_instance VI_1 {
  18. state BACKUP
  19. interface eth0
  20. virtual_router_id 51
  21. priority 90
  22. advert_int 1
  23. authentication {
  24. auth_type PASS
  25. auth_pass 1111
  26. }
  27. virtual_ipaddress {
  28. 192.168.1.74
  29. }
  30. }
  31.  
  32. virtual_server 192.168.1.74 3306 {
  33. delay_loop 2
  34. #lb_algo rr
  35. #lb_kind NAT
  36. #nat_mask 255.255.255.0
  37. persistence_timeout 50
  38. protocol TCP
  39.  
  40. real_server 192.168.1.99 3306 {
  41. weight 3
  42. notify_down /usr/local/keepalived/mysql.sh
  43. TCP_CHECK {
  44. connect_timeout 3
  45. nb_get_retry 3
  46. delay_before_retry 3
  47. }
  48. }
  1. [root@DB ~]# chmod +x /usr/local/keepalived/mysql.sh
  1. [root@DB ~]# /etc/init.d/keepalived start

#  授权两台DB服务器允许管理员登录,用于其它服务器登录测试!

  1. mysql> grant all on *.* to 'admin'@'%' identified by '3306';
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> flush privileges;
  5. Query OK, 0 rows affected (0.00 sec)
  6.  
  7. mysql> select user,host,password from user;
  8. +--------+-----------+-------------------------------------------+
  9. | user | host | password |
  10. +--------+-----------+-------------------------------------------+
  11. | U_R | % | *5E9021B1C46435835981A94A7087707B3465144B |
  12. | root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
  13. | admin | % | *5E9021B1C46435835981A94A7087707B3465144B |
  14. | rep | % | *D36660B5249B066D7AC5A1A14CECB71D36944CBC |
  15. | zabbix | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  16. +--------+-----------+-------------------------------------------+
  17. 5 rows in set (0.00 sec)

通过MYSQL客户端通过VIP连接,看是否成功!

  1. [root@bass ~]# mysql -uadmin -h192.168.1.74 -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 175
  5. Server version: 5.5.40-log MySQL Community Server (GPL)
  6.  
  7. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  8.  
  9. Oracle is a registered trademark of Oracle Corporation and/or its
  10. affiliates. Other names may be trademarks of their respective
  11. owners.
  12.  
  13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  14.  
  15. mysql>

成功连接!!!!

可通MASTER或BACKUP的/var/log/messges日志,看出主备切换过程

  1. [root@DB ~]# ip addr
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. inet6 ::1/128 scope host
  6. valid_lft forever preferred_lft forever
  7. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  8. link/ether 52:54:00:94:a0:9f brd ff:ff:ff:ff:ff:ff
  9. inet 192.168.1.66/24 brd 192.168.1.255 scope global eth0
  10. inet 192.168.1.74/32 scope global eth0
  11. inet6 fe80::5054:ff:fe94:a09f/64 scope link
  12. valid_lft forever preferred_lft forever
  13. [root@DB-S ~]# ip addr
  14. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  15. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  16. inet 127.0.0.1/8 scope host lo
  17. inet6 ::1/128 scope host
  18. valid_lft forever preferred_lft forever
  19. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  20. link/ether 52:54:00:e4:6a:a4 brd ff:ff:ff:ff:ff:ff
  21. inet 192.168.1.99/24 brd 192.168.1.255 scope global eth0
  22. inet6 fe80::5054:ff:fee4:6aa4/64 scope link
  23. valid_lft forever preferred_lft forever
  1. [root@DB ~]# service mysqld stop
  2. Shutting down MySQL.... SUCCESS!
  3. [root@DB ~]# ip addr
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  5. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  6. inet 127.0.0.1/8 scope host lo
  7. inet6 ::1/128 scope host
  8. valid_lft forever preferred_lft forever
  9. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  10. link/ether 52:54:00:94:a0:9f brd ff:ff:ff:ff:ff:ff
  11. inet 192.168.1.66/24 brd 192.168.1.255 scope global eth0
  12. inet 192.168.1.74/32 scope global eth0
  13. inet6 fe80::5054:ff:fe94:a09f/64 scope link
  14. valid_lft forever preferred_lft forever
  15. [root@DB-S ~]# ip addr
  16. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  17. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  18. inet 127.0.0.1/8 scope host lo
  19. inet6 ::1/128 scope host
  20. valid_lft forever preferred_lft forever
  21. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  22. link/ether 52:54:00:e4:6a:a4 brd ff:ff:ff:ff:ff:ff
  23. inet 192.168.1.99/24 brd 192.168.1.255 scope global eth0
  24. inet 192.168.1.74/32 scope global eth0
  25. inet6 fe80::5054:ff:fee4:6aa4/64 scope link
  26. valid_lft forever preferred_lft forever
  27. #vip 在BACKUP上出现

 特别注意:mysql客户端不能在和双主服务器在一台上,否则VIP飘逸时,客户端连接会失败!

mysql 主主复制(双主复制)+ 配置KEEPALIVED实现热备的更多相关文章

  1. MySQL Replication, 主从和双主配置

    MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...

  2. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  3. Nginx+keepalived 双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  4. mysql传统主从、双主复制+keepalived配置步骤

    mysql主从.主主复制(双主复制)配置步骤 一:MySQL复制: MySQL复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服 ...

  5. linux系统mysql主主复制(双主复制)

    一.简介 在上一篇的主从复制中:http://www.cnblogs.com/lay2017/p/9043985.html 我们了解到,mysql通过master写日志,slave读取并执行日志内容从 ...

  6. mycat 1.6.6.1安装以及配置docker 安装mysql 5.7.24 双主多从读写分离主主切换

    mycat和mysql的高可用参考如下两个图 简介:应用程序仅需要连接HAproxy或者mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制. 服务器 ...

  7. mysql数据库之主从复制+双主--MMM

    mysql复制:在主数据库中,前端用户每执行一个写操作/语句,都会在二进制日志中保存一个事件,把这个事件从mysql的服务器中3306端口发送给从服务器,从服务器把这个事件接受下来,接受下来先保存在本 ...

  8. MySQL自动化安装(双主多从读写分离)

    shell #!/bin/bash # Create by # version 1.0 # // # # check out lockfile whether or not exist IsInput ...

  9. Nginx+keepalived双机热备(主主模式)

    IP说明: master机器(master-node):10.0.0.5/172.16.1.5   VIP1:10.0.0.3slave机器(slave-node): 10.0.0.6/172.16. ...

随机推荐

  1. UVA12563Jin Ge Jin Qu hao(01背包)

    紫书P274 题意:输入N首歌曲和最后剩余的时间t,问在保证能唱的歌曲数目最多的情况下,时间最长:最后必唱<劲歌金曲> 所以就在最后一秒唱劲歌金曲就ok了,背包容量是t-1,来装前面的歌曲 ...

  2. Nagios配置和命令介绍(二 )

    Nagios配置 Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等.默认的Nagios 配置没有任何监控内容,仅是一些模板文件.若要让Nagios 提供服务, ...

  3. c++ 类型安全

    类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域.“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制:有的时候也用“类型安全”形容 ...

  4. centos 配置固定ip

    centos下网络配置方法(网关.dns.ip地址配置) 来源:互联网 作者:佚名 时间:07-13 00:32:07 [大 中 小] 本文介绍了centos网络配置的方法,centos网络配置主要包 ...

  5. WAF与IPS的区别总结

    谁是最佳选择? Web应用防护无疑是一个热门话题.由于技术的发展成熟和人们对便利性的期望越来越高,Web应用成为主流的业务系统载体.在Web上“安家”的关键业务系统中蕴藏的数据价值引起攻击者的青睐,网 ...

  6. 调用MySql 分页存储过程带有输入输出参数

    Create PROCEDURE getuser ( IN pageIndex INT, IN pageSize INT, OUT count INT ) BEGIN )*pageSize; sele ...

  7. quartz定时任务时间设置

    这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *                                   格式: [秒] [分] ...

  8. Entity Framework简介

    前言 很久很久之前就想来好好的学习一下EF,一直也是各种理由导致一直也没有好好的开始,现在下定决心了,不管怎样一定要把这先走一遍,并且把自己学到的相关EF的知识进行记录,以备后用,也望广大博友们一起来 ...

  9. Eleven scrum meeting 2015/11/5

    今日工作情况 小组成员 今日完成的工作 明日待做任务 唐彬 选课和退课模块 测试 赖彦谕 病情较重,请假 病情较重,请假 金哉仁 设计app logo 测试 闫昊 调整课程简介的展示效果 整合各个模块 ...

  10. @version ||= version

    # -*- encoding : utf-8 -*- class InterfaceBaseController < ActionController::Base private def set ...