mysql—-高并发、高可用
文章目录
mysql主从复制
通常,一个应用程序连接一个数据库,但是当读写并发量高的时候,单个mysql服务器的压力就会很大,还可能出现单点故障。
为了提高mysql服务的高并发、高可用性,可以采用主从复制架构,实现读写分离。
原理:
- 当master主节点进行写入操作时(insert/delete/update),写入数据库的同时,还会将操作记入binlog;
- master主机有多少个slave从节点,就会创建多少个binlog的dump线程,当dump线程监听到binlog发生改变,就会通知对应的从节点,并将binlog内容发送给从节点;
- slave从节点的I/O线程接收到binlog内容,会存储到本地的relay-log(中继日志);
- 从节点的SQL线程就会读取本地的中继日志,按照对应的操作写入本地的数据库。
实现mysql主从复制
主节点:192.168.0.105
OS: ubuntu1804
MySQL: 5.7.39
从节点:192.168.0.108
OS:CentOS7
MySQL: 5.7.39
- 连接主节点,授权可以复制到从节点
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;
- 配置主节点
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf
# 开启binlog
log_bin=/var/log/mysql/mysql-bin.log
# 服务器唯一编号
server-id=104
# 同步的数据库
binlog_do_db=xxx
binlog_ignore_db=xxx
# 删除过期日志
expire_logs_days=10
# 日志的最大内存
max_binlog_size=100M
# 主节点可读可写
read_only=0
- 查看主节点的状态
# 连接 mysql
mysql>show master status
- 配置从节点
简单增加一个server-id=唯一值
# centos 配置mysql
cd /etc/
sudo vim my.cnf
# 增加一个server-id=108
# 重启mysql
sudo service mysqld restart
# 连接mysql 增加一个用户
# 从节点不是必须要创建用户
mysql>create user lauf@'%' identified by 'lauf123';
密码太简单
# 这里以tom 为例
mysql>create user tom@"%" identified by 'Tom123qecba.'
- 设置从节点的主节点
# 连接mysql
mysql>change master to master_host='192.168.0.105',master_port=3306,master_user='tom',master_password='tom123',master_log_file='mysql-bin.000002',master_log_pos=154;
# 启动从节点
mysql>start slave;
mysql>show slave statusG;
- 测试,在主节点创建一个数据库,查看从节点。
# 主节点
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);
然后查询从节点中的stu表数据。
只有主节点有写入操作时,即binlog发生改变,dump线程才通知从节点,并将binlog推送给从节点,从节点再同步数据。
问题点
- mysql版本必须一致,避免版本问题
- 主从同步数据延时问题
远程连接
- 连接主节点
# 可以连接
mysql -u tom -p -h 192.168.0.105
- 远程连接centos的mysql 从节点
还未配置好!!!!