分享好友 数据库首页 频道列表

小记一次mysql主从配置解决方案

MySQL教程  2015-11-09 14:300

  今天研究了个开源项目,数据库是mysql的,其中的脚本数据需要备份,由于本人的机器时mac pro,而且mac下的数据库连接工具都不怎么好用,就想着如何利用windows下的数据库连接工具使用,并做相关备份,另外windows系统下的sqlyog工具还是非常强大的,在此推荐。

  因此为了使用sqlyog等windows系统下的连接工具,便开始了一天的折腾。

  首先两种思路,其一是利用另外一台宏碁笔记本电脑,直接在其上安装sqlyog使用,通过无线局域网进行连接使用,这种方式太过麻烦,而且来回换电脑很麻烦,远程连接使用也很慢。其二是安装虚拟机,在虚拟机上安装连接工具。

  由于本人的mac pro已经安装mysql数据库,并且已经安装了virtualbox虚拟机并安装了windows7系统,并在windows7系统中也安装了mysql。

  1.在虚拟机win7系统中安装sqlyog,直接连接mac系统的mysql,并导出备份,这个很简单。(当然要注意虚拟机与mac机器的网络连接是通的)

    1)首先要设置虚拟机网卡设置,选择桥接模式,virtualbox这类虚拟机的桥接模式的概念是虚拟机作为网络中的一台单独的机器,有自己的ip,与局域网中的ip是想通的,

      设置virtualbox的桥接模式如图所示

     小记一次mysql主从配置解决方案!

      小记一次mysql主从配置解决方案

这样按照图中的设置,虚拟机根主机就可以相互访问了。

  2)利用sqlyog进行连接

  小记一次mysql主从配置解决方案

对了 还有一点需要注意的是,由于局域网ip可能不会固定,正好本人用的是小米路由器,有绑定设备ip的功能,这样ip就固定啦

小记一次mysql主从配置解决方案

小记一次mysql主从配置解决方案

从上面的图中可以看出,主机ip跟虚拟机ip是独立的啦。

2.mysql主从备份的方式,mac pro为主master,虚拟机为从slave

1)首先由于mac电脑mysql客户端安装完成后,默认是没有my.cnf文件的,即使修改了/usr/local/mysql/的相关配置也是没有用的,这就需要自定义mysql配置了,将/usr/local/mysql/support-files/中的my-default.cnf 文件 拷贝到/etc目录下,当然这里也遇见问题了,服务启动不了了

小记一次mysql主从配置解决方案

这就需要在配置文件中加入explicit_defaults_for_timestamp=true

2)修改配置文件,如下所示

3)修改虚拟机中的mysql目录中的my.cnf
小记一次mysql主从配置解决方案

修改mysqld节点

4)重启master及slave并查看状态

查看master状态
小记一次mysql主从配置解决方案

查看slave状态

小记一次mysql主从配置解决方案

当看到上面两张图片的时候则证明配置成功,当然本人并没有那么顺利,中途遇到了很多问题

其一:Got fatal error 1236 from master when reading data from binary log
这中问题按照网上大部分的解决方法是,首先查看master的状态,并记录下相关信息
比如信息为:

小记一次mysql主从配置解决方案

要记录下file:mysql-bin.000002 position:16093
并在slave中执行:

这种方式应该是没有问题的。如果上面这种方式不行,可以试试下面这种,本人试了试应该是没问题,

(这种方式本人可以可能是因为本人配置的时候没有按照规范来,导致主从不一致的原因)

其二:Slave can not handle replication events with the checksum that master is configured to log
  这个错误一般出现在master5.6,slave在低版本的情况下。这是由于5.6使用了crc32做binlog的checksum。除了把master的设置从crc32改到none
  binlog-checksum = none [my.cnf]

其三:本人今天花费了大量的时间主要原因便是这点了,本人在虚拟机里查看slave状态显示都正确,

但是本人通过虚拟机的连接工具,将master数据库中添加了一张表并插入数据,但是总是没有同步到从mysql,于是查看进程
从mysql进程

小记一次mysql主从配置解决方案

master进程

小记一次mysql主从配置解决方案

这点问题也就是纠结了一天的问题,当然也没有找出具体原因,看提示原因貌似是什么进程已经睡眠的原因,但是为啥睡眠没搞明白,查看slave hosts也没有查到

小记一次mysql主从配置解决方案

当然最后,没办法了,纠结了很久也没有发现什么原因的情况下,本人直接在mac机器上直接通过终端插入数据,居然成功了。。。无语。。不过最终能够同步了至少还有点欣慰。至于什么出现这个问题要找时间好好查找原因了。

查看更多关于【MySQL教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
mysql下如何执行sql脚本 执行SQL脚本
1.编写sql脚本,假设内容如下:  create database dearabao;  use dearabao;  create table niuzi (name varchar(20));  保存脚本文件,假设我把它保存在F盘的hello world目录下,于是该文件的路径为:F:\hello world\niuzi.sql2.执行sql脚本,可以有2种方法: 

0评论2023-02-10699

MySQL 5.7版本sql_mode=only_full_group_by问题
用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'col_user_6.a.START_TIME' which is not functionally dependent on colu

0评论2023-02-10973

Oracle迁移到MySQL性能下降的注意点 oracle数据库迁移需要注意的问题
背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障。在我的记忆里面淘宝最初从Oracle迁移到MySQL期间也遇到了很多SQL的性能问题,记忆最为深刻的子查询,当初的

0评论2023-02-10580

MySQL与Oracle 差异比较之六触发器
触发器编号类别ORACLEMYSQL注释1创建触发器语句不同create or replace trigger TG_ES_FAC_UNIT  before insert or update or delete on ES_FAC_UNIT  for each rowcreate trigger `hs_esbs`.`TG_INSERT_ES_FAC_UNIT` BEFORE INSERT on `hs_esbs`.`es_fac_u

0评论2023-02-10914

mysql where条件:某时间字段为今天的sql语句
1.查询:注册时间为今天的所有用户数:select count(*) from customer where TO_DAYS(createtime) = TO_DAYS(NOW())2.获取当前时间到凌晨24点还有多长时间:(Java中可用于判断某时间是否为今天)final Calendar cal = Calendar.getInstance();    ca

0评论2023-02-10717

mysql中的sql
变量用户变量: 在用户变量前加@系统变量: 在系统变量前加@@运算符算术运算符有: +(加), -(减), * (乘), / (除) 和% (求模) 五中运算位运算符有:(位于), | (位或), ^ (位异或), ~ (位取反),(位右移),(位左移)比较运算符有: = (等于),(大于),(小于), = (大

0评论2023-02-10936

Oracle、MySql、Sql Server比对
MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议。假设你在一个遵循GPL的***(开源)项目中使用MySQL,那么你能够遵循GPL协议免费使用MySQL。否则,你须要购买MySQLAB制定的那个商业许可协议。Windows $

0评论2023-02-10441

MySQL与Oracle的区别之我见 mysql oracle 区别
1. 大的方面(宏观)Oracle为商用数据库,行业中占据相当的地位:市场占比2012年为40%。开发、管理资源相当丰富,有自己的metalink,我也曾用过,有什么问题,都能在那里得到较快速度的解决。开发用了近10年,虽然有些功能用起来挺鸡肋的(像分页),但它在OL

0评论2023-02-10801

一条SQL语句在MySQL中如何执行的 mysql执行语句的过程
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这

0评论2023-02-10684

sql mysql和sqlserver存在就更新,不存在就插入的写法(转)
转自:http://hi.baidu.com/tidy0608/item/ff930fe2436f2601560f1dd9sqlsever数据存在就更新,不存在就插入的两种方法两种经常使用的方法:1. Update, if @@ROWCOUNT = 0 then insertUPDATETable1 SETColumn1 = @newValue WHEREId = @idIF@@ROWCOU

0评论2023-02-10605

更多推荐