高性能MYSQL—基于binlog的主从复制


文章目录

  • 高性能MYSQL---基于binlog的主从复制
  • 1.主从复制原理
  • 2.实现主从复制的要求
  • 3.主从复制的实现
  • - 配置主库端:
  • - 配置从库端:
  • - 测试:


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.从库服务器能连同主库

3.主从复制的实现

- 配置主库端:

step1 在主库中安装mysql:

yum remove mysql-libs	#清除yum里所有mysql依赖包
rpm -ivh mysql-community-common-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.25-1.el6.x86_64.rpm --nodeps

step2 打开数据库:

systemctl start mysqld

mysql binlog 另一个新数据库 博客园_服务器


step3 查看初始化密码:

cat /var/log/mysqld.log | grep password

step4 安全初始化:

mysql_secure_installation

mysql binlog 另一个新数据库 博客园_服务器_02


step5 编辑配置文件:

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

systemctl restart mysqld	#重启服务

mysql binlog 另一个新数据库 博客园_服务器_03


step6 创建用户并授权:

参数解释:

replication    表示授权复制的权限*.*         表示所有数据库可以进行同步

repl        表示授权名,可以随意填写

'172.25.254.%'   表示授权172.25.19.0/24的网段所有服务器可以同步, %表示任意

mysql binlog 另一个新数据库 博客园_主从复制_04


mysql binlog 另一个新数据库 博客园_主从复制_05

- 配置从库端:

step1 在主库中安装mysql:

yum remove mysql-libs	#清除yum里所有mysql依赖包
rpm -ivh mysql-community-common-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.25-1.el6.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.25-1.el6.x86_64.rpm --nodeps

step2 打开数据库:

systemctl start mysqld

step3 查看初始化密码:

cat /var/log/mysqld.log | grep password

step4 安全初始化:

mysql_secure_installation

step5 编辑配置文件:

vim /etc/my.cnf
最后面添加:
 28 server-id=2           #服务器ID,填写主端不同即可

systemctl restart mysqld	#重启服务

mysql binlog 另一个新数据库 博客园_mysql_06


step6 设定从设备并开启从设备:

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

mysql binlog 另一个新数据库 博客园_主从复制_07


mysql binlog 另一个新数据库 博客园_服务器_08

- 测试:

step1 在主库端创建库:

mysql binlog 另一个新数据库 博客园_服务器_09


step2 在从库中可以看到westos库:

mysql binlog 另一个新数据库 博客园_主从复制_10


step3 在主库中创建表,并插入数据:

mysql binlog 另一个新数据库 博客园_主从复制_11


step4 在从库中可以看到数据:

mysql binlog 另一个新数据库 博客园_主从复制_12