ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql主从同步安装部署

2021-07-02 13:30:31  阅读:208  来源: 互联网

标签:同步 slave systemctl master mysql mysqld 主从 GTID


安装前准备

# 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’.

标签:同步,slave,systemctl,master,mysql,mysqld,主从,GTID
来源: https://blog.csdn.net/weixin_43694134/article/details/118412083

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有