环境搭建---mysql半同步

安装前准备

# yum -y install epel-realease
# vim /etc/selinux/config
SELINUX=disabled
# systemctl stop firewalld
# systemctl disable firewalld

安装mysql

一、更新YUM源

# rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

二、安装

# yum -y install mysql-community-server

三、启动MySQL、设置开机启动

# systemctl  start  mysqld
# systemctl  enable  mysqld

四、登录mysql重置密码

查看初始密码

# cat /var/log/mysqld.log | grep password(若没有输出则没有密码)

登录mysql

# mysql  -uroot  -p

修改、设置密码

mysql > alter user root@’localhoost’ identified by “password”;

配置主从同步

一、确保已有数据相同

从库上必须和主库已有数据相同
master服务器,备份所有库
slave服务器,清空同名库(如果有的话),离线导入由master提供的备份

二、配置主服务器

1、启用binlog日志
# vim /etc/my.cnf
[mysqld]
log_bin=master51
server_id=51   #mysql主从里,id必须唯一,范围:1~255
binlog_format="mixed"

重启刷新文件配置

# systemctl restart mysqld

查看主库master状态,查看当前使用的binlog日志文件

mysql> show master status\G;
2、授权用户
mysql >grant replication slave on *.* to  user@'%' identified by 'abcd123';
3、查看当前正使用的日志

mysql > show master status;

三、配置从服务器

1、设置server_id
# vim /etc/my.cnf
server_id=52     #从库id,要唯一

重启刷新文件配置

# systemctl restart mysqld
2、指定主库信息
mysql> change master to
-> master_host='192.168.*.*',        //主库ip地址
-> master_user='user',             //主库授权用户名
-> master_password='hmabp123',       //授权用户名密码
-> master_log_file='master51.000001',   //日志文件
-> master_log_pos=441;    //偏移量

启动slave(io,sql线程)


mysql> start slave;
mysql> show slave status\G;

注:重新搭建主从同步,首先保证数据一致

错误汇总:

错误现象1:无法更新某张表,数据有丢失或重复。此时查看主从同一张表,行数对比不一样,此时需要手动重新导入单张表。
在这里插入图片描述

错误现象2:主键重复。查看主从两台的主键是否一样,从库主键是否有重复,若有重复直接删除重复主键;若没有,此时不要reset master,重新change从库的pos。
在这里插入图片描述

错误现象3:
跳过一个事务报错
在这里插入图片描述
(1)停止slave进程

mysql> STOP SLAVE;

(2)设置事务号,事务号从Retrieved_Gtid_Set获取
在session里设置gtid_next,即跳过这个GTID

mysql> SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4'

(3)设置空事物

mysql> BEGIN; COMMIT;

(4)恢复事物号

mysql> SET SESSION GTID_NEXT = AUTOMATIC;

(5)启动slave进程

mysql> START SLAVE;

若报以下错误,需执行(4)恢复事务号

mysql> stop slave;
ERROR 1837 (HY000): When @@SESSION.GTID_NEXT is set to a GTID, you must explicitly set it to a different value after a COMMIT or ROLLBACK. Please check GTID_NEXT variable manual page for detailed explanation. Current @@SESSION.GTID_NEXT is 'a2e7f9c4-e96c-11ea-99ad-52540085b698:1057'.

半同步复制

查看数据库服务是否允许动态加载模块:

> show variables like 'have_dynamic_loading';

查看是否已安装了模块:

> select plugin_name,plugin_status from information_schema.plugins where plugin_name like '%semi%';
1.在主库上安装模块
> install plugin rpl_semi_sync_master soname 'semisync_master.so';
在从库上安装模块:
> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
2.必须同时两端激活

在运行时,在 master上执行

> SET GLOBAL rpl_semi_sync_master_enabled=1; 
> SET GLOBAL rpl_semi_sync_master_timeout=3000; 

在 slave上执行

> SET GLOBAL rpl_semi_sync_slave_enabled=1;
> STOP SLAVE IO_THREAD;START SLAVE IO_THREAD;

看配置 :

> SHOW VARIABLES LIKE 'rpl_semi_symc% ';

看状态:

> SHOW STATUS LIKE 'rpl_semi_symc% ';

永久启用半同步复制:/etc/my.cnf
主库的配置:

[mysqld]  
rpl_semi_sync_master_enabled=1  
rpl_semi_sync_master_timeout=1000     #1秒

从库的配置:

[mysqld]  
rpl_semi_sync_slave_enabled=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值