主从复制

2024-07-21  本文已影响0人  寒冰助手

一、概念

主从复制,是指建立一个和主数据库完全一样的数据库环境(称为从数据库),并将主库的操作行为进行复制的过程:将主数据库的DDL和DML的操作日志同步到从数据库上,然后在从数据库上对这些日志进行重新执行,来保证从数据库和主数据库的数据的一致性。

二、作用

1.在复杂的业务操作中,经常会有操作导致锁行甚至锁表的情况。使用主从复制,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。
2.保证数据的热备份,主库宕机后能够及时替换主库,保障业务可用性。
3.业务量扩大,I/O访问频率增高,单机无法满足,主从复制可以做多库方案,降低磁盘I/O访问的频率,提高单机的I/O性能。

三、步骤

1.主库把数据变更作为事件日志记录在二进制日志表(binlog)里面
2.从库在一定时间内通过I/O线程监测主库binlog数据变更并执行请求
3.主库通过dump线程(主库为每一个从库单独创建)把binlog内容发送到从库的中继日志(relay log)中
4.从库开启sql线程,读取中继日志(relay log),并解析成sql语句执行,完成数据更新


image.png

四、实现

1.分别在两台服务器上配置主数据库(master)和从数据库(slave)( 除了不同步的数据库,其他数据库的数据要一致)
2.连接主从数据库

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='test-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
参数说明:
master_host: Master 的IP地址
master_user: 在 Master 中授权的用于数据同步的用户,就我们之前在主库容器里创建的哪个slave用户
master_password: 同步数据的用户的密码
master_port: Master 的数据库的端口号
master_log_file: 指定 Slave 从哪个日志文件开始复制数据
master_log_pos: 从哪个 Position 开始读
master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。

3.开启主从同步

mysql > start slave;start slave;

4.在 slave 的 MySQL 终端执行查看主从同步状态

mysql > start slave;show slave status;

5.主从同步延迟解决方案
-保证数据库处在最有状态下:优化系统配置(链接层或者存储引擎层):最大连接数、允许错误数、允许超时时间、pool_size、log_size,保证内存、CPU、存储空间的扩容(硬件部分)。
-业务量不多的情况下,不做读写分离。
-估算好服务器能够承载的流量上限。达到上限之后,就要采取缓存,限流,降级的方式。

上一篇 下一篇

猜你喜欢

热点阅读