Mysql-5主从同步

Mysql主从同步

原理图:在这里插入图片描述

  • 从属服务器自动同步主服务器数据
  • Master服务器启用binlog日志
  • Slave
    • Slave_IO:复制master主机binlog日志文件里的SQL命令到本机的relay-log文件里
    • Slave_SQL:执行本机relay-log文件里的SQl语句,实现master数据一致

过程

一,配置主服务器
启用binog日志,授权用户,查看binlog日志信息
二,配置从属服务器
—设置server_id
—确保与主服务器数据一致
—指定主服务器信息
—启动slave程序
—查看状态信息

一主多从

拓扑结构
在这里插入图片描述

模式一主多从,每个从服务器配置相同
配置主服务器
vim /etc/my.cnf
[mysqld]
log_bin=日志名   //启用binlog日志
server_id=50  //指定服务器ID号
...
systemctl restart mysqld
mysql>grant replication slave on *.* to repluser@'%' identified by "123qqq...A";
//replication slave 连接主库进行复制的权限
//replication client 不可用于建立复制,只是可以使用"show slave status","show master status"等命令
mysql>show master status\G;    //显示当前日志信息 \G纵向显示
配置从服务器
vim /etc/my.cnf
[mysqld]
server_id=60
systemctl restart mysqld
***注意事项
确保从服务器与主服务器数据一致
主库备份数据,--master-data 记录当前备份数据对应的日志信息
mysqldump -uroot -p密码 --master-data 数据库名 > /allbak.sql
scp /allbak.sql root@192.168.4.52:/root/  //拷贝给从服务器
从服务器恢复数据
mysql -uroot -p密码 数据库名 < /root/allbak.sql
cat /root/allbak.sql | grep -i master  //查看日志名及偏移量
*************************************************************
配置从服务器
指定从服务器信息
mysql> change master to
master_host='192.168.4.51', //指定主服务器地址
master_user="repluser", //授权用户
master_password="密码", //授权用户密码
master_log_file="主库日志名", 
master_log_pos=344; //日志偏移量
mysql>start slave; 启动slave进程
**注意事项
Master信息自动保存到/var/lib/mysql/master.info文件中
更改主库信息是,需先执行stop slave,修改后在执行start slave
*************
mysql> show slave status;  //查看slave状态
               Slave_IO_Running: Yes      //IO线程yes状态
            Slave_SQL_Running: Yes     //SQL线程yes状态
相关文件
ls /var/lib/mysql/
master.info //主库信息
relay-log.info  //中继日志信息
主机名-relay-bin.xxxxx  //中继日志
主机名-relay-bin.index // 索引文件

主从从

拓扑结构
在这里插入图片描述

主服务器配置同上
从服务器配置如下
vim /etc/my.cnf
[mysqld]
log-bin=master70  //从服务器开启bin-log日志
server_id=70
log_slave_updates  //允许级联复制
systemctl restart mysqld  //重启服务
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
//给用户授权,允许主从复制
mysql> change master to
master_host="192.168.4.50",
master_user="用户名",
master_password='密码',
master_log_file="binlog日志名",
master_log_pos=偏移量;
start slave;  //开启进程
show slave status\G; 检查状态
*************************************************************
配置从从服务器
vim /etc/my.cnf
[mysqld]
server_id=70
systemctl restart mysqld
mysql>change master to master_host="192.168.4.60",
master_user="repluser",
master_password="123qqq...A",
master_log_file="binlog日志名",
master_log_pos=偏移量;
start slave;
show slave status\G;
**************************************************
复制模式介绍
  • 异步复制
    主库执行一次事物后,立即将结果返回给客户端,并不关系从库是否已接收并处理
  • 全同步复制
    当主库执行完一次事物,且所有从库都执行了该事物后才将结果返回给客户端
  • 半同步复制
    主库执行完一次事物后,等待至少一个从库接收到并写到realy log中才将结果返回给客户端
    模式配置
默认复制模式为异步复制模式
mysql > show variables like "have_dynamic_loading"  //查看动态加载模块
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
mysql> install plugin rpl_semi_sync_master SONAME "semisync_master.so";
//主服务器上执行,安装master插件
mysql> install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
//从服务器上执行,安装slave插件
mysql> select plugin_name,plugin_status from 
information_schema.plugins where plugin_name like "%semi%";
//查看
+----------------------+---------------+
| plugin_name          | plugin_status |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+
启用半同步复制
mysql>set global rpl_semi_sync_master_enabled=1;  //启用主服务器半同步复制
mysql>set global rpl_semi_sync_slave_enabled=1; //启用slave半同步复制
mysql>show variables like "rpl_semi_sync_%_enabled"; //查看
永久启用半同步复制  --修改主配置文件/etc/my.cnf
在[mysqld]下方添加
//主服务器
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
//从服务器
plugin-load=rpl_sync_slave=semisync_salve.so
rpl_semi_sync_slave_enabled=1
服务器角色是master和slave两种角色需同时启用master和slave两个模块
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值