MySQL主从同步 、 主从同步模式

一、MySQL主从同步

1.1 MySQL主从同步概述

实现数据自动同步的服务结构
主服务器:接受客户端访问连接
从服务器:自动同步主服务器数据

1.2 主从同步原理

master
启用binlog日志

Slave
Slave_IO:复制master主机 binlog日志文件里的SQL命令到本机的relay-log文件里
Slave_SQL:执行本机relay-log文件里的SQL语句,实现与Master数据一致

1.3 构建主从同步

构建思路
配置主服务器
启用binlog日志、授权用户、查看binlog日志信息

配置从服务器
设置server_id
确保与主服务器数据一致
指定主库信息
启动slave程序
查看状态信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.启用binlog日志
2.授权用户
mysql> grant replication slave  on  *.*  to  repluser@"%" identified by "123qqq...A";
3.查看binlog日志信息
mysql> show master status;	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1  设置server_id 
2  确保与主服务器数据一致。 

3  
mysql> change master to  master_host="192.168.4.51" ,master_user="repluser",                                     ,     
       master_password="123qqq...A" , master_log_file="master51.000001" , master_log_pos=441;

mysql> start slave;
mysql> show slave status \G;
         Slave_IO_Running: Yes
         Slave_SQL_Running: Yes
 Last_IO_Error: Slave_IO_Running的报错信息
 Last_SQL_Error: Slave_SQL_Running的报错信息

 mysql> stop slave ;    #需要进行修改用户名及其相关密码时,先关掉服务
       change master to master_user="repluser" ;
 mysql> start slave;
 mysql> show slave status \G

把从服务器 恢复为独立的数据库服务器的方法

[root@host52 mysql]# rm -rf master.info 
[root@host52 mysql]# rm -rf relay-log.info 
[root@host52 mysql]# rm -rf host52-relay-bin.*
[root@host52 mysql]# systemctl  restart mysqld

主从从模式也是一样的配置
在这里插入图片描述
在这里插入图片描述

半同步复制

53设备 主服务器

mysql>install  plugin  rpl_semi_sync_master   SONAME   "semisync_master.so";  #安装并启动模块(主的模块)
mysql> select  PLUGIN_NAME , PLUGIN_STATUS from  information_schema.PLUGINS where PLUGIN_NAME like "%semi%";
mysql> set global rpl_semi_sync_master_enabled=1;  #运行模块
mysql> show  variables  like  "rpl_semi_sync_%_enabled";

52设备是53设备的从;是55设备分主

mysql> install  plugin  rpl_semi_sync_master   SONAME   "semisync_master.so"; #安装并启动模块(主的模块)
mysql> install  plugin  rpl_semi_sync_slave   SONAME   "semisync_slave.so";  #安装并启动模块(从的模块)
mysql> select  PLUGIN_NAME , PLUGIN_STATUS from  information_schema.PLUGINS where PLUGIN_NAME like "%semi%";
mysql> set global rpl_semi_sync_master_enabled=1;    #运行模块(主的模块)
mysql> set global rpl_semi_sync_slave_enabled=1;      #运行模块(从的模块)
mysql> show  variables  like  "rpl_semi_sync_%_enabled";

55设备从服务器

mysql> install  plugin  rpl_semi_sync_slave   SONAME   "semisync_slave.so";  #安装并启动模块(从的模块)
mysql> select  PLUGIN_NAME , PLUGIN_STATUS from  information_schema.PLUGINS where PLUGIN_NAME like "%semi%";
mysql> set global rpl_semi_sync_slave_enabled=1;    #运行模块(从的模块)
mysql> show  variables  like  "rpl_semi_sync_%_enabled";

以上都是临时配置,当服务重启后会失效;永久配置需要修改配置文件

举例:54设备永久配置(/etc/my.cnf)

安装模块  启用模块
 vim /etc/my.cnf			
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
:wq

] systemctl restart mysqld
mysql> show  variables  like  "rpl_semi_sync_%_enabled";

当只配置了主从时,默认是属于异步复制

发布了25 篇原创文章 · 获赞 2 · 访问量 580

猜你喜欢

转载自blog.csdn.net/f5500/article/details/104402994