Mysql主从复制,读写分离

本文介绍了MySQL的主从复制配置步骤,包括在主库和从库上的设置,以及如何实现读写分离。通过配置主从同步,确保数据一致性,同时利用ShardingSphere实现读写分离,提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当客户端操作主库时,主库会产生binlog日志文件
从库通过复制主库的binlog日志文件,然后解析成相应的 SQL 语句在从库执行,实现主从一致的效果。
在主库做的增删改都会影响到从库,实现主从同步。

PreCondition

有两台服务器,并且都装有mysql

配置主库Master

# /etc/my.cnf
[mysqld]
log-bin=mysql-bin		# 启用二进制日志
server-id=1000			# 唯一ID

重启mysql服务

# replication slave 允许用户使用复制从站从主机读取二进制日志事件
# *.* 表示所有数据库中的所有表
# 在mysql数据库中的user表中 新增了一个用户xiaoming,IP任意 密码是 root
# 对用户 xiaoming 进行授权 
grant replication slave on *.* to 'xiaoming'@'%' identified by 'root';

# 查看 master 的状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      446 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

配置从库Slave

# /etc/my.cnf
[mysqld]
server-id=1001		# 唯一ID

重启mysql服务

change master to master_host='主库服务器IP地址',master_user='xiaoming',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=446;

start slave;

# 查看从库状态
show slave status \G

# 看到这些信息基本就说明成功了
       Slave_IO_State: Waiting for master to send event
          Master_Host: 10.34.110.47
          Master_User: xiaoming
          Master_Port: 3306
        Connect_Retry: 60
      Master_Log_File: mysql-bin.000001
  Read_Master_Log_Pos: 446
       Relay_Log_File: localhost-relay-bin.000002
        Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

读写分离

先搭建好两个mysql之间的主从复制关系。
如果主库中之前已经有数据库数据了,先将主库中的数据库转储为 SQL文件,然后在从库中建同名数据库,之后执行SQL文件。
这样,主从库的环境就一致了。

        <!-- 读写分离 -->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.1.1</version>
        </dependency>
spring:
  shardingsphere:
    datasource:
      names: db1,db2
      # 数据源 1
      db1:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/ruiji?useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password:
        type: com.alibaba.druid.pool.DruidDataSource
      # 数据源 2
      db2:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.44.128:3306/ruiji?useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: xxxxxxxx
        type: com.alibaba.druid.pool.DruidDataSource
    masterslave:
      load-balance-algorithm-type: round_robin  # 从库负载均衡策略
      master-data-source-name: db1    # 主库
      slave-data-source-names: db2    # 从库
      name: ruiji   # 不可为空,任意取即可
    props:
      sql:
        show: true # 终端 SQL日志

如何取消主从复制

对从库:

stop slave;
reset slave all;		# 清除 slave 信息
show slave status \G

对主库:

reset master;

如果想彻底清除主从的机制,可以将配置文件中主从相关的配置项删除,然后重启即可。
MySQL用户授权(GRANT)
Mysql取消主从复制

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值