欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

mysql5.7一主多从配置

时间:2023-07-22

之前在文章中已经介绍过如何进行配置,当时过于仓促也就没有介绍的很明确,这里复盘下重新给大家记录下一主多从的配置和复制延迟如何处理。

这里使用一台服务器进行了多实例的安装【此方式只用于学习和测试,生产环境请使用多mysql服务】

mysql5.7 安装

这里就不多介绍了,可参照此博客进行yum安装https://blog.csdn.net/wohiusdashi/article/details/89358071

新建4个数据库实例数据存储目录

/www/server/mysqldata/3307/www/server/mysqldata/3308/www/server/mysqldata/3309/www/server/mysqldata/3310

刷新权限组为mysql

chown -R mysql.mysql /www/server/mysqldata

初始化4个实例数据库

/usr/sbin/mysqld --initialize-insecure --basedir=/var/lib/mysql --datadir=/www/server/mysqldata/3307 --user=mysql/usr/sbin/mysqld --initialize-insecure --basedir=/var/lib/mysql --datadir=/www/server/mysqldata/3308 --user=mysql/usr/sbin/mysqld --initialize-insecure --basedir=/var/lib/mysql --datadir=/www/server/mysqldata/3309 --user=mysql/usr/sbin/mysqld --initialize-insecure --basedir=/var/lib/mysql --datadir=/www/server/mysqldata/3310 --user=mysql

初始化4个实例的配置文件
4个配置文件需要修改的地方为对应的目录
替换的端口号:3307,3308,3309,3310

[client]port = 替换的端口号socket = /www/server/mysqldata/替换的端口号/mysql.sockdefault-character-set = utf8[mysqld]port = 3308socket = /www/server/mysqldata/替换的端口号/mysql.sockdatadir = /www/server/mysqldata/替换的端口号log-error = /www/server/mysqldata/替换的端口号/error.logpid-file = /www/server/mysqldata/替换的端口号/mysql.pidcharacter-set-server = utf8lower_case_table_names = 1autocommit = 1

最终4个配置都放在/www/server/mysqlconf下

 启动4个实例

mysqld --defaults-file=/www/server/mysqlconf/3307.cnf --user=mysql & mysqld --defaults-file=/www/server/mysqlconf/3308.cnf --user=mysql & mysqld --defaults-file=/www/server/mysqlconf/3309.cnf --user=mysql & mysqld --defaults-file=/www/server/mysqlconf/3310.cnf --user=mysql &

登录各个实例,并修改密码

mysql -S /www/server/mysqldata/3307/mysql.sock(或者使用 指定端口号:mysql -h:: -P3307 -uroot -p 【指定端口号的时候必须指定-h参数,要不-P不生效】)mysql> select user,host,authentication_string from mysql.userG;mysql> update mysql.user set authentication_string=password("root") , host='%' where user='root' and host='localhost';mysql> flush privileges;mysql> exit;

下面开始配置1主3从


1.指定3307为主,3308,3309,3310为从

2.关闭所有实例

3.在3307.cnf中添加

server-id = 3307log-bin = mysql-binbinlog_format = MIXED

4.在3308.cnf中添加

server-id = 3308log-bin = mysql-binbinlog_format = MIXED

5.在3309.cnf中添加

server-id = 3309log-bin = mysql-binbinlog_format = MIXED

6.在3310.cnf中添加

server-id = 3310log-bin = mysql-binbinlog_format = MIXED

7.重新启动4个实例

8.在3307连接中新增账号用于同步使用

mysql> show master status;mysql> grant replication slave on *.* to 'db_slave'@'%' identified by 'root';mysql> show master status;

9.主库重置偏移量

mysql> reset master;mysql> show status status; # 此刻查看是空的,无信息

10.从库三节点配置主库同步

mysql> change master to master_host='127.0.0.1',master_port=3307,master_user='db_slave',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=154; # 这里的账号信息是从主库创建的mysql> show slave status G; #此刻查看的是存在信息的,但并没有开启复制【Slave_IO_Running,Slave_SQL_Running 的值为No】mysql> start slave; #启动从节点mysql> show slave status G; #此刻查看的是存在信息的,但并已开启复制【Slave_IO_Running,Slave_SQL_Running 的值为Yes】

至此主从的最精简配置就已经配置好了。可是自己用mysql客户端试一下了。但是还有一些问题会在以下提到。

11.出现主从不一致的情况

mysql> show slave status G; # 查看由于什么原因导致的从节点停止的,之后手动处理好数据mysql> stop slave; # 停止从节点mysql> start slave; # 开启从节点

 12.cnf的配置项是为最精简的主从配置,其他的配置请酌情参考进行增加

13.查看从库状态的关键性指标

mysql> show slave status G;

有几个参数比较重要:

​master_log_file: slave中的IO线程正在读取的主服务器二进制日志文件的名称
​read_master_log_pos: 在当前的主服务器二进制日志中,slave中的IO线程已经读取的位置
relay_log_file: sql线程当前正在读取和执行的中继日志文件的名称
​relay_log_pos: 在当前的中继日志中,sql线程已经读取和执行的位置
​relay_master_log_file: 由sql线程执行的包含多数近期事件的主服务器二进制日志文件的名称
​slave_io_running: IO线程是否被启动并成功地连接到主服务器上
​slave_sql_running: sql线程是否被启动
​seconds_behind_master: 从属服务器sql线程和从属服务器IO线程之间的事件差距,单位以秒计【这个值比较重要,具体请自行百度】

14.一主多从,从库延迟严重如何调整

MySQL 5.7 的新功能多线程复制
在从库3个实例开启多线程进行复制

mysql> show variables like 'slave_parallel%'; # 默认是datebase,每个线程只能处理一个数据库msyql> stop slave;mysql> set global slave_parallel_type='logical_clock'; #配置成基于逻辑时钟的方式mysql> set global slave_parallel_workers=4; #线程数依据服务的配置和实际情况进行配置mysql> start salve;

15:读写分离+负载均衡中间件 

MaxScale 和mycat ,请自行了解

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。