当前位置:   article > 正文

mysql----高并发、高可用_ubuntu 高并发 mysql

ubuntu 高并发 mysql

mysql主从复制

通常,一个应用程序连接一个数据库,但是当读写并发量高的时候,单个mysql服务器的压力就会很大,还可能出现单点故障。

为了提高mysql服务的高并发、高可用性,可以采用主从复制架构,实现读写分离。
在这里插入图片描述
原理:

  1. 当master主节点进行写入操作时(insert/delete/update),写入数据库的同时,还会将操作记入binlog;
  2. master主机有多少个slave从节点,就会创建多少个binlog的dump线程,当dump线程监听到binlog发生改变,就会通知对应的从节点,并将binlog内容发送给从节点;
  3. slave从节点的I/O线程接收到binlog内容,会存储到本地的relay-log(中继日志);
  4. 从节点的SQL线程就会读取本地的中继日志,按照对应的操作写入本地的数据库。

实现mysql主从复制

主节点:192.168.0.113
OS: ubuntu1804
MySQL: 5.7.41

从节点:192.168.0.108
OS:CentOS8
MySQL: 5.7.38
查看版本:mysqld --version
任选一个作为主节点,这里选择Ubuntu。

  1. 连接主节点,授权可以复制到从节点。
mysql -u lauf -p 

# 用户存在的情况下,可以不用创建用户;
mysql>create user  tom@"%" identified by 'tom123';
# 授权复制到从节点
mysql>grant replication slave on *.* to 'tom'@'slave1_ip' identified by 'tom123';
mysql>flush privileges;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 配置主节点,开启bin日志。
# 切换目录
cd /etc/mysql/mysql.conf.d 

sudo vim mysqld.cnf

# 服务器唯一编号
server-id=1
# 开启binlog
log_bin=/var/log/mysql/mysql-bin.log
# binlog要同步的数据库,注释则默认同步所有的数据库
binlog_do_db=app1
binlog_do_db=app2  # 不能写在同一行
#binlog_ignore_db=db1
#binlog_ignore_db=db2
# 删除过期日志
expire_logs_days=10
# 日志的最大内存
max_binlog_size=100M
# 主节点可读可写
read-only=0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

配置完成,重启mysql

问题:修改msyql的用户、用户组后无法启动,权限问题,只需创建/var/run/mysqld目录,并分配给当前用户即可。(主机重启问题重现)
在这里插入图片描述

  1. 查看主节点的状态
# 连接 mysql
mysql>show master status
  • 1
  • 2

在这里插入图片描述

  1. 配置从节点
    简单增加一个server-id=唯一值
# centos 配置mysql
cd /etc/
sudo vim my.cnf

# 增加一个server-id=2
# 重启mysql
sudo service mysqld restart
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 设置从节点的主节点
# 设置 mysql主节点,端口无引号
mysql>change master to master_host='192.168.0.113',master_port=3306,master_user='tom',master_password='tom123',master_log_file='mysql-bin.000002',master_log_pos=154;

# 启动从节点
mysql>start slave;    # stop slave
mysql>show slave status\G;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
从节点的IO线程、SQL线程必须是运行状态。

问题: 如下可能为主节点未配置远程连接或者没有授权复制。
在这里插入图片描述

  1. 测试,在主节点创建一个数据库,查看从节点。
    一定要在创建完成主从后,再在主节点创建数据库、表、插入数据。
# 主节点创建数据库,并查看从节点(有库则成功)
mysql>create database test_replica default charset utf8;

mysql>use test_replica;

# 创建表,并查看从节点
mysql>create table stu(id int primary key auto_increment, name varchar(30), age int)engine=innodb;

# 插入数据,并查看从节点
mysql>insert into stu values(1, 'jack', 23);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

只有主节点有写入操作(语句)时,即binlog发生改变,dump线程才通知从节点,并将binlog推送给从节点,从节点再同步数据。
 

问题点

  1. mysql版本必须一致,避免版本问题
  2. 主从同步数据延时问题

远程连接

  1. 连接主节点
# 可以连接
mysql -u tom -p -h 192.168.0.113
  • 1
  • 2
  1. 远程连接centos的mysql 从节点
    授权用户任意节点登录即可。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/404614
推荐阅读
相关标签
  

闽ICP备14008679号