mysql5.7.19版本的主从复制问题分享

今天学习构建mysql 5.7.19版本的MySQL的主从复制

碰到了一些坑,特定分享下:

  1. mysql的主从服务器是通过克隆虚拟机完成,导致uuids一样,需要修改auto.cnf文件
  2. 在slave上想通过在/etc/my.cnf里添加连接master的配置,总是导致启动mysqld服务失败,看错误日志,说不支持的选项。原因是5.7.19里已经淘汰了在配置文件里加这种配置的方法了。

下面是部分笔记,特分享下。

mysql> show variables like "%binlog%";

| binlog_format                           | ROW

====

如何让程序能同时读取主和从服务器上的数据:

1.直接在程序里写死,那个业务访问那台MySQL服务器ip,定死。 ---》很傻、维护起来非常麻烦,需要开发的协助。

不同的业务,不同的服务器

a ----》MYSQL(A)

B ---->MYSQL(B)

2.相同的业务,不同的服务器。使用域名解析来达到读写分离。 ---》比较简单,只要修改下域名对应的ip

写 ----》主

wdb.abc.com  --->132.1.1.5  主

读 -----》主、从

可以使用负载均衡域名解析

rdb.abc.com  --->132.1.1.1 从

rdb.abc.com  --->132.1.1.2 从

rdb.abc.com  --->132.1.1.3 从

rdb.abc.com  --->132.1.1.4  从

rdb.abc.com  --->132.1.1.5  主

3.使用中间件来实现读写分离。oneproxy---》杭州平民软件---》王广友

中间件里有个配置文件,会写明读往那些服务器,写往那台服务器。

开源:mycat

=====

主从复制-----》为读写分离做铺垫。---》提升性能的作用。

=====

MySQL  replication  复制

master   slave

write  read

=====

克隆 clone

1.先关闭计算机

=====

主从复制的前提条件:

2台MySQL服务器的数据是一样的。

=====

将master和slave的ip地址配置好,不要一样,同时修改主机名为mysql_master  、mysql_slave

mysql> grant replication slave  on *.* to ‘backup‘@‘192.168.0.139‘ identified by ‘123456‘;

mysql> CREATE USER ‘repl‘@‘%.mydomain.com‘ IDENTIFIED BY ‘slavepass‘;

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘%.mydomain.com‘;

====

/etc/my.cnf

server-id=2

log-bin

master-host=192.168.0.137

master-user=backup

master-password=123456

master-port=3306

目前不可行,总是报错

mysql 官方给的解释:

Obsolete Replication Slave Options  废弃的主从复制的选项

The following options are removed in MySQL 5.5. If you attempt to start mysqld with any of these

options in MySQL 5.5, the server aborts with an unknown variable error. To set the replication

parameters formerly associated with these options, you must use the CHANGE MASTER TO ...

statement (see Section 13.4.2.1, “CHANGE MASTER TO Syntax”).

The options affected are shown in this list:

? --master-host

? --master-user

? --master-password

? --master-port

? --master-connect-retry

? --master-ssl

? --master-ssl-ca

? --master-ssl-capath

? --master-ssl-cert

? --master-ssl-cipher

? --master-ssl-key

===

在从服务器的数据库里输入命令:

mysql> change master to master_host=‘192.168.0.137‘, master_user=‘backup‘, master_password=‘123456‘, master_port=3306;

mysql> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

mysql>

Slave_IO_Running: No   IO线程启动不起来

Slave_SQL_Running: Yes

出错信息:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

原因是MySQL的server UUID一样

[[email protected] mysql]# pwd

/var/lib/mysql      ---》存放在此目录下

[[email protected] mysql]#

[[email protected] mysql]# vim auto.cnf   修改此文件里的uuid

[auto]

server-uuid=7fce030c-9f7b-11e7-b09f-000c29e2a2e4

[[email protected] mysql]# service mysqld restart

Redirecting to /bin/systemctl restart  mysqld.service

[[email protected] mysql]#

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

====

不要在slave里写数据,会导致SQL thread线程不工作,如果已经写了,建议删除,重新启动下slave 进程

mysql> start slave;

===

relay-log.info ---》记录上次从主服务器的binlog日志里什么位置,下次去复制下载主的binlog日志的时候,知道从哪里开始。

master.info  --->连接主服务器使用的(主的ip和连接使用的用户和密码)

mysql-slave-relay-bin.000006  记录中继日志被重新执行的时候的二进制日志

====

1.主从服务器之间复制数据的时候,有延迟吗?是否有数据丢失的现象发生?

主从服务器存放在一个机房好,还是2个机房好?

2.如何减少延迟?如何避免数据丢失?

3.半同步复制是什么?

4.主服务器down机了,从服务器如何顶替主服务器工作?

5.主服务器又恢复了,又可以充当什么角色?主还是从?

6.了解mycat和oneproxy中间件程序,实现读写分离

===

联系方式:[email protected]

时间: 2024-08-10 15:36:49

mysql5.7.19版本的主从复制问题分享的相关文章

CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享

一.配置防火墙,开启80端口.3306端口CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptables防火墙 yum install iptables-services #安装 vi /etc/sysconfig/ipta

MySQL5.7.19版本压缩包安装方式的一些坑

ySQL社区版下载地址:https://dev.mysql.com/downloads/mysql/,在这里也可以选择之前的版本下载. MySQL进入5.7.7版本以后,压缩包安装需要注意一些地方: 1.相比较于之前版本,压缩包中没有data文件夹,这里是MySQL的配置数据,在5.7.7版本后,通过初始化命令生成data文件夹,无需手动创建. 2.相比较于之前版本,需要添加my.ini文件,这个文件写的是MySQL配置,以下是我的MySQL配置文件. [mysqld] port=3306 ba

Windows下安装MySQL-5.7.19

下载MySQL-5.7.19版本,解压之后发现安装包不是一个exe文件: 于是网上找资料,发现了另外一种安装方法. 1.新建一个环境变量,我的电脑-属性-高级-环境变量-系统变量-新建 2.在系统变量的path末尾添加上刚刚新建的系统变量.(把;%MYSQL_HOME%\bin插入到Path的最后面) 3.以管理员的身份运行命令行,按win+R 输入cmd,点鼠标右键以管理员身份运行 4.命令行执行:%MYSQL_HOME%\bin\mysqld --initialize --user=mysq

MySQL5.1版本的主从复制搭建

MySQL5.1版本的主从复制搭建         [备注]: 主机192.168.250.20 备机192.168.250.40 主从复制 1主机上面已经有了MySQL5.1.53-log版. 2备机上没有mysql数据库,需要在备机上安装MySQL5.1.53-log软件,具体参考svn文档"system\mysql\document\IT_SYS_MySQL_Installation.docx". 3再次确定主服务器与从服务器的MySQL版本一致 Showvariables li

1.MySQL5.7.19 安装配置踩过的坑

这篇文章主要是分享 安装MySQL时遇到的一些问题,以及解决方法. 第一步:下载MySQL 下载地址:https://dev.mysql.com/downloads/mysql/5.1.html#downloads 我下载的是5.7.19版本,下载地址里面也只有解压版,下载后再进行环境变量的配置就可以. 2.解压并安装Mysql5.7.19 (1)将下载的包解压到指定的路径,自己可以指定路径,我直接解压到了D盘,解压到了                         D:\mysq的目录下.则

mysql低版本的主从复制和5.7版本的主从复制

mysql的主从复制和单向异步复制: mysql的AB复制: mysql 数据库的版本,两个数据库版本要相同,或者 slave 比 master 版本高! # yum install mysql mysql-server -y master server 配置 1)配置 /etc/my.cnf 配置文件 在[mysqld]下添加一下参数 log-bin=mysql-bin #启动二进制日志系统 binlog-do-db=test #二进制需要同步的数据库名,如果需要同步多个库,例如要再同步 we

CentOS 7.1编译安装Nginx1.8.1+MySQL5.6.19+PHP5.5.14

废话少说,直接部署 一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.se

CentOS6.7 Mysql5.6.35版本 源码编译+Mysql数据库忘记root密码如何修改

源码编译MySQL [[email protected] ~]# yum install cmake nucrses-devel –y      //安装编译环境及终端操作的开发包 -- Installed: cmake.x86_64 0:2.8.12.2-4.el6 Dependency Installed: libarchive.x86_64 0:2.8.3-7.el6_8 Complete! 下载软件包 [[email protected] ~]# wget http://ftp.ntu.

Mysql5.6.19安装说明(ubuntu14.04)

目录 1 准备工作 3 2 安装Mysql需要的依赖 3 2.1 安装 Mysql 3 3 常用命令 3 3.1 验证原有主机是否已安装 3 3.2 启动 4 3.3 登录 4 3.4 远程登录 4 3.5 重启服务 4 3.6 停止服务 4 3.7 查看服务状态 4 4 错误解决方案 4 1 准备工作 本文档是在ubuntu14.04下安装5.6版本的mysql. 1.所用软件: Ubuntu14.04 LTS版 2.建议使用root用户 3.使用服务器地址:192.168.1.236 4.安