1.binlog日志,如果是多个数据库,binlog日志是不是也是分为多个日志?

2.binlog日志存储的路径在哪里?

3.常用的binlog模式,大家都是使用哪种?

1.statement level模式
2.rowlevel模式
3.mixed模式

1.开启binglog日志

1.1.修改my.cnf配置文件

在【mysqld】段添加:

#binlog刷盘策略
sync_binlog=1
#需要备份的数据库
binlog-do-db=hello
#不需要备份的数据库
binlog-ignore-db=mysql
#启动二进制文件
log-bin=mysql-bin
#服务器ID
server-id=132

sync_binlog参数:
0 存储引擎不进行binlog的刷新到磁盘,而由操作系统的文件系统控制缓存刷新。
1每提交一次事务,存储引擎调用文件系统的sync操作进行一次缓存的刷新,这种方式最安全,但性能较低。
n当提交的日志组=n时,存储引擎调用文件系统的sync操作进行一次缓存的刷新。
sync_binlog=0或sync_binlog大于1,事务被提交,而尚未同步到磁盘。因此,在电源故障或操作系统崩溃时有可能服务器已承诺尚未同步一些事务到二进制日志。因此它是不可能执行例行程序恢复这些事务,他们将会丢失二进制日志。

1.2.调整binlog日志模式

查看binlog的日志模式:
show variables like 'binlog_format';

调整binlog的日志模式:
binlog的三种格式: STATEMENT 、 ROW 、 MIXED 。
set binlog_format=STATEMENT;

这时,需要重启一下数据库,才能使用配置文件生效。

systemctl restart mysqld

1.3.查看bin logrelay log日志

因为binlog日志文件:mysql-bin.000005是二进制文件,没法用vi等打开,这时就需要mysql的自带的 mysqlbinlog工具进行解码,执行: mysqlbinlog mysql-bin.000005 可以将二进制文件转为可阅读的sql语句。
mysqlbinlog --base64-output=decode-rows -v -v mysql-bin.000058 > binlog

1.4.使用命令查看binlog

show master logs;

使用 show binlog events 命令可以以列表的形式显示日志中的事件信息。
show binlog events命令的格式:
show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
说明:
(1)IN ‘log_name’:指定要查询的binlog文件名(如果省略此参数,则默认指定第一个binlog文件);
(2)FROM pos:指定从哪个pos起始点开始查起(如果省略此参数,则从整个文件的第一个pos点开始算);
(3)LIMIT【offset】:偏移量(默认为0);
(4)row_count:查询总条数(如果省略,则显示所有行)。
show binlog events in 'mysql-bin.000001';

切换binlog文件:会生成一个新的日志文件。
flush logs;

2、基于binlog主从复制

2.1.关闭主从机器的防火墙

systemctl stop iptables(需要安装iptables服务)
systemctl stop firewalld(默认)
systemctl disable firewalld.service(设置开启不启动)

2.2.主服务器配置

查看binlog是否开启可以使用命令:
show variables like 'log_bin%';

log_bin如果是 OFF 代表是未开启状态。

2.3.主机给从机授备份权限

注意:先要登录到MySQL命令客户端
GRANT REPLICATION SLAVE ON *.* TO '从机MySQL用户名'@'从机IP' identified by '从机MySQL密码';

例子:

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by 'root'; ​​​​​​​ 
注意事项:
一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替, 如192.168.145.226,加强安全。
mysql5.7对密码的强度是有要求的,必须是字母+数字+符号组成的,可以使用如下方法调整密码
强度。
设置密码长度最低位数
set global validate_password_length=4;
设置密码强度级别
set global validate_password_policy=0;
validate_password_policy有以下取值:

刷新权限 :
FLUSH PRIVILEGES;

2.4.查询master的状态

show master status;

3.从服务器配置

3.1.修改my.conf文件

[mysqld]
server-id=401326

3.2.重启并登录到MySQL进行配置从服务器

systemctl restart mysqld
change master to master_host='10.0.200.17', master_port=3306, master_user='root', master_password='root', master_log_file='mysql-bin.000002', master_log_pos=589, MASTER_AUTO_POSITION=0;

注意:
语句中间不要断开, master_port 为mysql服务器端口号(无引号), master_user 为执行同步操作的数 据库账户, “410” 无单引号(此处的 410 就是 show master status 中看到的 position 的值,这里的 mysql-bin.000001 就是 file 对应的值)。

3.3.启动从服务器复制功能

start slave;stop slave;reset slave;show slave status;

3.4.检查从服务器复制功能状态

show slave status \G;
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IOSlave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO属错误)

4.设置从库写权限

对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:

set global read_only=1;

read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作。

在MySQL中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;

为了确保所有用户,包括具有super权限的用户也不能进行读写操作,就需要执行给所有的表加读锁的命令 “flush tables with read lock;”。

这样使用具有super权限的用户登录数据库,想要发生数据变化的操作时,也会提示表被锁定不能修改的报错。

将slave数据库read-only=1设置只读后,在master执行GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY'123456' WITH GRANT OPTION;创建一个普通用户,然后用普通用户登录从库,执行操作会报错。切换到root用户后还是可以进行增删改查的。

5.基于GTID的主从复制

5.1.什么是GTID

GTID就是全局事务标识符(Global Transaction Identifiers),基于事务的复制。使用 GTID 时,可以识别和跟踪每个事务,因为它在原始服务器上提交并由任何从属服务器应用;这意味着在启动新从站或故障到新主服务器时,使用 GTID 引用日志文件或这些文件中的位置时,不需要引用日志文件或位置,这大大简化了这些任务。由于基于 GTID 的复制完全基于事务,因此只需确定主复制和从级复制是否一致; 只要在主主机上提交的所有事务也都提交到从站上,就保证两者之间的一致性。

5.2.修改master、slave服务器的my.cnf文件

注意了:是master和slave都要修改配置
#开启GTID模式(必选)
gtid_mode=ON
#强制gtid一致性(必选)
enforce-gtid-consistency=true

5.3.重启mysql

systemctl restart mysqld

5.4.从服务器中执行change master

change master to master_host='192.168.68.132',
master_port=3306, master_user='root',
master_password='root',
master_auto_position = 1;

5.5开启同步

START SLAVE;

微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布:

mysql 集群 主从复制相关推荐

  1. MySQL集群(一)之主从复制

    前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作. 其实各种数据库都有自己的集群,常常的多: 我们要学习的就是 ...

  2. mysql集群(主从复制)实操

    mysql集群(主从复制)实操 1.环境准备 1.准备5台全新的机器 ​ 192.168.31.23 master1 ​ 192.168.31.24 master2 ​ 192.168.31.89 s ...

  3. mysql集群一:主从复制,通过mysql-proxy做负载均衡

    mysql集群架构方式很多,根据不同的需求做不一样的架构,简单一点的就是mysql的replication,也就是Mysql的复制功能,模式有:master-slaves,master-slaves- ...

  4. mysql 集群操作系统_高性能MySQL集群详解(二)

    一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一 ...

  5. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  6. mysql 集群_MySQL之PXC集群搭建

    一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...

  7. 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)

    不可避免的是,使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.怎么办?前面已经讲过十一篇优化方案,接下来 ...

  8. mysql集群_MySQL集群

    MySQL集群搭建之主从复制: 主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) ...

  9. kubernetes怎么读_Kubernetes之有状态应用实践-搭建MySQL集群

    零.前情纪要 上一遍文章Kubernetes集群搭建已经带大家成功搭建了Kubernetes集群,可能有不少人在搭建过程中对很多概念性的东西还是很模糊,接下来这篇文章将通过带领大家一起搭建一个高可用的 ...

最新文章

  1. LeetCode_97.交错字符串_没懂
  2. feign rest_与Feign客户轻松进行REST通信
  3. struts2值栈,OGNL表达式,interceptor
  4. QT 定时关机、共享内存、启动浏览器、浏览器前进后退刷新、进度条、设置浏览器标题、QML入门
  5. 解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示The operation could not be completed. 的问题。...
  6. Shuffle Cards(Rope大法)将一段区间的数字整体搬动
  7. 继承的作用是什么?看看下面这些例子吧!
  8. I/O模型+Nginx基本配置
  9. 金蝶盘点机PDA轻松扫码产品入库,生产型企业进销存条码管理软件
  10. 普中51单片机开发板笔记
  11. 武汉大学测绘学院工测带缓和曲线的圆曲线
  12. qq邮箱对方服务器退回,为什么我用QQ邮箱发邮件被退回来了?他说地 – 手机爱问...
  13. Typora 如何依次打小黑点,空心圆,实心框后恢复空心圆、小黑点
  14. javaSE探赜索隐之三<类与对象的爱恨情仇中>
  15. 赶紧来修炼内功发~内存函数详解大全-memcpy、memmove、memcmp
  16. vue实现微信扫码拨打电话
  17. mbedTLS(PolarSSL)简单思路和函数笔记(Client端)
  18. lingo子模型——数学模型4.7 例1 广告投入
  19. Qt编写自定义控件:唱片播放控件
  20. 聊聊苹果审核——App Store Review Guidelines

热门文章

  1. 斯坦福CS229机器学习课程的数学基础(线性代数)翻译完成
  2. 技术系列课|AI驱动的超分辨技术应用现状
  3. 互联网1分钟 |1227
  4. 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践
  5. 【易创课堂】第2期开课啦,大包新年好礼成都等你
  6. 解决mac下webstorm编辑器识别less的问题
  7. 应该允许公司报复黑客吗?
  8. 【活动推荐】北京泛娱乐行业技术沙龙——新技术助力内容产业破局之道
  9. 5.34. PECL FAQ
  10. (--3198)2: Redirecting From A File( Piping and redirecting output