mysql主从同步(含案例)

1、什么是mysql主从同步
实现数据自动同步的服务结构,结构中分为2种角色,
主服务器:接收客户端访问的数据库服务器
从服务器:自动从主库服务器同步数据到本机的数据库服务器

2、mysql主从同步工作原理
IO线程:从库读取主库的binlog日志里的sql,并复制到本机的中继日志
sql线程:执行本机的中继日志里的sql语句,重现master的数据操作
从库相关文件:/var/lib/mysql/master.info
主机名-relay-bin.编号
主机吗-relay-bin.index
relay-log.info

mysql主从同步结构模式

一主一从
配置主服务器192.168.4.51
1、启用binlog日志文件
[mysqld]
server_id=51
log-bin=master51
2、用户授权
grant replication slave on . to repluser@“192.168.4.52” identified by “密码”;
3、查看binlog日志信息

配置从服务器192.168.4.52
1、指定server_id
[mysqld]
server_id=52
2、指定主服务器信息
change master to
master_host=“192.168.4.51”,
master_user=“repluser”,
master_password=“123qqq…A”,
master_log_file=“master51.000001”,
master_log_pos=442;
3、启动slave进程
start slave;
4、查看进程信息
show slave status;

验证配置:
1、在主服务器添加访问数据的连接用户
create database db7;
grant all on db7.* to webuser@"%" identified by “123qqq…A”;
2、在客户端连接主服务器,对数据进行操作
show grants;
use db7;
create table t1(id int);
insert into t1 values(10101);
3、在从服务器本机查看是否和主服务器的数据一致
select * from db7.t1;

一主多从
给当前的主服务器51再配置一台从服务器53
1、在服务器53上运行mysql服务且管理员具有本机登陆管理权限
2、在没有配置为从服务器之前,要有主服务器上数据
192.168.4.51:
mysqldump -uroot -p123456 db7 > /root/db7.sql
scp db7.sql root@192.168.4.53:/root
192.168.4.53:
create database db7;
use db7
source db7.sql
3、设置主机53的server_id
[mysqld]
server_id=53
4、指定主服务器信息
show master status; //查看文件名及偏移量
change master to master_host=“192.168.4.51”,master_user=“repluser”,master_password=“123456”,master_log_file=“master51.000002”,master_log_pos=2035;
5、启动slave进程
start slave;
6、查看进程信息repluser
show slave status;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
7、客户端测试

主-从-从
给当前的从服务器52,配置1台从服务器192.168.4.54
1、配置52
(1)启用binlog日志
[mysqld]
log-bin=master52
log_slave_updates
(2)用户授权
grant replication slave on . to slave identified by “123456”;
(3)查看binlog日志信息
2、配置54
(1)指定server_id
[mysqld]
server_id=54
(2)指定主服务器信息
change master to master_host=“192.168.4.52”,master_user=“repluser”,master_password=“123456”,master_log_file=“master52.000001”,master_log_pos=438;
(3)启动slave进程
start slave;
(4)查看进程信息
主-主

主从同步常用配置参数(/etc/my.cnf)

应用在主服务器的配置选项
binlog_do_db=数据库名 //只允许同步的库
binlog_ignore_db=数据库名 //不允许同步的库
应用在从服务器上的配置选项
log_slave_updates //记录从库更新,允许链式复制
relay_log=日志名 //更改中继日志文件名
replication_do_db=数据库名 //仅同步的库
replication_ignore_db=数据库名 //只不同步的库

mysql主从同步复制模式

异步复制:主库执行完一次事务后,立即将结果返回给客户端,并不关心从库是否已经接收并处理
全同步复制:当主库执行完一次事务,且所有从库都执行了该事务后才返回给客户端
半同步复制:介于异步复制和全同步复制之间,主库在执行完一次事务后,等待至少一个从库接收到并写到relay log中才返回给客户端

案例:启用数据库服务器52的半同步复制模式
1、查看是否允许动态加载模块
show variables like “have_dynamic_loading”
2、加载模块
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’; //主服务器模块
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’; //从服务器模块
3、查看加载信息
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE ‘%semi%’;
4、启用模块
SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
5、查看启用信息
show variables like “rpl_semi_sync_%_enabled”;
6、修改配置文件使其配置永久生效
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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值