mysql 高性能搭建1: Centos7+Mysql7.5搭建主从复制

本文介绍了如何在CentOS7环境下搭建MySQL7.5的主从复制,解决读压力问题。详细步骤包括配置逻辑流程、模拟主数据库、开启主服务器二进制日志、配置复制账号、主从数据验证等。在主从复制过程中,需关注主从不同步的处理,确保数据一致性。
摘要由CSDN通过智能技术生成

一 概述

1.1 解决mysql读压力大问题

1.进行读写分离,主服务器主要执行写操作。

2.读操作的压力平均分摊到不同的slave服务器上。

3.增加前端缓存服务器。如redis,memcache等。

1.2 服务资源介绍

本案例是使用192.168.1.86和192.168.1.126 这两台机器,服务详情见下表:

Ip

数据库角色

用户

Mysql的路径

192.168.1.86

Master

hd-mysql

/home/hd-myql/mysql-5.7.32

192.168.1.126

slaver

root

/usr/local/mysql-5.7.32

其中192.168.1.86这台机器上的myql数据库隶属于hd-mysql用户,启动mysql需要此用户来启动;192.168.1.126这台机器上的myql数据库隶属于root用户,启动mysql需要root用户来启动。

https://www.cnblogs.com/opsprobe/p/12029618.html

1.3 常用命令解释

1.stop  slave: 停止从库

2.reset master: 将删除日志索引文件中记录的所有二进制文件,创建一个新的日志文件起始值从000001开始。

   注意:在生产环境的主从复制,禁止在主库中使用reset master;可以选择 expire 进行定期清理主库二进制日志。

3.reset slave: 使slave 忘记主从复制关系的位置信息。该语句旨在用于全新启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。

使用reset slave之前必须使用stop slave 命令将复制进程停止。

4.reset slave all: 在5.6版本中 reset slave 并不会清理存储于内存中的复制信息,比如这些信息master host, master port, master user, or master password,也就是说如果没有使用change master 命令做重新定向,执行start slave 还是会指向旧的master 上面。

在MySQL 5.6.3和更高版本中,可以使用reset slave all;重置这些连接参数。

1.4 主从复制的数据流向

主从复制是单向同步,master的修改后往slave同步配置好主从复制的时候,两个库的数据可能是不一样的,当配置好主从复制开始,主库所有的更改都会同步到从库。主库只能同步到从库,从库不可同步到主库,主库具有可读可写,从库只有可读。

1.5 重启后主从不同步

在实际环境中,先别执行reset master,先查看一下主节点的信息:show master status,在从节点设置一值就ok了!参考下面章节【2.10】章节!

二  主从复制

这种手动版的主从配置潜在的风险是:关机后再重启,主从不再同步了;需要手动干预,将从服务器的日志文件名和读取位置信息和主库设置一致。

2.1 配置逻辑流程

1.主库将变更写入到主库的binlog的二进制文件中。

2.从库的IO进程读取主库的binlog日志内容,并存储到Relay Log日志文件中。

3.从库的SQL进程读取Relay Log日志文件中的内容,再重新存储到从库中。

如下图所示:

 2.2 模拟主数据库(86)已经存在数据

模拟在实际环境中,主数据库可能已经存在数据,需要自己在配置主从复制之前,在主数据库中模拟一些数据出来,所以本案例用来演示如何对已经存在的数据进行数据同步备份。

2.2.1 使用hd-mysql启动mysql

[root@localhost etc]$ su hd-mysql

[hd-mysql@localhost etc]$ service mysql restart

Starting MySQL. SUCCESS!

2.2.2 主数据库提前模拟数据

新建一个数据库xx_db; 数据表tb_student,新增一条数据。

[hd-mysql@localhost etc]$ mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.00 sec)

mysql> create database xx_db;

Query OK, 1 row affected (0.01 sec)

mysql> use xx_db;

Database changed

mysql> create table tb_student (id int(10) primary key auto_increment,user_name varchar(255) not

null);

Query OK, 0 rows affected (0.00 sec)

mysql> insert into tb_student(id,user_name) values(1,'xinxiang');

Query OK, 1 row affected (0.01 sec)

mysql> select * from tb_student;

+----+-----------+

| id | user_name |

+----+-----------+

|  1 | xinxiang  |

+----+-----------+

1 row in set (0.01 sec)

mysql> exit;

Bye

2.3 在主服务器(86)上开启二进制日志设置服务器编号

在主服务器上开启二进制日志并设置服务器编号,根据自己的实际情况进行设置,原则上使用ip的地址后一位即可。编辑/etc/my.cnf配置文件的内容,然后在 [mysqld] 段添加相应的配置选项。

2.3.1 对文件进行配置

对于/etc/my.cnf的配置文件,hd-mysql对此文件没有权限,需要切换到root用户进行修改,如下图

[hd-mysql@localhost etc]$ cd /etc

[hd-mysql@localhost etc]$ su root

Password:

[root@localhost etc]# vi my.cnf

编辑的内容如下:

# set zhucongfuzhi

server_id = 86               # 设置服务器编号

log_bin = master-bin        # 启用二进制日志,并设置二进制日志文件前缀

binlog-do-db=xx_db          #要给从机同步的库

expire_logs_days=7          #自动清理 7 天前的log文件,可根据需要修改

#binlog-ignore-db=mysql      #不给从机同步的库(多个写多行)

#binlog-ignore-db=information_schema

截图如下:binlog-do=xx_db 表示这里只同步xx_db这个数据库的内容

2.3.2 重启msyql服务

重启mysql服务,需要切换到hd-mysql用户,因为此用户对mysql有启动权限。

[root@localhost etc]# su hd-mysql

[hd-mysql@localhost etc]$ service mysql restart

Shutdown  MySQL. SUCCESS!

Starting MySQL. SUCCESS!

[hd-mysql@localhost etc]$ mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.32-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 2.3.3 查看mysql的biglog日志

mysql> show variables like '%log_bin%';

+---------------------------------+---------------------------------------------------+

| Variable_name                   | Value                                             |

+---------------------------------+---------------------------------------------------+

| log_bin                         | ON                                                |

| log_bin_basename                | /home/hd-mysql/mysql-5.7.32/data/master-bin       |

| log_bin_index                   | /home/hd-mysql/mysql-5.7.32/data/master-bin.index |

| log_bin_trust_function_creators | OFF                                               |

| log_bin_use_v1_row_events       | OFF                                               |

| sql_log_bin                     | ON                                                |+---------------------------------+---------------------------------------------------+

6 rows in set (0.01 sec)

 2.4 在主服务器(86)上开启复制账号

执行数据复制时,所有的从服务器都需要使用账户与密码连接MySQL主服务器,所以在主服务器上必须存在至少一个用户账户及相应的密码供从服务器连接。这个账户必须拥有replication slave权限

MySQL可以使用create

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值