MySQL主从复制

主从服务器实验

首先准备三台MySQL数据库

首先对三台服务器进行初始化操作进行关闭防火墙

最好再操作一下时间同步

确保一下安装没安装ntodate

然后同步阿里云得时间

启动MySQL服务

修改配置文件

每一台得id号不能相同 

然后重新启动在进入数据库

查看master状态

mysql> show master status;
+-------------------+----------+--------------+-------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
+-------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)

 把mysql备份文件传到从库,进行数据恢复

#使用scp命令
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/

 停止从库的状态

mysql> stop slave;

然后到从库执行mysql命令,导入数据备份

mysql> source /tmp/mysql.bak.sql 

设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项

change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260; 

重新开启从同步

mysql> start slave; 

查看同步状态

mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 

MySQL主从复制的同步模式

三种同步模式
异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接收并处理。这样就会有一个问题,主如果宕掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

全同步复制(Fully synchronous replication)

指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

半同步复制(Semisynchronous replication)

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用

案例实施:搭建半同步模式

此实验基于以上主从复制实验结果为基础

centos7-2(192.168.9.210)与centos7-5(192.168.9.120)做从服务器;centos7-8(192.168.9.150)做主服务器

主服务器

添加半同步模式参数,并重启mysql服务;

vim /etc/my.cnf
###添加半同步模式的参数
plugin-load=rpl_semi_sync_master=semisync_master.so       #加载mysql半同步复制的插件
rpl_semi_sync_master_enabled=ON          #或者设置为"1",即开启半同步复制功能                
rpl-semi-sync-master-timeout=1000     #超时时间为1000ms,即1s
 
systemctl restart mysqld                    

从服务器centos7-2(192.168.9.210)与centos7-5(192.168.9.120)【两个服务器配置一致】

vim /etc/my.cnf	
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=ON
 
systemctl restart mysqld

主服务器查看

mysql  -u root -pabc123;
show status like '%Rpl_semi%';     #在主库查询半同步状态
 

 数说明

Rpl_semi_sync_master_clients                      #半同步复制客户端的个数
Rpl_semi_sync_master_net_avg_wait_time            #平均等待时间(默认毫秒)
Rpl_semi_sync_master_net_wait_time                #总共等待时间
Rpl_semi_sync_master_net_waits                    #等待次数
Rpl_semi_sync_master_no_times                     #关闭半同步复制的次数
Rpl_semi_sync_master_no_tx                        #表示没有成功接收slave提交的次数
Rpl_semi_sync_master_status                       #表示当前是异步模式还是半同步模式,on为半同步
Rpl_semi_sync_master_timefunc_failures            #调用时间函数失败的次数
Rpl_semi_sync_master_tx_avg_wait_time             #事物的平均传输时间
Rpl_semi_sync_master_tx_wait_time                 #事物的总共传输时间
Rpl_semi_sync_master_tx_waits                     #事物等待次数
Rpl_semi_sync_master_wait_pos_backtraverse        #可以理解为"后来的先到了,而先来的还没有到的次数"
Rpl_semi_sync_master_wait_sessions                #当前有多少个session因为slave的回复而造成等待
Rpl_semi_sync_master_yes_tx                       #成功接受到slave事物回复的次数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值