1. 部署MYSQL主从同步 <M-S>

环境:mysql版本一致,均为5.7.18

master xuegod4  ip  192.168.10.34   数据库密码 yourpasswd

slave  xuegod5  ip  192.168.10.35   数据库密码 yourpasswd

1.1 配置主数据库xuegod4

1.1.1 创建需要同步的数据库:

mysql> create database HA;

mysql> use HA;

mysql> create table T1(id int,name varchar(20));

service mysqld stop

1.1.2 配置my.cnf

vim /etc/my.cnf

log-bin=mysql-bin-master #启用二进制日志

server-id=1 #本机数据库ID 标示

binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名

binlog-ignore-db=mysql #不可以被从服务器复制的库

1.1.3 重启mysql

service mysqld restart

1.1.4 授权

01. mysql> grant replication slave on *.* to slave@10.10.10.64 identified by "123456";

注:这里如果报错说密码太简单,可以修改密码策略

mysql> set global validate_password_policy=0

授权完后刷新权限:

mysql> flush privileges;

1.1.5 查看状态信息

mysql> show master status;

1.1.6 查看二进制日志

查看mysql数据目录,yum方式安装数据目录为/var/lib/mysql

[root@xuegod4 ~]# ls /var/lib/mysql

mysql> show binlog events\G

复制前要保证同步的数据库一致

[root@xuegod4 ~]# mysqldump -uroot -pyourpasswd HA >HA.sql           #可以导出数据库

将导出的数据库传给从服务器,方法:

[root@xuegod4 ~]# scp HA.sql 192.168.10.35:/root/

1.2 配置从数据库服务器xuegod5

1.2.1 两台数据库服务器mysql版本要一致

mysql> show variables like '%version%';

1.2.2 测试连接到主服务器是否成功

[root@xuegod5 ~]# mysql -uslave -pyourpasswd -h 192.168.10.34

看不到HA数据库,是因为只有复制的权限,没有读的权限。

1.2.3 导入数据库,和主数据库服务器保持一致

mysql> create database HA;

[root@xuegod5 ~]# mysql -uroot -pyourpasswd HA<HA.sql

1.2.4 修改从服务器配置文件

从服务器没必要开启bin-log日志

[root@xuegod5 ~]# service mysqld stop

[root@xuegod5 ~]# vim /etc/my.cnf

master-host=192.168.10.34   #指定主服务器IP地址

master-user=slave          #指定定在主服务器上可以进行同步的用户名

master-password=yourpasswd    #密码

mysql版本低于5.7版本才需要配置以上三句。5.7版本只需要配置:

server-id=2  #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。

可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。

1.2.5 配置从数据库服务器

[root@xuegod5 ~]# service mysqld restart     #重启mysql服务

mysql>stop slave; #停止slave

mysql> change master to master_host='192.168.10.34',master_user='slave',master_password='yourpasswd';

mysql> start slave; #启动slave

mysql> show slave status\G  #查看状态

Slave_IO_Running :一个负责与主机的io通信

Slave_SQL_Running:负责自己的slave mysql进程

再到主服务器上查看状态:

mysql> show processlist \G

1.3 插入数据测试同步

在主数据库服务器插入数据:

mysql> insert into T1 value(6,'yehailun');

Query OK, 1 row affected (0.05 sec)

在从数据库服务器上查询

mysql>  select * from T1;

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

| id   | name     |

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

|    6 | yehailun |

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

1 row in set (0.00 sec)

1.4 排错

如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。

在主服务器上看二进制日志事件列表

mysql> show binlog events \G

从服务器执行MySQL命令下:

mysql> stop slave;

Query OK, 0 rows affected (0.03 sec)

mysql> change master to master_log_file='mysql-bin-master.000001',master_log_pos=1117;

Query OK, 0 rows affected (0.04 sec)

#根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果都是yes就代表在同步

重启从服务器,再查看状态:

停止从服务器slave stop;

开启从服务器slave start;

排错思路:

1、二进制日志没有开启

2、IPTABLES 没有放开端口

3、对应的主机 IP地址写错了

SQL线程出错

1、主从服务器数据库结构不统一

出错后,数据少,可以手动解决创建插入,再更新slave状态。

注:如果主上误删除了。那么从上也就误删除了。 #因此主上要定期做mysqldump备份。

 

2. 部署MYSQL主主双向主从复制 M-M(恢复快照再实验)

通过mysql主主:进行mysql 双向同步数据库HA的配置

mysql主:服务端:xuegod4   IP:192.168.10.34

mysql主:服务端:xuegod5  IP:192.168.10.35

先清空一下二进制日志,mysql> reset master

在上面主从的基础上进行配置

2.1 创建需要同步的数据库

mysql> create database HA;

mysql> use HA;

mysql> create table T1(id int,name varchar(20));

2.2 配置xuegod4

它有两种身份:

身份1: xuegod5的主,身份2: xuegod5的从。

2.2.1 修改配置文件

[root@xuegod4 ~]# vim /etc/my.cnf

server-id = 1

log-bin=mysql-bin-master

binlog-do-db=HA

binlog-ignore-db=mysql       #避免同步mysql用户相关配置

2.2.2 重启mysql服务

[root@xuegod4 ~]# service mysqld restart

查状态

mysql> show master status;

2.2.3 授权给xuegod5做从

修改密码策略

mysql> set global validate_password_policy=0;

mysql> grant replication slave on *.* to slave@'192.168.10.35' identified by 'yourpasswd';

如果不符合密码要求报错修改如下(5.7版本)

mysql> set global validate_password_policy=0; #定义复杂度

mysql> set global validate_password_length=1; #定义长度 默认是8

刷新权限

mysql> flush privileges;

2.3 配置xuegod5

2.3.1 修改配置文件

mysql 5.1的配置

master-host=192.168.1.64 #指定主服务器IP地址

master-user=slave64 #指定定在主服务器上可以进行同步的用户名

master-password=123456 #密码

#master-port=3306 可以不写

replicate-do-db=HA #要复制的数据库

master-connect-retry=60 #断点重新连接时间

mysql 5.7配置

[root@xuegod5 ~]# vim /etc/my.cnf

server-id=2

log-bin=master-bin-slave

binlog-do-db=HA

binlog-ignore-db=mysql

2.3.2 重启mysql服务

[root@xuegod5 ~]# service mysqld restart

查看状态;

mysql> show master status;

2.3.3 测试一下从帐号登陆是否正常

[root@xuegod5 ~]# mysql -uslave -pyourpasswd -h 192.168.10.34

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.7.18-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

2.3.4 授权给xuegod4做从

mysql> grant replication slave on *.* to slave@'192.168.10.34' identified by 'yourpasswd';

如果不符合密码要求报错修改如下(5.7版本)

mysql> set global validate_password_policy=0; #定义复杂度

mysql> set global validate_password_length=1; #定义长度 默认是8

刷新权限

mysql> flush privileges;

2.4 指定xuegod5的master

mysql> change master to master_host='192.168.10.34',master_user='slave',master_password='yourpasswd';

mysql> start slave;

mysql> show slave status\G

2.5 指定xuegod4的master

mysql> change master to master192.168.10.35',master_user='slave',master_password='yourpasswd';

mysql> start slave;

2.6 xuegod4上查看slave的状态

mysql> show slave status\G

2.7 xuegod5上查看slave的状态

mysql> show slave status\G

2.8 插入数据测试

2.8.1 在xuegod4上插入数据,在xuegod5上查看

mysql> use HA

Database changed

mysql> insert into T1 values(1,'zhangsan');

Query OK, 1 row affected (0.02 sec)

2.8.2 在xuegod5上插入数据,在xuegod4上查看

mysql> insert into T1 value(2,'lisi');

Query OK, 1 row affected (0.06 sec)

注意:这种M-M架构没有什么好处,他往往给我们产生一种实现了负载均衡的错觉

3 部署M-S-S模型

环境:

xuegod4  master     mysql5.7.18      192.168.10.34

xuegod5  slave中继  mysql5. 7.18      192.168.10.35

xuegod6  slave      mysql5. 7.18      192.168.10.36

3.1 创建需要同步的数据库

mysql> create database HA;

mysql> use HA;

mysql> create table T1(id int,name varchar(20));

3.2 部署master xuegod4

3.2.1 授权

修改密码策略:

mysql> set global validate_password_policy=0;

在主服务上授权用户:

mysql> grant replication slave on *.* to 'repl'@192.168.10.35 identified by 'yourpasswd';

刷新权限:

mysql> flush privileges;

3.2.2 修改配置

[root@xuegod4 ~]# vim /etc/my.cnf

server-id = 1

binlog-do-db = HA

log-bin=mysql-bin-master

binlog-ignore-db=mysql

sync-binlog=1

binlog-format=row

重启服务:

[root@xuegod4 ~]# service mysqld restart

3.2.3 导出主服务器HA完整备份, 拷贝到 中继 和slave

[root@xuegod4 ~]# mysqldump -uroot -pyourpasswd HA -B>HA.sql   #使用-B导入数据库的时候不用新建库

[root@xuegod4 ~]# scp HA.sql 192.168.10.35:/root

[root@xuegod4 ~]# scp HA.sql 192.168.10.36:/root

3.3 部署slave中继xuegod5

3.3.1 导入数据库

mysql> create database HA;

[root@xuegod5 ~]# mysql -uroot -pyourpasswd HA<HA.sql

3.3.2 修改配置

[root@xuegod5 ~]# vim /etc/my.cnf

server-id=2

binlog-do-db=HA

log-bin=mysql-bin-slave1

binlog-ignore-db=mysql

binlog-format=row

log-slave-updates=1   #把它从relay-log当中读取出来的二进制日志并且这本机上执行的操作也记录这自己的二进制日志里面,这样才能使第三台slave通过中继slave读取到相应数据变化

重启服务:

[root@xuegod5 ~]# service mysqld restart

3.3.3 授权

mysql> change master to master_host='192.168.10.34',master_user='repl',master_password='yourpasswd';

mysql> start slave;

查一下状态:

再授权一个用户给slave(xuegod6)

mysql> set global validate_password_policy=0;   #修改密码策略

mysql> grant replication slave on *.* to 'repl'@192.168.10.36 identified by 'yourpasswd';

刷新权限

mysql> flush privileges;

3.3.4 导出数据库

[root@xuegod5 ~]# mysqldump -uroot -pyourpasswd -B HA>HA2.sql

发送到xuegod6上

3.4 部署slave xuegod6

3.4.1 导入数据

[root@xuegod6 ~]# mysql -uroot -pyourpasswd <HA2.sql

3.4.2 修改配置

[root@xuegod6 ~]# vim /etc/my.cnf

server-id=3

log-bin=mysql-bin-slave2

binlog-format=row

重启服务:

[root@xuegod6 ~]# service mysqld restart

3.4.3指定slave中继作为主

mysql> change master to master_host='192.168.10.35',master_user='repl',master_password='yourpasswd';

mysql> start slave;

3.5 从MASTER上插入数据测试

mysql> create table mermber(id int(4) unsigned not null auto_increment,name varchar(20),primary key(id));

mysql> insert into mermber values(1,'天屠'),(2,'孤叶');

2-16 mysql主从复制的更多相关文章

  1. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  2. Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

    下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...

  3. MySQL主从复制与读写分离

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  4. mysql主从复制的一篇文章(转载)

      管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希 ...

  5. MySQL主从复制与读写分离 --非原创

    原文出处:http://www.cnblogs.com/luckcs/articles/2543607.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 ...

  6. 分布式架构高可用架构篇_08_MyCat在MySQL主从复制基础上实现读写分离

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  7. Mysql主从复制的实现

    MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一 ...

  8. Mysql主从复制_模式之日志点复制

    MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...

  9. centos7下部署mysql主从复制

    首先大致看一下这个图 环境说明: 系统:centos7 IP:master:192.168.7.235 slave:192.168.7.226 mysql版本MySQL-5.7 1.Master 下载 ...

  10. MySQL主从复制介绍

    MySQL主从复制介绍 MySQL数据库的主从复制方案,和使用scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输,只不过MySQL的主从复制是其自带的功能,无需借助第三方工具,而且,M ...

随机推荐

  1. windows 下安装git

    Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 首先如下图:(点击next) 第二步:文件位置存储,可根据自己盘的情况安装 第三步:安装配置文件,自己需要的都选 ...

  2. jquery中的this与$(this)的区别总结(this:html元素)($(this):JQuery对象)

    jquery中的this与$(this)的区别总结(this:html元素)($(this):JQuery对象) 一.总结 1.this所指的是html 元素,有html的属性,可用 this.属性  ...

  3. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(8)枚举、补码

    一.枚举 # include <stdio.h> enum WeekDay //定义了一个数据类型(值只能写以下值) { MonDay, TuesDay, WednesDay, Thurs ...

  4. [网络管理]windows server backup

    ERPserver每天备份与每月1号备份数据.备份到本机.从备份安全机制来说这是远远不够的.故是否能定期备份数据文件到另外一台server呢?(异地备份) windows server 提供了serv ...

  5. Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

    1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get ...

  6. asp.net core2.1 部署centos7/linux系统 -- 安装部署(一)

    原文:asp.net core2.1 部署centos7/linux系统 -- 安装部署(一) 1.安装dotnet sdk(添加产品秘钥与yum源) 添加yum源:sudo rpm -Uvh htt ...

  7. 阿里云服务器apache服务器局域网访问公网访问配置

    阿里云服务器apache服务器局域网访问公网访问配置 一.总结 一句话总结: 1.再总结-------------------------------------------------------- ...

  8. html5常用属性text-shadow、vertical-align、background如何使用

    html5常用属性text-shadow.vertical-align.background如何使用 一.总结 一句话总结: 1.text-shadow:[x轴(X Offset) y轴(Y Offs ...

  9. DYNAMIC CONTEXT SWITCHING BETWEEN ARCHITECTURALLY DISTINCT GRAPHICS PROCESSORS

    FIELD OF INVENTION This invention relates to computer graphics processing, and more specifically to ...

  10. jQuery Media Plugin 现在插上实线的视频播放服务

    jQuery Media 一个简短的引论 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWGluZ0tvbmcyMnN0YXI=/font/5a6L5L2T ...