MySQL主从复制

介绍:

MySQL主从复制是指将一个MySQL数据库实例(主库)的数据通过二进制日志传输到另一个MySQL实例(从库)的过程,并且从库的数据会与主库保持同步。主从复制可以用于数据备份、读写分离以及分布式数据库等场景。

优点:

1.主数据库数据丢失,可以使用从数据库,降低数据丢失风险;

2.主节点出现故障,切换到从节点,确保服务不会中断;

3.如果并发量特别大,可以使用读写分离降低数据库压力,主数据库写数据,从数据库读数据;

原理:

1、Master开启binlog功能,然后更新事件(update、insert、delete)会按照顺序写入bin-log中。当Slave连接到Master的后,Master机器会为Slave开启binlog dump线程,该线程会去读取bin-log日志;

2、Slave连接到Master后,Slave库有一个I/O线程 通过请求binlog dump 线程读取bin-log日志,然后写入从库的relay log日志中;

3、Slave还有一个 SQL线程,实时监控 relay-log日志内容是否有更新,解析文件中的SQL语句,在Slave数据库中去执行。

配置:

前置操作:

准备主从数据库

配置主数据库

1.修改配置文件

#1.打开配置文件
[root@ztl etc]# vim /etc/my.cnf
#2.在[mysqld]后面添加配置
log-bin=master-log
server-id=1

 

2.登录主数据库给从数据库授权

MySQL5版本授权:

grant replication slave on *.* to root@'192.168.220.130' identified by '123456';
#授权用户root 密码123456 允许192.168.220.130从服务器连接
#刷新授权
mysql> flush privileges;

MySQL8版本授权

#操作mysql表
mysql> use mysql;
#创建用户用于从数据库连接使用,root用户名 允许192.168.220.130从服务器连接
mysql> CREATE USER 'root'@'192.168.220.130' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.220.130';
#刷新授权
mysql> flush privileges;

 

3.重启数据库

[root@ztl etc]# systemctl restart mysqld

4.查看主数据库的bin-log的文件名以及position

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-log.000002 |      157 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+

注意,在配置完从服务器之前不要对主服务器数据修改

配置从数据库

1.修改配置文件

[root@ztl ~]# vim /etc/my.cnf
#在[mysql]下添加
log-bin=mysql-bin
server-id=2

 

2.重启MySQL服务

[root@ztl ~]# systemctl restart mysqld

 

3. 登录从服务器的mysql,连接主mysql

mysql> change master to master_host='192.168.220.128',master_user='root',master_password='123456',
master_log_file='master-log.000002',master_log_pos=157;

 

4.开启从数据库sql线程

mysql> start slave;

 

5.查看从数据库的状态

mysql> show slave status\G;

MySQL主从复制_第1张图片

测试:

在主服务器创建数据库、添加表,从服务器也会实时更新 

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