Mysql 5.6 双主配置 自动同步脚本

原创 2013年12月04日 10:08:56

# 最近有项目应用到了 mysql 双主结构,现在贴出来共享

#  mysql 版本: 5.6.11 

# 操作系统版本: rhel 6.2 


# Master 的 my.cnf 配置( 只贴M/M 结构部分)

log-bin=fabian
server-id=1
binlog-do-db=TSC
binlog-do-db=adb
binlog-ignore-db=mysql
replicate-do-db=TSC
replicate-do-db=adb
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=1

# Slave 的my.cnf 配置(只贴M/M结构部分)

log-bin=fabian
server-id=2
binlog-do-db=TSC
binlog-do-db=adb
binlog-ignore-db=mysql
replicate-do-db=TSC
replicate-do-db=adb
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=2

对上面参数作出部分解释:

log-bin=fabian                             #M/S 需开启log-bin 日记文件
server-id=1                                #指定server-id 必须不一致,M/s 结构时 M > S
binlog-do-db=TSC                           #同步数据库名称
binlog-ignore-db=mysql                     #忽略数据名称
replicate-do-db=TSC                        #用于控制slave来执行同步的行为
replicate-ignore-db=mysql                  #用于控制slave来执行同步的行为
log-slave-updates                          #把更新的记录写到二进制文件中
slave-skip-errors=all                      #跳过错误,继续执行复制
auto_increment_increment=2                 #设置主键单次增量
auto_increment_offset=1                    #设置单次增量中主键的偏移量
#expire_logs_days = 20                     #设置log-bin 超过多少天删除
max-binlog-size= 512M

# auto_increment_increment、auto_increment_offset 可以防止双主主键冲突问题

对开启权限、grant 这些基本的这里就不在详细说明,面贴出自动建立同步的gant 脚本,项目在生产过程中总会遇到Mysql 数据库服务器宕机等情况,可用以下脚本来重新构建Master -to-Master 环境。


#!/bin/bash 
# Setting Variables
 _REMOTEHOST=192.168.1.51  #远程主机IP
 _LOCALHOST=192.168.1.52   #本地主机IP
 _USER=root                #用户名
 _REMOTEPASD=123456        #远程主机密码
 _LOCALPASD=123456         #本地主机密码
 _BASE=TSC

 _LF=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/File/ {print $2}'`
 _LLF=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/File/ {print $2}'`
 _PS=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/Position/ {print $2}'`
 _LPS=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/Position/ {print $2}'`

# Backup Mysql 
mysqldump -u root -h $_REMOTEHOST -p$_REMOTEPASD  $_BASE > $_BASE.sql
mysql -u root -p$_LOCALPASD $_BASE < $_BASE.sql
rm -rf $_BASE.sql

mysql -uroot -p$_LOCALPASD -e "stop slave;"
mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "stop slave;"

echo "mysql -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_REMOTEHOST}*,master_user=*${_USER}*,master_password=*${_REMOTEPASD}*,master_log_file=*${_LF}*,master_log_pos=${_PS};+" > tmp
echo "mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_LOCALHOST}*,master_user=*${_USER}*,master_password=*${_LOCALPASD}*,master_log_file=*${_LLF}*,master_log_pos=${_LPS};+" > tmp2


  sed -ri 's/\+/"/g' tmp
  sed -ri 's/\+/"/g' tmp2
  sed -ri "s/\*/\'/g" tmp
  sed -ri "s/\*/\'/g" tmp2
  sh tmp
  sh tmp2
  rm -rf tmp
  rm -rf tmp2

mysql -uroot -p$_LOCALPASD -e "start slave;"
mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "start slave;"

mysql -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'
mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'


#脚本执行完成后出现下图则表示成功:

[root@ORA2 fabian]# sh gant.sh 
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 192.168.1.51
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Warning: Using a password on the command line interface can be insecure.
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 192.168.1.52
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
[root@ORA2 fabian]# 


# 测试 master-to-master 是否成功要用 命令行界面或都三方工具(如 Navicat Premium) 进行对同步数据库进行测试,看是否在另一库进行同步操作。

    至此完成! 



相关文章推荐

mysql5.7半自动同步设置

mysql的主从复制主要有3种模式: a..主从同步复制:数据完整性好,但是性能消耗高 b.主从异步复制:性能消耗低,但是容易出现主从数据唯一性问题 c.主从半自动复制:介于上面两种之间。既能很好的保...

简单的Mysql数据库备份和同步脚本

应用背景简介: ‘123.57.111.222’为生产环境mysql所在IP。 为了方便调试,现搭建了一个调试服务器。 此脚本运行于调试服务器,拥有备份生产环境中mysql的数据,并将数据同步到调...

Shell进行MySQL表跨服务器增量更新同步小脚本

工作所需写的小脚本。 # !/bin/bash # Author : 蛙鳜鸡鹳狸猿 # create_ts : 2017年 01月 03日 星期二 14:48:14 CST # progra...

mysql高可用架构方案之一(keepalived+主主双活)

mysql高可用架构方案之一,主主双活,希望对各位有锁帮组

MySQL双主架构方案

在企业中,一般系统架构的瓶颈会出现在数据库这一部分,mysql主从架构在很大程度上解决了这部分瓶颈,但是在mysql主从同步的架构也存在很多问题;比如:1. 关于数据写入部分(也就是主库)往往很难做到...
  • isoleo
  • isoleo
  • 2015年07月30日 11:01
  • 1780

MySQL主主数据同步

MySQL主主同步和主从同步的原理一样,只是双方都是主从角色。环境操作系统版本:CentOS7 64位 MySQL版本:mysql5.6.33 节点1IP:192.168.1.205 ...
  • xyang81
  • xyang81
  • 2016年09月17日 18:00
  • 9095

Mysql 5.6 双主互备高可用(Keepalived+mysql) (一)

安装环境:Redhat 5.8 mysql版本:mysql-5.6.25 DB机器A:192.168.8.193 主机名:mysql01 DB机器B:192.168.8.194 主机名:mysql0...

mysql5.6数据库同步,单双多主多从配置。

windows下MySQL5.6实现主从数据库同步数据  mysql5.6数据库同步,单向双向同步问题 一.单向同步 主数据库(mysql5.6)192.168.1.104 从...
  • fjnpysh
  • fjnpysh
  • 2017年06月18日 15:04
  • 479

MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解

安装环境操作系统 :CentOS 6.5 数据库版本:MySQL 5.6.27 主机A:192.168.1.1 (Master) 主机B:192.168.1.2 (Slave)这里强调的数据库的版本...

mysql5.6主从同步的配置思路大纲

mysql5.6的主从同步配置跟之前老版本的配置方法貌似有些区别,折腾了好几天才理解透和成功配置好mysql5.6主从同步。大家尽管拍砖。...
  • jqqjj
  • jqqjj
  • 2016年06月22日 18:24
  • 219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql 5.6 双主配置 自动同步脚本
举报原因:
原因补充:

(最多只允许输入30个字)