企业级高性能MYSQL的用法---------(一)----------(基于binlog的主从复制和基于GDIT的主从复制))

企业级高性能MYSQL的用法宝典

1.数据库的基本介绍

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的二维表中,并将这些表放入数据库,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  1. Mysql是开源的,所以你不需要支付额外的费用。

  2. Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

  3. MySQL使用标准的SQL数据语言形式。

  4. Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

  5. Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。

  6. MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

  7. Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

在这里插入图片描述

2.基于binlog的主从复制(异步复制)

1.主从复制原理

mysql的主从配置又叫replication,AB复制,基于binlog二进制日志,主数据库必须开启binlog二进制日志才能进行复制。

过程:

主数据库将更改操作记录到binlog二进制日志(主数据库有log dump线程和从数据库的i/o线程传递binlog)。
从库生成两个线程,一个i/o线程,一个SQL线程
i/o线程去请求主库的binlog,并且得到的binlog日志写到relay log(中继日志)文件中
然后主库会生成一个log dump线程,用来给从库的i/o线程传binlog;SQL线程,会读取中继日志文件,并解析成具体的操作执行,这样主从的操作就一致了,而最终的数据也就一致了。

在这里插入图片描述
在这里插入图片描述
作为异步复制,其主库将事件写入binlog二进制文件,dump线程将binlog文件发送出去,不保证其他从节点是否会收到binlog二进制文件。

2.实现主从复制的要求

  1. 主库开启binlog日志(设置log-bin参数)
  2. 主从server-id不同
  3. 从库服务器能连同主库

主从复制的实现

1. 配置主库端:

第一步:在主库中安装mysql,这里我们用server1作为主库

yum install mysql-community-client-5.7.28-1.el7.x86_64.rpm 
mysql-community-common-5.7.28-1.el7.x86_64.rpm 
mysql-community-libs-5.7.28-1.el7.x86_64.rpm 
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm 
mysql-community-server-5.7.28-1.el7.x86_64.rpm 

在这里插入图片描述
在这里插入图片描述
第二步:编辑配置文件

vim /etc/my.cnf
最后面添加:
log-bin=mysql-bin     #开启二进制日志
server-id=1           #服务器ID

systemctl start mysqld	#开启数据库

在这里插入图片描述
第三步:查看初始化密码

开启数据库之后会在 /var/log/mysqld.log 里面生成一个初始密码

cat  /var/log/mysqld.log | grep password
我的初始密码为:7k:OQ*Yfj.tE

在这里插入图片描述
第四步:安全初始化

mysql_secure_installation
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安全初始化完成之后这时候我们就可以登录数据库了!!!!!

在这里插入图片描述
在这里插入图片描述

第五步:创建用户并授权

参数解释:

replication     表示授权复制的权限
*.*         表示所有数据库可以进行同步
repl         表示授权名,可以随意填写
'192.168.43.%'   表示授权192.168.43.0/24的网段所有服务器可以同步, %表示任意

在这里插入图片描述
在这里插入图片描述

2. 配置从库端 这里我们用server2作为从库

在这里插入图片描述
在这里插入图片描述
配置从库并开启从库

注意:master_log_file 和master_log_pos 的值都要依照主设备状态中的值来设定

在这里插入图片描述
在这里插入图片描述
测试:

配置主从复制完成后,那我们来检测一下能不能实现复制

在主库端创建库:
在这里插入图片描述
然后我们在从库中就可以看到westos库:
在这里插入图片描述
在主库中创建表,并插入数据:
在这里插入图片描述
在这里插入图片描述

在从库中可以看到数据:
在这里插入图片描述

3.基于GDIT的主从复制

1.基于GDIT的复制方式

mysql数据库从5.6.5开始新增一种基于GDIT的复制方式。GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上 是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。

  1. 主从复制,默认是通过pos复制(postion),就是说在日志文档里,将用户进行的每一项操作都进行编号(pos),每一个event都有一个起始编号、一个终止编号。我们在配置主从复制时从节点时要输入master的log_pos值就是这个原因,要求它从哪个pos开始同步数据库里的数据,这也是传统复制技术。

  2. MySQL5.6增加了GTID复制,GTID就是类似于pos的一个作用,不过它是整个mysql复制架构全局通用的,就是说在这整个mysql冗余架构中,它们的日志文件里事件的GTID值是一致的。

  3. GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID 代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。

  4. 通过GDIT保证每个主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。

pos与GTID的区别:
两者都是日志文件里事件的一个标志,如果将整个mysql集群看作一个整体:pos就是局部的,GTID就是全局的

2.实现主从复制

第一步:在主从两端(server1 server2)都修改配置文件:

在server1和server2中做以下操作:

vim /etc/my.cnf
  gtid_mode=ON            			开启gtid模式
  enforce-gtid-consistency=true     强制gtid一致性,用于保证启动gitd后事务的安全

systemctl restart mysqld	#重启mysql

在这里插入图片描述
在这里插入图片描述

第二步:在从库端先停掉slave,然后重新创建连接:

在这里插入图片描述
在这里插入图片描述

所以呢?去掉分号来一次看看
在这里插入图片描述
在这里插入图片描述

测试

在主库表中添加新的信息:

在这里插入图片描述

从库查看是否复制成功?来来来 看一下!!!!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值