mysql5.7一主多从配置

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

这里使用一台服务器进行了多实例的安装【此方式只用于学习和测试,生产环境请使用多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.sock
default-character-set =  utf8


[mysqld]

port      = 3308
socket    = /www/server/mysqldata/替换的端口号/mysql.sock
datadir   = /www/server/mysqldata/替换的端口号
log-error = /www/server/mysqldata/替换的端口号/error.log
pid-file  = /www/server/mysqldata/替换的端口号/mysql.pid

character-set-server  = utf8
lower_case_table_names = 1
autocommit = 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.user\G;
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 = 3307
log-bin   = mysql-bin
binlog_format = MIXED

4.在3308.cnf中添加

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

5.在3309.cnf中添加

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

6.在3310.cnf中添加

server-id = 3310
log-bin   = mysql-bin
binlog_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 ,请自行了解

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值