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) 进行对同步数据库进行测试,看是否在另一库进行同步操作。

    至此完成! 



shell mysql双主自动配置脚本

在两台机器的Mysql上配置好双主模式,因为经常配置,所以写个脚本,主从模式的脚本应该类似 脚本需要两个参数,为两台机器的ip WORKDIR="/tmp/" CONN_STR="/u...
  • u011085172
  • u011085172
  • 2017年05月25日 16:51
  • 304

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...
  • Shen_Guo
  • Shen_Guo
  • 2015年06月17日 21:09
  • 2049

MYSQL双主同步复制配置

1 MySQL同步机制实现概述 MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。而在实际项目中,两台分布于异地的主机上安装有MySQL数据库,两台...
  • oguro
  • oguro
  • 2016年10月23日 22:19
  • 2886

MySQL 高可用:主从配置或主主(双主)配置

mysql 的主从复制可以实现mysql的多种高可用性,如数据库的读写分离 ,在线热备,负载均衡,数据分布 等。 mysql 主从同步原理: 1.  master 将操作记录到二进制日志(bina...
  • kk185800961
  • kk185800961
  • 2015年10月19日 01:19
  • 11231

MYSQL双主同步故障

show slave status \G; 果然  Slave_IO_Running: Yes Slave_SQL_Running: No 而且出现了1062错误,还提示  Last_SQL_...
  • gzh0222
  • gzh0222
  • 2012年10月25日 14:43
  • 6165

Mysql双主同步

解决数据库瓶颈问题 两台服务器可以同时读写数据库 A B两台服务器  A和B需要拥有一个同名的数据库 同步账号设置 首先要在两台服务器上各新增加一个可登陆的账号。 A端25 mysql grant r...
  • w1781806162
  • w1781806162
  • 2015年07月07日 08:38
  • 1538

mysql双主半同步的灾备测试结论

1)、mysql双主半同步(AB) 把A停掉后,B是否能写入 , 写入速度是否降低(是否每个写操作有check 半同步状态影响速度问题)? 2)、B上批量导入一堆数据,然后把A启动,刚才的那批数据能...
  • wdw1206
  • wdw1206
  • 2015年08月23日 18:35
  • 638

MySQL 5.6 一主多从的 半同步复制搭建(已纠正)

MySQL 5.6 一主多从的 半同步复制搭建 半同步简介:         在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因...
  • u010098331
  • u010098331
  • 2016年03月04日 15:12
  • 2622

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

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

Mysql+Keepalived双主互备高可用详细配置

Mysql+Keepalived双主互备架构搭架 配置前进行校时操作 #安装ntpdate工具 yum install ntpdate -y #使用ntpdate校时(后面的是ntp服务器...
  • HzSunshine
  • HzSunshine
  • 2017年03月27日 23:12
  • 1501
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql 5.6 双主配置 自动同步脚本
举报原因:
原因补充:

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