MySQL主从复制的工作原理详解(mysql的主从原理)
## MySQL主从复制的工作原理详解
MySQL主从复制是数据库管理员常用的一种复制方式,它可以使用在实时系统中提升可用性和负载。主从复制也经常用于改善备份和复原模式,使用该复制模式能够减少单点失败带来的影响,把部分数据在多台设备上保存可以实现容错和冗余的功能。MySQL的主从复制把这两个数据库服务器之间建立一种环境,使得一个服务器(主服务器)作为同步的源,另一个服务器(从服务器)作为终端。
在MySQL的”主从复制”机制中,主从服务器之间主要有二个组件:
– 主服务器:定期发送是” binlog”文件给复制服务器,binlog文件保存了主服务器所执行的更改操作(`insert`,`update` , `delete`),主服务器是复制传输中的数据源。
– 从服务器:拉取主服务器的binlog文件,将其一条条的内容执行,实现从主服务器复制出的一模一样的副本。
配置MySQL主从复制,主要需要在主服务器以及从服务器上进行一些参数设置:
1. 设置` server_id`:master和slave都要设置一个唯一的`server_id`,这是配置MySQL主从复制时必须进行的,`master`主服务器`server_id`可以随便设置,`slave`从服务器一定要和`master`服务器不同。
“`mysql
— master server
#新建变量server_id
SET GLOBAL server_id = 1;
— slave server
#新建变量server_id
SET GLOBAL server_id = 2;
2. 设置`log_bin`和`binlog_format` `log_bin`用于指定主服务器的binlog日志的路径,`binlog_format`用于指定binlog的记录操作条件,常用的有` row`和`statement`模式,`row`模式记录每一条SQL语句,`statement`模式记录执行的SQL结果。
```mysql-- master server
#新建变量log_bin SET GLOBAL log_bin = '/usr/local/mysql/binlog/master.log'
-- 新建变量binlog_format
SET GLOBAL binlog_format = 'row'
-- slave server#新建变量log_bin
SET GLOBAL log_bin = '/usr/local/mysql/binlog/slave.log'
-- 新建变量binlog_format SET GLOBAL binlog_format = ‘statement’
3. 在从服务器上执行复制语句:
在`slave`从服务器上通过 `change master to` 语句来告诉`slave`服务器从`master`服务器上拉取 binlog 文件。
“`mysql
#修改复制参数
CHANGE MASTER TO MASTER_HOST=’Master_Hostname’,MASTER_USER=’replication_user’,MASTER_PASSWORD=’replication_password’,MASTER_LOG_FILE=’master.log’,MASTER_LOG_POS=master_log_position;
#开启复制
start slave;
以上就是MySQL主从复制的工作原理,通过配置MySQL主从复制,可以实现增加系统可用性、负载、备份和复原等功能,大大提高了系统的可靠性和可用性,也为系统中数据安全提供保障。