MySQL主从复制-记录

1、 安装mariadb数据库(mysql),并配置主从信息

查看 系统信息
[root@master ~]# cat /etc/redhat-release
在这里插入图片描述
安装mariadb数据库
[root@master ~]# yum install -y mariadb mariadb-devel mariadb-server

在这里插入图片描述
关闭所有服务器的防火墙
[root@master ~]# systemctl stop firewalld
在这里插入图片描述
启动所有mariadb服务器并查看数据状态
[root@master ~]# systemctl start mariadb
[root@master ~]# systemctl status mariadb

在这里插入图片描述
设置所有服务器上的数据库密码(mariadb默认安装是没有密码的)
[root@master ~]# mysqladmin -uroot password
在这里插入图片描述
登入数据库并查看版本
[root@master ~]# mysql -uroot -padmin
MariaDB [(none)]> select @@version;
±---------------+
| @@version |
±---------------+
| 5.5.60-MariaDB |
±---------------+
1 row in set (0.00 sec)

在这里插入图片描述
启用binlog及允许同步,(所有库)
[root@master ~]# vim /etc/my.cnf 添加配置信息

在这里插入图片描述
从库启用binlog (从库不是必须启动binlog日志文件)
Slave1主机my.cnf配置内容
在这里插入图片描述
Slave2主机配置内容

在这里插入图片描述
重启数据库(所有主机)
[root@master ~]# systemctl restart mariadb

在这里插入图片描述

添加admin用户并授权,密码为123456(主库)
MariaDB [(none)]> grant all on . to admin@"%" identified by “123456”;
Query OK, 0 rows affected (0.00 sec)
在这里插入图片描述
查看授权用户
MariaDB [(none)]> select user,host from mysql.user;
±------±----------+
| user | host |
±------±----------+
| admin | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | master |
| root | master |
±------±----------+
7 rows in set (0.00 sec)

在这里插入图片描述

查看master服务器的状态
MariaDB [(none)]> show master status;

在这里插入图片描述
从机Slave1服务器
MariaDB [(none)]> change master to master_host=‘192.168.31.78’,
-> master_user=‘admin’,
-> master_password=‘123456’,
-> master_log_file=‘master-bin.000001’,
->master_log_pos=372;
在这里插入图片描述
从机Slave1启动复制并查看Slave1的状态
MariaDB [(none)]> start slave; #启动复制

MariaDB [(none)]> show slave status\G;

在这里插入图片描述

配置从机Slave2同步操作(这个和从机Slave2是一样的操作)

在这里插入图片描述

启动复制并查看状态
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;

在这里插入图片描述
好了 到这 主从就配置好了,下面在主机上创建数据看下效果

主机上查看都是有那些数据库?
MariaDB [(none)]> show databases;
在这里插入图片描述

主机上创建YHB库并查看有没有创建成功

MariaDB [(none)]> create database YHB;

MariaDB [(none)]> show databases;

在这里插入图片描述

查看从机1有没有同步新建的库过去
MariaDB [(none)]> show databases;

在这里插入图片描述
查看从机2有没有同步新建的库过去
MariaDB [(none)]> show databases;

在这里插入图片描述

已经同步成功了,说明主从现在已经配置成功了

2、 配置同步模式

同步的模式有三中,分别是异步复制、全同步复制、半同步复制,他们有什么不同?

异步复制:mysql数据库默认就是异步复制,主库在执行完客户端提交的事务后会立马将结果返回给客户端,并不关心从库是否已经接受并处理,这样就回你出现一个问题,主如果宕掉,主处理的事务没有同步到从机上,这个时候强行将从机提升为新的主机,可能导致新的机上的数据不完整

全同步复制:主库在执行完一个事务后,不会立刻返回给客户端,而是确认所有的从库都执行完此事务后,在返回给客户端,这样就会影响复制的性能问题

半同步复制:介于异步和全同步之间,主库在执行完客户端提交的事务后,不是立刻返回给客户端,而是等待至少有一个从库接收到并写入relay log(中继日志)中,才会返给客户端
从。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

mysql5.5版本开始,以插件的形式支持半同步复制

想要使用半同步复制,要满足一下几个条件

1、 数据库是mysql5.5版本及以上版本
[root@Master ~]# rpm -qa | grep mariadb
在这里插入图片描述
2、 查看变量是否允许动态模块加载(默认是开启的)
MariaDB [(none)]> show variables like “have_dynamic_loading”;

在这里插入图片描述
安装插件半同步需要的插件

因用户需要执行 install plugin,set global,stop slave和start slave操作,所以用户需要有super权限

Master主机执行命令:
MariaDB [(none)]> install plugin rpl_semi_sync_master soname ‘semisync_master.so’;

在这里插入图片描述

Slave1从机 和Slave1从机执行命令:
MariaDB [(none)]> install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;
在这里插入图片描述

在Master和Slavle主机查看插件有没有安装成功:(2种方式)
1、 MariaDB [(none)]> show plugins;
在这里插入图片描述
2、MariaDB [(none)]> select plugin_name,plugin_status from information_schema.plugins where plugin_name like ‘%semi%’;
在这里插入图片描述

启动半同步复制
在安装完插件后,半同步复制默认是关闭的,需要开启。(两种方式,一种命令行,一种配置文件)
命令行:(命令配置临时配置,重启服务会失效)

Master主机:

MariaDB [(none)]> set global rpl_semi_sync_master_enabled= 1;

在这里插入图片描述
Slave1和Slave2主机:
MariaDB [(none)]> set global rpl_semi_sync_slave_enabled = 1;
在这里插入图片描述

配置文件:
配置文件永久启用半同步复制
命令配置临时配置,重启服务会失效
写在主配置文件/etc/my.cnf 的[mysqld]下方
修改后需要重启服务

Master主机配置文件:
[root@Master ~]# vim /etc/my.cnf
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1

在这里插入图片描述

Slavle1和Slavle2主机文件配置(1和2一致,就不多截图了)
[root@Slave1 ~]# vim /etc/my.cnf
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=semisync_slave.so”
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1

在这里插入图片描述

查看半同步复制是否在运行

Master主机:
MariaDB [(none)]> show status like ‘Rpl_semi_sync_%_status’;

在这里插入图片描述
Slave1和Slave2主机:(从机还没有生效,需要重启下IO线程)
MariaDB [(none)]> show status like ‘Rpl_semi_sync_%_status’;
在这里插入图片描述

重启从机上线的IO线程
MariaDB [(none)]> STOP SLAVE IO_THREAD; (停止线程)
MariaDB [(none)]> start slave io_thread; (启动线程)
在这里插入图片描述

查看 Slave1和Slave2从机上半同步状态

MariaDB [(none)]> show status like ‘rpl_semi_sync_%_status’; (现在开启了)
在这里插入图片描述

这两个变量常用来监控主从是否运行在半同步复制模式下。
至此,MySQL半同步复制搭建完毕~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值