mysql-day06        部署mysql主从同步

案例拓扑

• 一主、一从

– 单向复制时,建议将从库设为只读

一、什么是mysql主从同步

主:正在被客户端访问的数据库服务器,被称作主库服务器。

从:自动同步主库上的数据的数据库服务器,被称作从库服务器。

主从同步结构模式介绍

•基本应用

–单向复制:主-->从

•扩展应用

–链式复制:主-->从-->从

–双向复制:主<-->从

–放射式复制:从<--主-->从

|

主从同步原理(续 1 )

基本构建思路

1.确保数据相同

–从库必须要有主库上的数据。

2.配置主服务器

–启用binlog日志及设置格式,设置server_id,授权用

3.配置从服务器

–设置server_id,指定主数据库服务器信息

4.测试配置

–客户端连接主库,写入的数据,在连接从库的时候也

能够访问到。

相关命令

mysql>show slave status;#显示从库状态信息

mysql>show master status;#显示本机的binlog日志文件信息

mysql>show processlist;#查看当前数据库服务器上正在执行的程序

mysql>start slave;#启动slave进程

mysql>stop slave;#停止slave进程

***************************************************

确保数据相同

•Master服务器

–应包括希望同步的所有库

–对采用MyISAM的库,可离线备份

mysql>RESET MASTER;

//重置binlog日志

[root@dbsvr1~]#mysqldump -u root -p  -B mysql test > mytest.sql

Enter password:

//验证口令确保数据相同(续1)

•Slave服务器

–离线导入由Master提供的备份

–清空同名库(若有的话)

mysql>DROP DATABASE test;

//先清理目标库

[root@dbsvr2~]#scp dbsvr1:/root/mytest.sql./

//直接scp远程拷贝

[root@dbsvr2~]#mysql -uroot -p < mytest.sql

Enter password:

//验证口令

******************************************************


问题:

2.1拓扑图

数据库服务器192.168.4.51做主库

数据库服务器192.168.4.52做从库

2.2环境准备

主从同步未配置之前,要保证从库上要有主库上的数据。

禁用selinux]#setenforce 0

关闭防火墙服务]#systemctl stop firewalld

物理连接正常]#ping-c 2 192.168.4.51/52

数据库正常运行,管理可以从本机登录

*********************host 192.168.4.52配置主库

1)启用binlog日志

Vim /etc/my.cnf

[mysqld]

server_id=52

log-bin=master52

binlog-format="mixed"

:wq

1)启动服务

]#systemctl restart mysqld

2)查看binlog日志文件名

]#ls /var/lib/mysql/master52.*

/var/lib/mysql/master52.000001  /var/lib/mysql/master52.index

3)查看徧移量

]#mysql -uroot -p1234564

mysql>show master status;

4)做用户授权 (在主库上52给从库53授权)

mysql>grant replication slave on *.*

->to

->repluser@"192.168.4.53"

->identified by"123456";

# grant replication slave on *.* to yaya@"192.168.4.54" identified by"123456";

5)查看授权用户

mysql>select user,host from mysql.user;

*********************host 192.168.4.53配置从库

a验证主库的用户授权

]#mysql -h192.168.4.52 -urepluser- p123456

mysql>show grants;

mysql>quit;

1)指定server_id

]#vim /etc/my.cnf

[mysqld]

server_id=53

:wq

]#systemctl restart mysqld

2)数据库管理员本机登录,指定主数据库服务器的信息

]#mysql -uroot -p123456

mysql>change master to

master_host="192.168.4.52",//主库

master_user="yaya",//连主库用户

master_password="123456",//用户密码

master_log_file="master52.000001",//binlog日志文件名

master_log_pos=448;//徧移量

             # change master to master_host="192.168.4.52", master_user="yaya", master_password="123456",master_log_file="master52.000007",master_log_pos=154;

3)启动slave进程

mysql>start slave;  

4)查看进程状态信息

mysql>show slave status\G;

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

5)在客户端测试主从同步配置52

在主库服务器上添加访问数据时,使用连接用户//grant all on*.*

]#mysql -uroot -p123456

mysql>grant all on bbsdb.*to webadmin@"%" identified by "123456";

mysql>select user,host from mysql.user where user="webadmin";

mysql>quit;

客户端使用主库的授权用户,连接主库服务器,建库表插入记录

251]#mysq -h192.168.4.52 -uwebadmin -p123456

mysql>建库建表插入记录

在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户

52]#mysql -uroot -p123456

mysql>select * from 库.表;

2.4.4客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录

253]#mysql -h192.168.4.52 -uwebadmin -p123456

mysql>select * from 库.表;

6)不同步在192.168.4.53

停止stop slave;

mysql>stop slave;

在主库本机上键值

mysql-uroot-p123456

mysql>进库进表插入记录

其他主机上查看,没有插入数据的数据

在192.168.4.53主机上执行

mysql>start slave;

其他主机上查看,没有插入数据的数据

常用配置选项

主库配置选项

•适用于Master服务器 选项用途

binlog_do_db=name设置Master对哪些库记日志

binlog_ignore_db=name设置Master对哪些库不记日志

从库配置选项

•适用于Slave服务器

选项用途

log_slave_update记录从库更新,允许链式复制(A-B-C

relay_log=dbsvr2-relay-bin指定中继日志文件名

replicate_do_db=mysql仅复制指定库,其他库将被忽略,此选项

可设置多条(省略时复制所有库)

replicate_ignore_db=test不复制哪些库,其他库将被忽略,ignore-db与 do-db只需选用其中一种


一主多从

2.1拓扑图

数据库服务器192.168.4.52做主库

数据库服务器192.168.4.53做从库

数据库服务器192.168.4.54做从库

2.2环境准备

主从同步未配置之前,要保证从库上要有主库上的数据。

禁用selinux]#setenforce 0

关闭防火墙服务]#systemctl stop firewalld

物理连接正常]#ping -c 2 192.168.4.51/52/53/54

数据库正常运行,管理可以从本机登录

2.3配置mysql主从同步

配置主库192.168.4.52

a创建用户授权

b启用binlog日志

c查看正在使用binlog日志信息

配置从库192.168.4.53/54

a验证主库的用户授权

b指定server_id

c数据库管理员本机登录,指定主数据库服务器的信息

mysql>change master to

->master_host="主库ip地址",

->master_user="主库授权用户名",

->master_password="授权用户密码",

->master_log_file="主库binlog日志文件名",

->master_log_pos=binlog日志文件偏移量;

d启动slave进程

e查看进程状态信息

2.4在客户端测试主从同步配置

  • 在主库服务器上添加访问数据时,使用连接用户
  • 客户端使用主库的授权用户,连接主库服务器,建库表插入记录
  • 在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户
  • 客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录

课外知识: 

恢复数据库管理员权限

1)修改配置文件vim /etc/mysql.cnf

[mysqld]

skip-grant-tables

server_id=54

#validate_password_policy=0

#validate_password_length=6

2)重启服务

[root@host54~]#systemctl restart mysqld

3)进入数据库

[root@host54~]#mysqld

****修改权限

mysql>UPDATEmysql.userSET

select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'where user="root";

UPDATE mysql.user SET Shutdown_priv='y'where user="root";

****刷新

mysql>flush privileges;

4)修改配置文件vim /etc/mysql.cnf

[mysqld]

#skip-grant-tables

server_id=54

validate_password_policy=0

validate_password_length=6

5)重启服务

[root@host54~]#systemctl restart mysqld

查看:mysql>show variables like"rpl_semi_sync_%_enabled";

若是忘记密码

[sql]view plain copy

update mysql.user set password=PASSWORD('password')where User='root';

复制模式介绍

•异步复制(Asynchronous replication)

–主库在执行完客户端提交的事务后会立即将结果返给

客户端,并不关心从库是否已经接收并处理。

•全同步复制(Fully synchronous replication)

–当主库执行完一个事务,所有的从库都执行了该事务

才返回给客户端。

•半同步复制(Semisynchronous replication)

–介于异步复制和全同步复制之间,主库在执行完客户

端提交的事务后不是立刻返回给客户端,而是等待至

少一个从库接收到并写到relay log(中继日志)中才返回给客户端


模式配置

•查看是否允许动态加载模块

–默认允许

mysql>show variables like"have_dynamic_loading";

•命令行加载插件

–用户需有SUPER权限

主库:mysql>INSTALL PLUGIN rpl_semi_sync_master

SONAME'semisync_master.so';

从库:mysql>INSTALL PLUGIN rpl_semi_sync_slave

SONAME'semisync_slave.so';

查看:mysql>SELECT PLUGIN_NAME,PLUGIN_STATUS FROM

INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME

LIKE'%semi%';

•启用半同步复制

–在安装完插件后,半同步复制默认是关闭的

主:mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;

从:mysql>SET GLOBAL rpl_semi_sync_slave_enabled=1;

查看:mysql>show variables like"rpl_semi_sync_%_enabled";

•配置文件永久启用半同步复制

–命令配置临时配置,重启服务会失效

–修改后需要重启服务

–写在主配置文件/etc/my.cnf的[mysqld]下方

主:

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

从:

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

**************主机有可能做主库也有可能做从库

•在有的高可用架构下,master和slave需同时启动

–以便在切换后能继续使用半同步复制

plugin-load=

"rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=sems

ync_slave.so“

rpl-semi-sync-master-enabled=1

rpl-semi-sync-slave-enabled=1

***********************************************************************

部署mysql主从同步的更多相关文章

  1. mysql主从同步(5)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

    一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从 ...

  2. MySQL主从同步原理 部署【转】

    一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...

  3. Mysql主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

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

  4. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  5. mysql主从同步(4)-Slave延迟状态监控

    mysql主从同步(4)-Slave延迟状态监控  转自:http://www.cnblogs.com/kevingrace/p/5685511.html 之前部署了mysql主从同步环境(Mysql ...

  6. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有 ...

  7. mysql 主从同步 mysql代理服务器

    搭建mysql主从同步(实现数据自动备份)实例:把主机192.168.4.100的数据库配置为主机192.168.4.99的从数据库 主数据库服务器配置修改配置文件: [root@mysql ~]# ...

  8. mysql主从同步(2)-问题梳理

    之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是M ...

  9. 【实操笔记】MySQL主从同步功能实现

    写在前边: 这两天来了个需求,配置部署两台服务器的MySQL数据同步,折腾了两天查了很多相关资料,一直连不上,后来发现其实是数据库授权的ip有问题,我们用的服务器是机房中的虚拟机加上反向代理出来的,坑 ...

随机推荐

  1. VOIP RTP RTSP 实现 Baresip 源码分析

    RTP 使用 udp 进行数据传输,udp 是不能保证,数据包一定可以到达的,也不提供时序.同时还有 MTU 限制. RTCP 用来配合 RTP 提供,传输报告,会话建立和退出. 一大批参考规范 * ...

  2. TCP粘包很难么,为何我屡屡受挫??

    无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即逝的现实. --马尔克斯 本文已经收录至我的GitHub, ...

  3. Java自学路线图之Java系统自学

    Java自学不是一朝一夕的事情.可以采用"懒开始"的方法,但是必须要坚持下去,才能真正自学Java掌握编程技术.那些企图学几天去包装一下找工作的,请绕道.如果你下定决心自学Java ...

  4. 【Android】Retrofit源码学习

    使用Retrofit的流程 通过Builder创建Retrofit对象: Retrofit retrofit = new Retrofit.Builder().baseUrl("" ...

  5. 附014.Kubernetes Prometheus+Grafana+EFK+Kibana+Glusterfs整合性方案

    一 glusterfs存储集群部署 注意:以下为简略步骤,详情参考<附009.Kubernetes永久存储之GlusterFS独立部署>. 1.1 架构示意 略 1.2 相关规划 主机 I ...

  6. 项目部署Django+celery+redis

    celery介绍 1.celery应用举例 1.Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,   如果你的业务场景中需要用到异步任务,就可以 ...

  7. Linux常用命令 - wget命令详解(重点)

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 下载i ...

  8. 从零开始学习R语言(五)——数据结构之“列表(List)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125678 ...

  9. 一些Nmap NSE脚本推荐

    前言 Nmap是一款强大的开源扫描工具.同时Nmap提供了强大的脚本引擎(Nmap Scripting Engine),支持通过Lua脚本语言来扩展Nmap的功能,在Nmap的发行版中已经包含了数百个 ...

  10. 小米官网轮播图js+css3+html实现

    官网轮播: 我的轮播: 重难点: 1.布局 2.图片和右下角小圆点的同步问题 3.setInterval定时器的使用 4.淡入淡出动画效果 5.左右箭头点击时,图片和小圆点的效果同步 6.另一种轮播思 ...