2020-10-20

it2023-03-21  80

MySQL主从复制和读写分离

MySQL主从复制的好处主从复制的概念与作用主从复制的原理主从复制与读写分离的关系主从复制的配置修改主(master)服务器主服务器给从服务器账号授权修改从(slave)服务器连接主服务器开始同步操作

MySQL主从复制的好处

数据备份 读写分离 数据库负载均衡 高可用

主从复制的概念与作用

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力

主从复制的原理

MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库(Master)复制到另一个MySQL数据库(Slave),在Master和Slave之间实现整个主从复制的过程是由三个线程参与完成的。其中两个线程(SQL线程和IO线程)在Slave端,另一个线程(I/O线程)在Master端。   要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现。binlog: binary log,是主库中保存所有更新事件日志的二进制文件。因为整个复制过程实际上就是Slave从Master端获取binlog日志,然后在Slave上以相同顺序执行获取的binlog日志中的记录的各种SQL操作。总而言之是通过二进制sql文件实现的主从复制也就是mysql-bin.00000x文件。

主从复制与读写分离的关系

Mysql的主从复制和mysql的读写分离两者有紧密的联系,首先要部署主从复制,只有主从复制完成了,才能再此基础上进行数据的读写分离。

主从复制的配置

准备两台177(master),178(slave)两台服务器

修改主(master)服务器

vi /etc/my.cnf 新增以下内容 ###服务器id server_id=177 ###开启日志文件 log-bin=mysql-bin 修改完毕重启MYSQL服务

主服务器给从服务器账号授权

mysql8.0以下: GRANT REPLICATION SLAVE ON . to ‘mysync’@’%’ identified by ‘q123456’; MySQL8.0以上: CREATE USER ‘mysync’@’%’ IDENTIFIED BY ‘q123456’; GRANT REPLICATION SLAVE ON . TO ‘mysync’ ;

登录主服务器的mysql,查询master的状态 show master status; 如果结果为null,则主服务器my.cf没有配置好.

修改从(slave)服务器

###服务器id server_id=178 ###开启日志文件 log-bin=mysql-bin ###需要复制的数据库 binlog_do_db=test

连接主服务器开始同步操作

– 先执行关闭同步 stop SLAVE CHANGE MASTER TO master_host = ‘192.168.198.177’, master_user = ‘mysync’, master_password = ‘q123456’, master_log_file = ‘mysql-bin.000001’, master_log_pos = 6998; – 开始同步 start SLAVE

– 查看服务器复制的状态,主从复制是否成功 SHOW SLAVE STATUS; Slave_IO_Running: Yes    //此状态必须YES Slave_SQL_Running: Yes     //此状态必须YES

最新回复(0)