mysql5.6做单向主从复制Replication
原理场景:MySQL从3.23版本开始提供复制功能。指的是将主数据库的DDL和DML操作通过二进制日志传到从服务器(也叫从库),然后在从库上对这些日志重新执行,
从而使得从库和主库的数据保持同步。
优点:如果主库出现问题,可以快速切换到从库提供服务;
可以在从库上执行查询操作,降低主库的访问压力;
可以在从库上执行备份,以免备份期间影响主库的服务;
测试环境: 2台最小化安装的centos7.2

具体操作:
1. 安装相同版本的mysql
可参考之前的文章:http://www.cnblogs.com/ding2016/p/6756941.html
2. 主(master)服务器配置
① 在my.cnf中的[mysqld]下新增如下项目:
server_id=200 # 设置server_id,一般设置为IP;
binlog-do-db=cnblogs # 复制过滤:需要备份的数据库,输出binlog(这里我假设值备份cnblogs这个数据库);
#binlog-do-db=db2 #如果要同步多个,另起一行,再加一条
#binlog-do-db=db3 #同上
binlog-ignore-db=mysql # 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步);
log-bin=master-bin # 开启二进制日志功能,可以随便取,最好有含义;
binlog_cache_size=1M # 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存;
binlog_format=mixed # 主从复制的格式(mixed,statement,row,默认格式是statement);
expire_logs_days=7 # 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除;
slave_skip_errors=1062 # 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致;
log_bin_trust_function_creators=true # 如果需要同步函数或者存储过程;
保存,退出;
补充说明:主从复制格式
(1) 基于语句的复制:在Master上执行的SQL语句,在Slave上执行同样的语句,MySQL默认采用基于语句的复制,效率比较高,
一旦发现没法精确复制时,会自动选着基于行的复制;
(2) 基于行的复制:把改变的内容复制到Slave,而不是把命令在Slave上执行一遍。从MySQL5.0开始支持;
(3) 混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制;
② 重启数据库
~]#systemctl restart mysql
③ 重新登入mysql并做相关授权
~]#mysql -uroot -p
mysql>create user mysql@'%' identified by 'mysql';
mysql>grant all on *.* to mysql@'%'; 这里可根据自己的数据库和权限进行设置;
mysql>grant replication slave, replication client on *.* to 'mysql'@'158.158.41.201' identified by 'mysql';
mysql>flush privileges;
mysql>show master status;

注意:记住上图蓝框标出的两个数值,因为在配置slave时会用到,每次重新配置都会改变。
3. 从(slave)服务器配置
① 在my.cnf中的[mysqld]下新增如下项目:
server_id=201 slave的ip做id;
binlog-do-db=cnblogs 与master相对应(换成自己的需求定义);
binlog-ignore-db=mysql 与master相对应;
#log-bin=slave1-bin 先注释掉,可以先不加;
binlog_cache_size=1M
relay_log=mysql-relay-bin 配置中继日志;
log_slave_updates=1
read_only=1
保存,退出;
补充说明:
(1)如果Slave为其它Slave的Master时,必须设置bin_log;
(2)log_slave_updates表示slave将复制事件写进自己的二进制日志;
(3)当设置log_slave_updates时,你可以让slave扮演其它slave的master;
此时,slave把SQL线程执行的事件写进行自己的二进制日志(binary log),然后,它的slave可以获取这些事件并执行它;
② 重启从服务器mysql
~]#systemctl restart mysql
③ 重新登录mysql
~]#mysql -uroot -p
mysql> change master to master_host='158.158.41.200',master_user='mysql',master_password='mysql',
master_port=3306,master_log_file='master-bin.000001',master_log_pos=708,master_connect_retry=30;

上图蓝色标志处就是之前再主上“show master status;”后得到的重要数据,写进去即可。
④ 开启主从同步
mysql>start slave;
⑤ 重看主从状态
mysql>show slave status \G

一切正常,一切就绪。
4. 测试主从同步
在master上新增cnblogs,查看slave上是否同步新增:

结束.
mysql5.6做单向主从复制Replication的更多相关文章
- Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...
- 关于Mysql5.6半同步主从复制的开启方法【转】
介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...
- Docker安装mysql5.7并且配置主从复制
Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...
- Centos6上进行Mysql5.6安装和主从复制部署
系统:centos6 数据库:mysql5.6 服务器:两台,一主一从 一.Mysql5.6二进制版本的安装 Mysql的安装在有三种模式,第一种是yum安装,第二种是二进制模式的安装,第三种是源码编 ...
- MySQL主从复制(Replication for Backup)
环境:MySQL5.7,VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1. 基本概念和操作思路 主从复制能做什么 数据库的主从复制,是 ...
- MySQL5.7安装、主从复制、读写分离原理解析以及详细配置
一.Linux下mysql彻底卸载 1.查看mysql的安装情况 rpm -qa | grep -i mysql 2.删除上图安装的软件 rpm -ev mysql-community-libs--. ...
- windows下安装mysql5.6.13的主从复制
如下操作均在vmware 虚拟机中winows xp 测试成功 中间走了很多弯路,网上的很多资料都是针对5.1以前的版本,在新版中根本无法使用,所以根据自己的实践整理了这篇文章 主服务:192.168 ...
- 关于MySQL5.7开启bin-log主从复制
主从复制:一般用于实时备份.也可配合mycat,实现读写分离. 传统的基于 ROW的主从复制 简单说下步骤: master主库配置同步,slave从库配置同步,master锁表/备份,slave恢复数 ...
- centos7+mysql5.7.11实现主从复制
1 首先检测当前的系统是否已经安装了MySQL yum list installed | grep mysql 如果有的话,删除 2 下载rpm库资源,在网页 https://dev.mysql. ...
随机推荐
- VS2008引入头文件包含目录和lib库目录
全局级别的引入 为VS所有项目设置包含目录和库目录,对所有项目都有效 如下图所示:工具-选项-项目和解决方案-VC++目录-包含文件:在此添加头文件目录即可 工具-选项-项目和解决方案-VC++目录- ...
- Servlet--HttpServlet实现doGet和doPost请求的原理
转:https://blog.csdn.net/m0_38039437/article/details/75264012 一.HttpServlet简介 1.HttpServlet是GenericSe ...
- python设计模式第二十五天【访问者模式】
1.应用场景 (1)将数据和行为进行分离,不同的角色具有不同的行为 2.代码实现
- No module named 'ConfigParser'
系统: CentOS-6.4-x86_64 Python : Python 3.4.5 和 Python 3.5.2 安装 MySQL-python ,结果出错: ImportError: No mo ...
- MySQL——基础操作
参考博客:http://www.cnblogs.com/wupeiqi/articles/5713315.html 1.创建用户.授权(默认root,密码为空) 创建: create user 'al ...
- 如何强制关闭LODOP或c-lodop已经弹出的预览窗口
该文介绍一下LODOP和C-LODOP关于窗口的弹出,和如何强制关闭已经打开的预览窗口. 同一个页面,只能弹出一个窗口,lodop是禁止点击动作,而c-lodop会提示已有窗口开的,请关闭之类的默认提 ...
- 【python练习题】程序10
#10.题目:暂停一秒输出,并格式化当前时间. import time print(time.time())#timestamp print(time.localtime(time.time()))# ...
- Linux系统下手把手完成无人值守安装服务
刚入职的运维新手经常会被要求去做一些安装操作系统的工作,如果按照用镜像光盘安装操作系统,效率会相当低下.那么如何提升效率,搭建出一套可以批量安装Linux系统的无人值守的安装系统? PXE+TFTP+ ...
- 鼠标事件-MouseEvent
当鼠标进行某种操作时,就会生成一个event对象,该对象记录着鼠标触发事件时的所有属性. 可以通过如下方法在google控制台打印出 MouseEvent 对象. function mouseDown ...
- .net core 2.0 数据访问-迁移
将用于进行迁移的 Entity Framework Core NuGet包 添加到`.csproj`文件 <ItemGroup> <DotNetCliToolReference In ...