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

2023-11-17

# 最近有项目应用到了 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) 进行对同步数据库进行测试,看是否在另一库进行同步操作。

    至此完成! 



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 5.6 双主配置 自动同步脚本 的相关文章

  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f
  • Mysql:my.cnf中的修改不生效

    我已经更新了my cnf我的数据库文件包含以下行 max connections 200 之后我停止并启动 mysql 服务以使更改生效 但由于某种原因 此更改不会影响数据库 因为如果我运行 mysql gt select max conn
  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • 寻找多列索引的最佳顺序

    假设我有一个包含两个索引的表 一个位于 a 列 一个位于 a b 和 c 列 我注意到 根据索引定义中列的顺序 MySQL 可能最终使用单列索引而不是多列索引 即使多列索引中的所有三列都在 ON 中引用JOIN 的一部分 这有点引出了一个问
  • 数据包无序。得到:80 预期:0 node.js

    这是我的 非常简单 代码 var connection mysql createConnection infosDB connection connect connection query SELECT FROM action functi
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • 如何杀死Mysql“show processlist”中的所有进程?

    因为我在那里看到了很多进程 并且 时间 列显示了所有进程的大值 大规模屠杀操作节省时间 在 MySql 本身中执行此操作 运行这些命令 mysql gt select concat KILL id from information sche
  • MySQL 如何使用返回多行的 SELECT 子查询插入表?

    MySQL 如何使用返回多行的 SELECT 子查询插入表 INSERT INTO Results People names VALUES SELECT d id FROM Names f JOIN People d ON d id f i
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想
  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • 用于添加和删除客户名称的 Web 表单出现问题

    我正在尝试创建一个 Web 表单 其中列出了所有客户 然后为您提供一个文本字段 旁边有一个按钮 您可以在其中添加客户 然后它应该显示客户列表 旁边有删除按钮 您可以单击该按钮从数据库中删除客户 我正在让它发挥作用 对于初学者来说 它会回显
  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • MySQL INSERT 无需指定每个非默认字段(#1067 - “表”的默认值无效)

    我已经见过好几次了 我有一台服务器允许我插入一些值 而无需指定其他值 如下所示 INSERT INTO table SET value a a value b b value c 是一个没有设置默认值的字段 但在这里工作正常 当脚本移动到新
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • 如何使用Peewee查询多个相似的数据库?

    我遇到了使用 Peewee 查询多个数据库的问题 我有 2 个现有的 mysql 数据库 让我们将它们命名为 A 和 B 结构相似 因为它是两个 Bugzilla 数据库 我使用 Pwiz 生成模型 modelsA py 和 modelsB
  • MySQL ALTER TABLE 挂起

    我知道这个问题已经被问过好几次了 但我的问题发生在我刚刚创建的表上 它只有 10 列和 1 行 因此 与通常的挂起问题不同 这不是具有大量数据的大表的情况 但它仍然挂着 这是我正在运行的 SQL ALTER TABLE db Search
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat

随机推荐

  • 算法基础--蒙特卡洛模拟

    蒙特 卡罗方法 Monte Carlo method 也称统计模拟方法 是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明 而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法 是指使用随机数 或更常见的伪随机数 来解决很
  • uboot下实现U盘自动升级程序的思路分析(基于USB系统、eMMC系统、FAT32文件系统)

    1 常见的升级方式 1 1 应用程序升级 优点 在图形化界面操作 只需要选中升级文件并点击升级即可 操作简单 缺点 应用程序必须能正常启动 当程序出现bug就不能升级 可靠性差 总结 操作简单 适合用户 1 2 uboot下tftp升级 优
  • WebService入门教程(服务端发布WebService)

    本篇内容过多 时间紧迫的朋友可以通过目录快速筛选自己想要看的内容 本人接触webservice也没多久 也处于学习阶段 如果有错误请指正 如果已经是大神请略过这篇文章 这篇文章不涉及webservice的底层原理 属于入门级文章 就当是笔记
  • 系统找不到d3dcompiler_33.dll如何解决的?

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个d3dcompiler 33 dll文件进行安装
  • Disconnected: No supported authentication methods available(server sent:public key)

    Putty登陆服务器时 报错 Disconnected No supported authentication methods available server sent public key 重置服务器密码即可
  • windows 平台的python语言 PCL 安装包

    之前很多人找我要点云数据处理的 PCL 的python语言PCL 的 whl 安装包 我统一放到百度网盘 就不一一回复了 目前仅支持python 3 6 3 7 版本 python pcl 0 3 0rc1 cp37 cp37m win a
  • ssm框架下的文件上传和下载

    ssm下的文件上传和下载 1 文件上传 1 1 文件上传需要的依赖 文件上传需要使用到 commons fileupload 和 commons io 两个 jar 包
  • C++ 继承同一个的基类的所有派生类使用同一个全局变量的三种方式

    定义全局变量类型 ifndef D HPP define D HPP include
  • 壁画修复项目

    2020年8月11日 开始制作壁画数据集 2020年8月13日 完成了196张壁画数据集的制作
  • 中文转换为完整拼音算法原理分析

    最近由于项目需要 对简体中文转拼音的算法作了一些了解 然而在google找到的大多是获得简体中文拼音首字母的算法 好不容易让我找到了一个sunrise spell的类 专门用于中文转完整拼音 觉得的确做得不错 于是对它的算法作了一些分析 总
  • Linux中安装软件到指定文件夹

    一丶编译安装make install方式 一般来说都是先用tx zxvf解压tar gz再make编译之后直接make install安装 但是这会直接安装到默认路径下 想要指定位置安装 则需在make install加入 make PRE
  • golang-bufio 缓冲写

    1 缓冲写 在阅读这篇博客之前 请先阅读上一篇 golang bufio 缓冲读 buffered output Writer implements buffering for an io Writer object If an error
  • Go语言的中“...”省略号总结

    1 数组中的 省略号 在数组的定义中 如果在数组长度的位置出现 省略号 则表示数组的长度是根据初始化值的个数来计算 因此 q int 1 2 3 等同于var q 3 int 3 int 1 2 3 按我目前获得的信息来看 q int 1
  • 静态链表系列操作

    静态链表 include
  • Qt调用外部程序

    一 调用系统默认应用打开文件 使用QDesktopServices的openUrl 成员 这个函数是跨平台的 Qt会根据不同的系统平台调用默认的程序打开指定文件 QUrl存放制定的路径 使用非常简便 示例代码如下 QString fileN
  • Linux系统查看磁盘空间占用情况的几个常用命令

    Linux系统下 需要使用命令查看磁盘空间占用情况 下面将这些常用命令进行整理 以作备忘 一 查看磁盘物理分区信息 使用如下命令查看磁盘分区信息 cat proc partitions 二 查看磁盘分区占用情况 使用如下命令查看磁盘分区占用
  • 代码检查与代码走查

    代码检查与代码走查是基于人工测试的白盒测试方法 目的 找出错误 而不是改正错误 是测试而不是调试 优点 能够精确地定位的错误 降低调试成本 可以成批的发现错误 而计算机测试往往是逐个发现错误并改正 注意 代码检查 代码走查 基于计算机的测试
  • 算法工程师福利:超实用技术路线图

    对于不同级别的算法工程师技能要求 我们大致可以分成以下几个层级 初级 可以在一些指导和协助下独立完成开发任务 具体到算法方面 需要你对于工具框架 建模技术 业务特性等方面有一定的了解 可以独立实现一些算法项目上的需求 中级 可以基本独立完成
  • USB+HOST+FATFS

    转载https blog csdn net zcshoucsdn article details 78944536
  • Mysql 5.6 双主配置 自动同步脚本

    最近有项目应用到了 mysql 双主结构 现在贴出来共享 mysql 版本 5 6 11 操作系统版本 rhel 6 2 Master 的 my cnf 配置 只贴M M 结构部分 log bin fabian server id 1 bi