原文:windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致

mysql主从同步的好处以及原理

      之前看到很多新闻说某某的服务器奔溃,磁盘碎了,导致数据丢失。看到这里我们系统的服务器是不是也存在问题,如果数据一旦丢失,损失得有多大,就想到了 先做一个镜像吧,系统正在使用的叫做主库,再在另一个服务器上开一个库,配置成从库,这样,主库有变动从库会跟着变动,做到了事时实更新。

原理

       主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

如图

       从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

使用主从同步的好处:

  1. 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  2. 提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  3. 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

   最后在上一张图,此图说一下mysql 主从复制的多种方式

              

                                                                                         图一

动手操作。

       使用工具 mysql,Navicat Premium,一台装有win7系统的电脑。操作mysql最好使用工具,之前我使用的是cmd 进入操作,一直操作的是同一个mysql服务,我研究了好久。 

     第一步 是装mysql 服务(装mysql服务是可以用cmd),我用的是zip 的 安装方式,安装第一个的时候,我不在赘述,相信大家都会,但是我提醒一点,因为解压的mysql.zip后文件夹里面 都是my-default.ini这个文件 所以在做服务的时候最好把命令写全

如 : mysqld install mysql  --defaults-file="d:\mysql\my-default.ini",

这样为了避免不必要的麻烦。这里我还有提醒一点下图红线圈的部分,有两点要注意:

1丶一个语法前面不能出现#号,井号相当于注释,所以就算配置了也不管用,

2丶红线圈的部分配置不能一样basedir、datadir 、port 、server_id ,一般mysql默认端口号3306。添加一个从服务器就重新配置这四个属性。

第一个mysql中my-default.ini 配置如图:

 

上图中的log-bin=mysql-bin  这个属性在主服务器中一定要配置。

 主服务器配置完成启动就行了。

下面改装第二个mysql服务了。在装第二个mysql服务的时候。流程都是一样的。只需要进入相对应的mysql/bin 下面然后使用命令做成服务,启动服务就行

只是my-default.ini 上图中的,basedir、datadir 、port 、server_id四个配置改变了,至于log-bin=mysql-bin  属性可以加也可以不加。如果你想实现如图一中的主主复制,联级复制等或者其他功能 你可以加上不影响。

做成服务的命令也变了。变成

mysqld install mysql  --defaults-file="E:\mysql5.6\my-default.ini"  

一定不要搞错了红色的对应的mysql 的配置文件的位置。

如图:

操作完这些以后,下面的步骤不能直接使用cmd 来操作,一定记得用工具,因为直接在cmd 命令下操作,导致一直操作的是同一个mysql服务。

第二步配置主服务器:

我选择3306 的mysql当做 主服务器

    1丶创建一个账户,并且授予主从同步的权限,一般不用root。

          创建一个 user01的 账户 ,密码为123456。

         CREATE USER 'user01'@'%' IDENTIFIED BY '123456';

       授权

         GRANT replication SLAVE ON *.* TO 'user01'@'127.0.0.%' IDENTIFIED BY '123456';

          这里有一点要记得,用远程连接测试一下该账户是否能连接上。

2丶 就是把主服务器上的主表数据备份下来,我这里用的是test数据库操作。用Navicat把数据转储下来,不用细说。

3丶连接主服务器  锁表   FLUSH TABLES WITH READ LOCK;这样防止在做的时候数据改变了,导致脏数据,也为了防止,影响后的流程,下面一部再说

4丶SHOW MASTER STATUS;  执行该命令  这一步很关键,这也是为啥锁库的原因,执行这句命令一会有两个参数后面用,一个是File,一个是Position。一个是日志的名称,一个是日志的位置。下面在配置从服务器的时候会用到

第三步是配置从服务器:

    三句命令

在这之前把Navicat从主服务器转储下来的数据倒入进来。

 1丶

CHANGE MASTER TO MASTER_HOST = '127.0.0.1',

 MASTER_PORT = 3306,

 MASTER_USER = 'user01',

 MASTER_PASSWORD = '123456',

 MASTER_LOG_FILE = 'mysql-bin.000008',

 MASTER_LOG_POS = 2817;

2丶start SLAVE;

3丶show slave status ;

如图显示就表示成功了。

可以测试在服务器更新数据从服务器会一起更新。

附录  

    我在开发过程中 遇到两个数据库表结构一样,但是我主服务器上的数据库叫做teset1 从服务器上叫做test2。而且我还有做到主服务器上可能还有其他的数据库,我并不能同步,如是我在主服务器上加这个配置binlog-do-db=tets1  从服务器上加

replicate-rewrite-db = tets1 -> test2,,实现主服务器上只有test1 库的数据同步到从服务器上的test2,但是保证test1和test2 结构一样

         

 

 

 

 

windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致的更多相关文章

  1. MySQL不同库名相同表结构实现主从配置

    数据库版本 5.6.16 在两个服务器上,存在不同名字的数据库,但是两个数据库中的所有表结构相同,实现主从复制. 主库服务器的数据库名为yoon,从库服务器的库名为hank 在从库的my.cnf配置文 ...

  2. 如何在Windows系统中配置Mysql群集(Mysql Cluster)

    MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障. Mysql群集(Cluster)简介 M ...

  3. Windows系统下安装MySQL 8.0.11数据库

    MySQL数据库是常用的数据库之一,而且该数据库开源免费,所以很多公司在使用.本文记录如何在Windows系统下安装MySQL数据库,本次安装的版本号为8.0.11,这个版本是当前的最新版本,据宣传, ...

  4. 如何在Windows系统中配置Mysql群集(Mysql Cluster)

    Mysql群集(Cluster)简介 MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的.MySQL群集中有三种节点:管理节点.数据节点和SQL节点.群集中的某计算机可 能是某一种节点,也 ...

  5. 重装Windows系统后,Mysql的恢复

    在原地直接恢复MySQL的自动启动的数据库服务,操作如下. (1)环境变量里配置一下Mysql的bin目录 (2)管理员方式启动cmd,运行命令mysqld –install (3)启动Mysql服务 ...

  6. windows 系统如何安装 mysql 8.0.15 数据库?

    windows 系统如何安装 mysql 8.0.15 数据库? 1. 下载安装包 下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0. ...

  7. Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

    项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...

  8. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  9. mysql如何从全备文件中恢复单个库或者单个表

    mysql如何从全备文件中恢复单个库或者单个表 在mysql dba的日常实际工作中,一个实例下有多个库,而我们常见的备份就是全库备份.那么问题就来了,如果需要恢复单个库或者单个表,怎么办了,网上有很 ...

随机推荐

  1. 1.4 Python基础知识 - 代码书写格式及条件判断"if ... else ..."

    一.代码的书写规则 在所有的开发语言中,代码之间都是有关联的关系,有的是包含关系,有的是上下级关系,有的是代表语句的结束.在python中也是有相应的规则的: 1.在没有上下级关系的代码中,代码要顶行 ...

  2. PS中矢量形状图层的合并交叉等运算

    操作中将用到下图所示的几个按钮   图1.2 减去顶层形状图层为例 1. 上图中,选择矩形工具,以新建图层的形式,新建两个矩形的形状图层,如上右图. PS:可以Shift+A快捷键选中一个形状,然后填 ...

  3. Mosquito的优化——订阅树优化(八)

    本文由逍遥子撰写.转发请标注原址: http://blog.csdn.net/houjixin/article/details/46413783 或 http://houjixin.blog.163. ...

  4. C#DateTime与Unix时间戳的转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  5. 年轻By塞缪尔·厄尔曼

    年轻,并非人生旅程的一段时光,也并非粉颊红唇和体魄的矫健. 它是心灵中的一种状态,是头脑中的一个意念,是理性思维中的创造潜力,是情感活动中的一股勃勃的朝气,是人生春色深处的一缕东风. 年轻,意味着甘愿 ...

  6. 【习题 5-9 UVA - 1596】Bug Hunt

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] map模拟 map<string,int>记录每个数组的大小 map <pair<string, int&g ...

  7. [Angular] Angular Advanced Features - ng-template , ng-container, ngTemplateOutlet

    Previously we have tab-panel template defined like this: <ul class="tab-panel-buttons" ...

  8. Qt浅谈之一:内存泄露(总结),对于QWidget可以setAttribute(Qt::WA_DeleteOnClose),而且绝对不能手动删除栈上的对象

    一.简介 Qt内存管理机制:Qt 在内部能够维护对象的层次结构.对于可视元素,这种层次结构就是子组件与父组件的关系:对于非可视元素,则是一个对象与另一个对象的从属关系.在 Qt 中,在 Qt 中,删除 ...

  9. 洛谷 偷天换日&&“访问”美术馆

    典型的树形DP 按理说是先做“访问美术馆”再做偷天换日. 但是我先做了偷天换日然后再做的“访问”美术馆 DP方程好推,偷天换日在遇到有展品的时候做背包,因为是先做的偷天换日,所以把偷天换日的输入w,c ...

  10. ocx中调用ocx

    BOOL CXXXApp::InitInstance()中加入一句AfxEnableControlContainer();