MySql主从复制 实现原理及配置

一、mysql主从复制是什么

即 :将一个mysql数据库服务器(主服务器Master) 自动复制 到一个或多个 mysql数据库服务器(从服务器Slave);

二、主从复制实现原理

1、主服务器的mysql操作,记录到一个操作日志 Binarylog。
2、从服务器,通过IO线程 读取主服务器mysql 操作日志 Binary-log,并生成中继日志Relay-log,然后通过Relay-log 自动生成对应数据库操作。
3、一主多从,第二个从数据库slave2,读取第一个从数据库slave1到Binarylog,重复第二条;
MySql主从复制 实现原理及配置_第1张图片

三、主从复制的好处

1、数据实时备份,避免服务器出问题造成数据丢失;
2、实现读写分离,分配负载提高性能;
3、主服务器宕机,可切换到从服务器,避免项目出问题;

四、实现,以下配置要求MySql 5.7.6 以上版本

1、准备两个数据库,且必须保证都能连接成功;

  1. master 数据库
  2. slave 数据库

2、编辑 master数据库的配置文件 my.cnf

vi /etc/my.cnf

添加以下内容

[mysqld] # 在这底下添加
#日志文件格式,有三种,自行百度区别,这里我设置为ROW
binlog_format =ROW  
#设置mysql服务器id为1【默认0是 拒绝其他服务器访问日志文件】
server_id     =1
#使用GTID实现复制
gtid_mode       =ON
#强制执行GTID一致性
enforce-gtid-consistency=true 

保存后,重启mysql服务 systemctl restart mysqld

3、编辑slave数据库的配置文件 my.cnf

#日志文件格式,有三种,自行百度区别,这里我设置为ROW
binlog_format =ROW  
#设置从服务器id为2【默认0是 拒绝其他服务器访问日志文件】
server_id     =2
#使用GTID实现复制
gtid_mode       =ON
#强制执行GTID一致性
enforce-gtid-consistency=true 

保存后重启服务systemctl restart mysqld

4、在主库中创建从库用户并赋予权限
进入主服务器 mysql命令窗口

#创建从库数据库帐号
mysql> CREATE USER 'slave(用户名自定义)’@'%' IDENTIFIED BY '123456(密码);
#赋予从库帐号权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave(上面定义的用户名)‘@'%';

5、主从库关联配置
1、进入 主库mysql窗口
2、执行 show master status;

MySql主从复制 实现原理及配置_第2张图片3、记住 File 和 Position 的值

4、进入从库mysql窗口
5、执行

change master to master_host='主数据库名(或ip)’, master_user='slave', master_password='123456(主数据库密码), master_port=3306, master_log_file='binlog.000003(对应上面File的值)’, master_log_pos=344297(对应上面Position的值), master_connect_retry=30,GET_MASTER_PUBLIC_KEY=1;

MySql主从复制 实现原理及配置_第3张图片
6、从库mysql窗口-开启从库线程 start slave;
7、查看启动状态 show slave status;

在这里插入图片描述
以下两个字段 展示为 Yes 即配置成功;

8、自己在主库新建数据库,刷新从库看是否同步;

你可能感兴趣的:(mysql,mysql,主从复制)