MySQL主从复制原理及配置

目录

一、MySQL主从复制原理

1、什么是主从复制

2、主从复制原理

二、主从复制配置

1、主服务器数据库配置

 (1)设置server-id值并开启binlog参数,启用二进制日志功能后,重启数据库。

 (2)建立同步账号,在主服务器数据库上创建一个用于复制的用户,并授予复制权限。

 (3)锁表设置只读,为后面备份准备,注意生产环境要提前申请停机时间

 (4)查看主服务器数据库状态,获取二进制日志的位置和文件名

 (5)备份主数据库数据

 (6)解锁表

 (7)将主服务器数据库备份数据上传到从服务器数据库

2、从服务器数据库配置

 (1)设置server-id值并关闭binlog参数,启用从服务器功能后,重启数据库。

 (2)还原从主库备份数据,检查还原

 (3)设定从主库同步,即设置从服务器要复制的主服务器信息

 (4)启动从库同步开关即从服务器的复制进程,检查状态

一、MySQL主从复制原理

1、什么是主从复制

MySQL主从复制是一种数据复制技术,用于将一个MySQL数据库主节点的数据复制到其他MySQL数据库节点(一个或多个),以实现数据的备份、负载均衡和高可用性。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

2、主从复制原理

(1)主服务器器(master)将数据更改记录到二进制日志(Binary Log)中,包括插入、更新和删除操作;

(2)从服务器(slave)会在一定时间间隔内对master二进制日志进行探测其是否发生更改,如果发生则开始一个I/OThread请求master二进制事件

(3)主服务器为每个I/O线程启动一个dump线程,用于向其发送二进制日志,并保存至从服务器本地的中(Relay Log)中,从服务器将启动SQL线程从中继日志中读取二进制日志,并将其应用到自己的数据库中,实现数据的复制,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

二、主从复制配置

1、主服务器数据库配置

(1)设置server-id值并开启binlog参数,启用二进制日志功能后,重启数据库。

[root@localhost ~]# vim /etc/my.cnf

log_bin=mysql-bin
server_id=11

[root@localhost ~]# systemctl restart mysqld

(2)建立同步账号,在主服务器数据库上创建一个用于复制的用户,并授予复制权限。

mysql> grant replication slave on *.* to 'rep'@'192.168.2.%' identified by '123456';

mysql> show grants for 'rep'@'192.168.2.%';

mysql> flush privileges;

MySQL主从复制原理及配置_第1张图片

 (3)锁表设置只读,为后面备份准备,注意生产环境要提前申请停机时间

mysql> flush tables with read lock;

mysql> show variables like '%timeout%';

MySQL主从复制原理及配置_第2张图片

 (4)查看主服务器数据库状态,获取二进制日志的位置和文件名

mysql> show master status;

MySQL主从复制原理及配置_第3张图片

 (5)备份主数据库数据

[root@localhost ~]# mysqldump -uroot -p123456 -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

 (6)解锁表

mysql> unlock tables;

(7)将主服务器数据库备份数据上传到从服务器数据库

自己在/server/backup/目录中查看备份文件(mysql_bak.2023-07-23.sql.gz)

MySQL主从复制原理及配置_第4张图片

2、从服务器数据库配置

 (1)设置server-id值并关闭binlog参数,启用从服务器功能后,重启数据库。

[root@localhost ~]# vim /etc/my.cnf
server_id=12

[root@localhost ~]# systemctl restart mysqld

(2)还原从主库备份数据,检查还原

[root@localhost ~]# cd /server/backup/
[root@localhost backup]# gzip -d mysql_bak.2023-07-23.sql.gz 
[root@localhost backup]# mysql -uroot -p123456 < mysql_bak.2023-07-23.sql

MySQL主从复制原理及配置_第5张图片

 (3)设定从主库同步,即设置从服务器要复制的主服务器信息

mysql> change master to
    -> MASTER_HOST='192.168.2.130',
    -> MASTER_PORT=3306,
    -> MASTER_USER='rep',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=742;

MySQL主从复制原理及配置_第6张图片

(4)启动从库同步开关即从服务器的复制进程,检查状态

mysql> start slave;

mysql> show slave status \G

MySQL主从复制原理及配置_第7张图片

你可能感兴趣的:(mysql,数据库)