MySQL高可用-主从同步(实现读写分离)

MySQL高可用-主从同步(实现读写分离)

一、简介

数据库架构可以分为三大类:主从架构、集群架构和分布式架构。
在主从架构类别中,又可以分 7 小类,分别是

  1. 传统主从复制,有时候也称为异步复制。
  2. 基于 GTID 的主从复制,从 MySQL 5.6 版本后,推荐使用这种方式的复制。
  3. 主主复制
  4. 级连复制
  5. 多源复制
  6. 延迟复制,备份中会用到,尤其是当数据量特别大的情况。
  7. 半同步复制,对数据一致性要求比较高的业务场景,可以考虑用。

在集群架构类别中,又可以分为 6 小类,分别是:

  1. MySQL Group Replication;
  2. Percona XtraDB Cluster;
  3. MySQL Galera Cluster;
  4. MySQL NDB Cluster,有时候也称为 MySQL Cluster;
  5. MySQL + 共享存储方案;
  6. MySQL + DRBD 方案。

在分布式架构类别中,又可以分为 2 小类,分别是:

  1. 基于分布式事务的数据库,如 Google Cloud Spanner 和 TiDB。
  2. 基于分布式存储的数据库,如极数云舟的 ArkDB、Aurora、PolarDB
    在这里插入图片描述
    主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建
    在这里插入图片描述

二、开始搭建主从同步(本实验基于RedhatLinux环境下)

一、主服务器(master)配置

1.追加信息到/etc/my.cnf

[root@master ~]# vim /etc/my.cnf.d
log-bin=mysql-bin
server-id=1

2.重启mysql服务

[root@master ~]# systemctl restart mysqld

3.进入mysql创建用户并给予相应权限

[root@master ~]# mysql -uroot -p

mysql> create user 'rep1'@'%' identified by 'Test@1234';
Query OK, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to 'rep1'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

4.查询mysql主服务器信息

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      156 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

二、从服务器配置

1.进入配置文件修改配置

[root@slave ~]# vim /etc/my.cnf.d/mysql-server.cnf
log-bin=mysql-bin
server-id=2

2.重启mysql服务

[root@slave ~]# systemctl restart mysqld

3.进入mysql创建与主服务器相同的用户,并给予权限

[root@slave ~]# mysql -uroot -p

mysql> create user 'rep1'@'%' identified by 'Test@1234';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to 'rep1'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

4.配置主服务器的信息,master_log_pos为上面查询到的主服务器的position,master_log_file为上方查到的日志名(以防主从不同步)

mysql> change master to master_host='192.168.108.142',
master_port=3306,
master_user='rep1',
master_password='Test@1234',
master_log_pos=156,
master_log_file='mysql-bin.000004';

5.在从服务器上启动同步

mysql> start slave;

6.查看从服务器状态

mysql> show slave status\G;

在这里插入图片描述

都为yes,且没有错误 ,表示主从配置成功。

7.在从服务器上找到通用日志

mysql> show variables like '%general%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | ON                       |
| general_log_file | /var/lib/mysql/slave.log |
+------------------+--------------------------+
2 rows in set (0.00 sec)

如果通用日志没有打开,使用以下命令打开

mysql> set @@global.general_Log=on;
Query OK, 0 rows affected (0.01 sec)

8.跟踪日志

[root@slave mysql]# tail -f /var/lib/mysql/slave.log

在这里插入图片描述

9.在主服务器上创建数据库

mysql> create database masterdbtest;
Query OK, 1 row affected (0.01 sec)

#在跟踪的日志中会出现:

2021-08-12T16:07:09.866623Z 12 Query create database masterdbtest

10.在从服务器数据库中查询数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| masterdbtest       |


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值