windows下mysql双向同步备份实现方法

1.1 环境搭建
准备两台Windows NT 主机,分别安装好iKEY Server windows 版本,确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主、备机器,假设A为主机,B为备机,假设A主机IP地址为:192.168.1.101,B主机IP地址为192.168.1.102

1.2 创建同步帐户
分别在A、B节点上登陆mysql 数据库,创建同步帐户并赋予同步权限,如下:

A节点操作:

运行cmd, cd进入iKEY版本安装目录下的iKEY\mysql\bin下,然后执行mysql –uroot –p123456 登陆mysql数据库执行:

mysql>GRANT REPLICATION SLAVE ON *.* TO "yw[j1] "@"192.168.1.10[j2] 2" IDENTIFIED BY 'ym[j3] ';

mysql>flush privileges;

B节点操作步骤如上,权限赋予如下:

mysql>GRANT REPLICATION SLAVE ON *.* TO "yw[j4] "@"192.168.1.10[j5] 1" IDENTIFIED BY 'ym[j6] ';

mysql>flush privileges;

执行以上操作后,运行net stop mysql, 分别停止两节点数据库.

1.3 配置数据同步选项
1.3.1 A主机操作
安装好的iKEY Server windows 版本后,会在安装目录下的iKEY\mysql\backup文件夹下生成一个my_master.cnf配置文件,在A主机上将my_master.cnf 文件复制到安装目录下的iKEY\mysql\bin文件夹下,并重命名为my.cnf,重命名之前请先备份原有my.cnf文件,以下介绍my.cnf做的修改之处:

log-bin=mysql-bin #同步事件的日志记录文件

binlog-do-db=ikey_db #提供数据同步服务的数据库日志

binlog-do-db=ikey_log #提供数据同步服务的数据库日志

server-id=1
master-host=192.168.1.102 #主机B的IP地址
master-user=ym #同步帐户
master-password=ym #同步帐户密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=ikey_db #同步的数据库

replicate-do-db=ikey_log #同步的数据库

1.3.2 B主机操作
安装好的iKEY Server windows 版本后,会在安装目录下的iKEY\mysql\backup文件夹下生成一个my_slave.cnf配置文件,在B备机上将my_slave.cnf 文件复制到安装目录下的iKEY\mysql\bin文件夹下,并重命名为my.cnf,重命名之前请先备份原有my.cnf文件,修改之处同A主机,不同配置在于以下:

server-id=2
master-host=192.168.1.101 #主机A的地址

以上需要注意的地方是,要定义master-host的主机IP地址,请根据实际情况进行修改。

请确保以上同步用户、主机IP、和同步帐户密码与所设配置相同.

1.3.3 验证数据同步
当以上配置完毕后,分别重新启动主机A和备机B数据库,运行net start mysql,

查看同步配置情况,登陆mysql 数据库。

在A节点上查看Master 信息:

mysql> show master status;

+------------------+----------+------------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+------------------+------------------+

| mysql-bin.000001 | 98 | ikey_db,ikey_log | |

+------------------+----------+------------------+------------------+

1 row in set (0.00 sec)

在B节点上查看Slave信息:

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.101

Master_User: ym

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: testBBB-relay-bin.000002

Relay_Log_Pos: 235

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: ikey_db,ikey_log

通过在B节点上查看同步状态,我们可以清楚的看到所设置的同步配置信息以及当前同步状态。

同样可以在B节点上查看master 信息以及在A节点上查看slave 信息。

添加数据在A主机上,同时测试B备机上数据是否同步,以及反向测试。

1.4 同步维护
当需要更改节点IP 时,Mysql 同步配置也需要进行相应修改,在更改节点IP之前,我们先做如下操作:

分别在A、B节点上执行mysql> stop slave; 停止当前同步状态。

假如此时A 节点IP 改为192.168.1.103,需要做如下操作:

1.4.1 A节点:
mysql> show master status;

+------------------+----------+------------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+------------------+------------------+

| mysql-bin.000002 | 118 | ikey_db,ikey_log | |

+------------------+----------+------------------+------------------+

1 row in set (0.00 sec)

1.4.2 B节点:
更改B--àA方向同步的帐户权限

mysql>show grants for ym@192.168.1.101(原A节点IP);

查看到原赋予从192.168.1.101 连接的权限,此时我们删除此同步帐户,并重新赋予192.168.1.103 连接的权限,如下:

mysql>drop user ym@192.168.1.101;

mysql>flush privileges;

mysql>grant replication slave on *.* to ym@192.168.1.103 identified by 'ym';

mysql>flush privileges;

然后修改A-àB方向同步配置项:

mysql>CHANGE MASTER TO

-> MASTER_HOST='192.168.1.103', # Master服务器地址

-> MASTER_USER='ym',

->MASTER_PASSWORD='ym', -> ->MASTER_LOG_FILE='mysql-bin.000002', # 刚才我们记录A节点数据库要执行复制的日志文件。

-> MASTER_LOG_POS=118; #刚才记录的A节点数据库要复制的日志文件位置。

Query OK, 0 rows affected (0.02 sec)

同时需要查看此时B节点的Master信息,同步LOG日志及POS位置

mysql> show master status;

+------------------+----------+------------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+------------------+------------------+

| mysql-bin.000003 | 98 | ikey_db,ikey_log | |

+------------------+----------+------------------+------------------+

1 row in set (0.00 sec)

同时请修改B节点mysql主配置文件中

master-host=192.168.1.103 #主机A的IP地址

1.4.3 接着A节点:
修改B-àA方向同步配置项:

mysql>CHANGE MASTER TO

->MASTER_LOG_FILE='mysql-bin.000003', # 刚才我们记录B节点数据库要执行复制的日志文件。

-> MASTER_LOG_POS=98; #刚才记录的B节点数据库要复制的日志文件位置。

Query OK, 0 rows affected (0.02 sec)

然后针对A、B节点启动同步状态,分别运行start slave; 然后查看同步状态,确保在每台机器上查看show slave status;得出

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

即处于正常同步状态。

以上是针对单节点IP修改所做的操作,如果A、B节点IP 都需要修改,参考以上配置进行操作,最好先针对单个节点IP 进行修改,并确保单向同步没有问题后,再进行第二个节点IP修改以及配置。

--------------------------------------------------------------------------------

[j1]执行同步权限的用户

[j2]主机B的IP地址

[j3]同步帐户密码

[j4]执行同步权限的用户

[j5]主机A的IP地址

[j6]同步帐户密码

第一步:
在A数据库的my.ini中添加


代码如下:

server-id=1
log-bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.102 #主机B的地址
master-user=use102 #主机B提供应B的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd102 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库

第二步:
在B数据库的my.ini中添加


代码如下:

server-id=2
log-bin=C:\mysqlback #同步事件的日志记录文件
binlog-do-db=test1 #提供数据同步服务的数据库
binlog-do-db=test2 #提供数据同步服务的数据库
binlog-do-db=test3 #提供数据同步服务的数据库
master-host=192.168.0.101 #主机B的地址
master-user=use101 #主机A提供给A的用户,该用户中需要包括数据库test1 test12test3的权限
master-password=usepwd101 #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=test1 #同步的数据库
replicate-do-db=test2 #同步的数据库
replicate-do-db=test3 #同步的数据库

第三步:
将A的mysql数据的权限给B
mysql>GRANT FILE ON *.* TO 'use101'@'192.168.0.102'IDENTIFIEDBY 'pwd101';
将B的Mysql数据的权限给B操作同上。
第四步:
重启AB数据库,后:
B机器:
mysql>slave start;
查看同步配置情况
A机器:
mysql>show master status\G;
B机器:
mysql>show slave status\G;
假如A与B数据库没有同步,检查mysql安装目录下的.err文件。
如果slave日志中报错信息如下:
060807 11:40:17 [ERROR] While trying to obtain the list of slaves from the master 'xxx.xxx.xxx:3306' user 'rep' got the following error: 'Access denied. You need the REPLICATION SLAVE privilegefor this operation'在master上,执行以下语句查看权限:
mysql>SHOW GRANT FOR 'use101'@'192.168.0.102'\G *************************** 1. row *************************** Grants for rep@192.168.0.102: GRANT Select REPLICATION SLAVE ON *.* TO 'rep'@'192.168.0.102'IDENTIFIED BY PASSWORD 'xxx'已经授予了 REPLICAION SLAVE 权限了,怎么还会报这个错呢?
通过查看手册和源码,才知道slave需要执行一个语句来更新slave列表:
SHOW SLAVE HOSTS;而执行这个语句则需要 REPLICAITON CLIENT 权限,因此才会报错。因此,只要重新给 帐号加上 REPLICATION CLIENT 权限就可以了。
grant selectreplication slaveREPLICAION CLIENT on *.* to 'use101'@'192.168.0.102'identified by 'pwd101';

(0)

相关推荐

  • MySQL 数据库双向镜像、循环镜像(复制)

    对于双向数据库镜像,就是数据库A的数据变化要镜像到数据库B中,同时数据库B里的修改也要同时复制到数据库A里. 对于循环数据库镜像,就是多个数据库A.B.C.D等,对其中任一个数据库的修改,都要同时镜像到其它的数据库里. 应用:同一个Zen Cart网店的数据库和程序,可以放置在不同的主机上,在任一台主机上新增的订单.客户资料,都会同时加入其它的主机数据库里. 要实现双向或循环数据库镜像,首先要解决的就是防止数据库中自动递增(AUTO_INCREMENT)字段的冲突,以免多数据库各自生成一样的增量

  • mysql双向加密解密方式用法详解

    如果你使用的正是mysql数据库,那么你把密码或者其他敏感重要信息保存在应用程序里的机会就很大.保护这些数据免受黑客或者窥探者的获取是一个令人关注的重要问题,因为您既不能让未经授权的人员使用或者破坏应用程序,同时还要保证您的竞争优势.幸运的是,MySQL带有很多设计用来提供这 种类型安全的加密函数.本文概述了其中的一些函数,并说明了如何使用它们,以及它们能够提供的不同级别的安全. 双向加密 就让我们从最简单的加密开始:双向加密.在这里,一段数据通过一个密钥被加密,只能够由知道这个密钥的人来解密.

  • Windows mysql 双向同步设置方法 详细篇

    1.1         环境搭建 准备两台Windows NT 主机,分别安装好iKEY Server windows 版本,确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主.备机器,假设A为主机,B为备机,假设A主机IP地址为:192.168.1.101,B主机IP地址为192.168.1.102 1.2         创建同步帐户 分别在A.B节点上登陆mysql 数据库,创建同步帐户并赋予同步权限,如下: A节点操作: 运行cmd, cd进入iK

  • mysql 双向同步的键值冲突问题的解决方法分享

    出现的问题(多主自增长ID重复) 1:首先我们通过A,B的test表结构 2:掉A,在B上对数据表test(存在自增长ID)执行插入操作,返回插入ID为1 3:后停掉B,在A上对数据表test(存在自增长ID)执行插入操作,返回的插入ID也是1 4:然后 我们同时启动A,B,就会出现主键ID重复 解决方法: 我们只要保证两台服务器上插入的自增长数据不同就可以了 如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了 在这里我们在A,B上加入参数,以实现奇偶插入 A

  • MySQL 实现双向复制的方法指南

    简介 我知道有很多文章和指南介绍在互联网上实现主-从复制.在主-从复制中,主机影响从机.但从数据库中的任何更改不会影响主数据库,这篇文章将帮助你实现双向复制.(即,无论是主机还是从机的更改都将影响这两个服务器). 背景 你能参考Aadhar Joshi的这篇文章实现主从复制,或者您可以按照以下简单的步骤: 参考一下: 在机器A配置主机(192.168.1.30) 在机器B配置从机(192.168.1.29) 我们可以使用下面的步骤来实现这一点 步骤1:机器A设置主机 在主机中打开配置文件 , 默

  • windows下mysql双向同步备份实现方法

    1.1 环境搭建 准备两台Windows NT 主机,分别安装好iKEY Server windows 版本,确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主.备机器,假设A为主机,B为备机,假设A主机IP地址为:192.168.1.101,B主机IP地址为192.168.1.102 1.2 创建同步帐户 分别在A.B节点上登陆mysql 数据库,创建同步帐户并赋予同步权限,如下: A节点操作: 运行cmd, cd进入iKEY版本安装目录下的iKEY\m

  • Linux下mysql异地自动备份的方法

    前言: 基本上不管是对于我们自己使用,还是给客户部署服务器,,mysql备份都是必不可少的一部分,这里给大家分享一下我是如何实现linux上做异地自动备份的. mysql_backup.sh 用于备份数据 mysql_restore.sh 用于恢复数据 remove_backup.sh 用于删除一段时间以前的备份文件 一.数据备份准备 1.1创建备份目录 注:这里我是吧备份文件放在/data/backup/mysql下面,把脚本放在 /data/backup 下面 些创建一个文件夹(如果创建过请

  • Windows下MySql错误代码1045的解决方法

    复制代码 代码如下: 错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES) 解决办法是重新设置root用户密码,在Windows平台下操作步骤如下: 1.以系统管理员身份登录到系统: 2.如果MySQL服务器正在运行,停止它.       如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务       如果服务器不是作为服务而运行的,可能需要使用任务

  • Windows下MySQL主从复制的配置方法

    MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库). 主数据库一般是实时的业务数据写入和更新操作,从数据库常用的读取为主. 主从复制过程: 1.主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制日志 Binary log 里面. 2.从服务器上面也启动一个 I/O thread,通过配置好的用户名和密码, 连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面. 3.

  • Windows下MySQL安装配置方法图文教程

    Windows下的安装与配置MySQL详细步骤思路,分享给大家,供大家参考,具体内容如下 本文介绍Windows XP下的安装与配置. 要想在Windows中运行MySQL,需要: Ø 32位Windows操作系统,例如9x.Me.NT.2000.XP或Windows Server 2003. 基于Windows NT的操作系统(NT,2000,XP,2003),将MySQL服务器做为服务来运行.强烈建议使用基于Windows NT的操作系统. Ø TCP/IP协议支持(也许是所有数据库系统的基

  • CentOS服务器环境下MySQL主从同步配置方法

    本文实例讲述了CentOS服务器环境下MySQL主从同步配置方法.分享给大家供大家参考,具体如下: 一.环境 主机: master操作系统:centos 5.3 IP:192.168.1.222 MySQL版本:5.0.77 从机: slave操作系统:centos 5.3 IP:192.168.1.220 MySQL版本:5.0.77 二.创建数据库 分别登录master机和slave机的 mysql:mysql –u root –p 创建数据库: create database repl;

  • CentOS7下 MySQL定时自动备份的实现方法

    生产环境遇到得最幸福得事情就是,某些场景没办法避免去update或者delete的时候,某个参数没有注意.完蛋了 完蛋了,数据被我搞崩了怎么办,赶紧去运营找备份呀!运营说:狗屁 咱们系统从来不备份,你说:那把日志给我吧,运营说:狗屁 每天上G的日志,我都没给你开,你说:怎么办,数据库被我搞崩了.运营说:那是你的事,跟我没关系........这是某公司的一段写照,所以今天我们来把这个情况给杜绝 今天要给客户部署一套系统,使用的MySQL5.7,那客户那边的开发人员我可不敢保证他们的能力咋样.我只能

  • Windows下MySQL定时备份脚本的实现

    在windows服务器上,想要定时备份数据库数据,可采用windows的任务计划程序+数据库备份脚本组合.其中,MySQL数据库备份,起到关键作用是mysqldump.有关于mysqldump命令的用法,可以找MySQL的官方文档了解. 1 备份脚本 @echo off echo 设置MySql数据库的连接信息 set host=127.0.0.1 set port=3306 set user=root set pass=admin echo 设置要备份MySql数据库名称 set dbname

  • Windows下mysql 8.0.28 安装配置方法图文教程

    本文为大家分享了Windows下mysql 8.0.28 安装配置方法图文教程,供大家参考,具体内容如下 本教程只针对于8.0版本及以上的版本5.0版本不能以这方法安装 第一步:先去MySql官网下载8.0.28的安装包MySQL :: Download MySQL Community Server 或点击这里下载 推荐下载第一个 第二步:解压在本地盘符 创建my.ini配置文件,因为下面会有控制台创建data文件,所以在这里不要自己创建data文件夹,不要自己创建data文件夹,不要自己创建d

  • Windows下MySQL安装教程图文详解

    MySQL安装说明MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品. MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件. MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. MySQL所使用的 SQL 语

随机推荐