5.mysql--主从同步安装部署

安装前准备

powershell 复制代码
# yum -y install epel-realease
# vim /etc/selinux/config
SELINUX=disabled
# systemctl stop firewalld
# systemctl disable firewalld

安装mysql

一、更新YUM源

powershell 复制代码
# rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

二、安装

powershell 复制代码
# yum -y install mysql-community-server

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

powershell 复制代码
# systemctl  start  mysqld
# systemctl  enable  mysqld

四、登录mysql重置密码

查看初始密码

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

登录mysql

powershell 复制代码
# mysql  -uroot  -p

修改、设置密码

sql 复制代码
mysql > alter user root@'localhoost' identified by "password";

配置主从同步

一、确保已有数据相同

从库上必须和主库已有数据相同

master服务器,备份所有库

slave服务器,清空同名库(如果有的话),离线导入由master提供的备份

二、配置主服务器

1、启用binlog日志

powershell 复制代码
# vim /etc/my.cnf
[mysqld]
log_bin=master51
server_id=51   #mysql主从里,id必须唯一,范围:1~255
binlog_format="mixed"

重启刷新文件配置

powershell 复制代码
# systemctl restart mysqld

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

sql 复制代码
mysql> show master status\G;

2、授权用户

sql 复制代码
mysql >grant replication slave on *.* to  user@'%' identified by 'hmabp123';

3、查看当前正使用的日志

sql 复制代码
mysql > show master status;

三、配置从服务器

1、设置server_id

powershell 复制代码
# vim /etc/my.cnf
server_id=52     #从库id,要唯一

重启刷新文件配置

powershell 复制代码
# systemctl restart mysqld

2、指定主库信息

sql 复制代码
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进程

sql 复制代码
mysql> STOP SLAVE;

(2)设置事务号,事务号从Retrieved_Gtid_Set获取

在session里设置gtid_next,即跳过这个GTID

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

(3)设置空事物

sql 复制代码
mysql> BEGIN; COMMIT;

(4)恢复事物号

sql 复制代码
mysql> SET SESSION GTID_NEXT = AUTOMATIC;

(5)启动slave进程

sql 复制代码
mysql> START SLAVE;

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

sql 复制代码
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'.

使用GTID跳过错误的方法:找到错误的GTID跳过(通过Exec_Master_Log_Pos去binlog里找GTID,或则通过上面监控表replication_applier_status_by_worker找到GTID,也可以通过Executed_Gtid_Set算出GTID),这里使用监控表来找到错误的GTID。找到GTID之后,跳过错误的步骤:

sql 复制代码
mysql> stop slave; #停止同步
Query OK, 0 rows affected (0.02 sec)
mysql> set @@session.gtid_next='9e2c7c0f-0908-11e7-8230-000c29ab7544:1';  #跳过错误的GTID
Query OK, 0 rows affected (0.00 sec)
mysql> begin; #提交一个空事务,因为设置gtid_next后,gtid的生命周期就开始了,必须通过显性的提交一个事务来结束,否则报错:ERROR 1790 (HY000): @@SESSION.GTID_NEXT cannot be changed by a client that owns a
Query OK, 0 rows affected (0.00 sec)                                   
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
mysql> set @@session.gtid_next=automatic; #设置回自动模式  
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

再次确认slave同步状况

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的mysqld可添加修改如下选项:

powershell 复制代码
# 不同步哪些数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
  
# 只同步哪些数据库,除此之外,其他不同步  
binlog-do-db = game  
相关推荐
Yan_chen6661 小时前
SQL-LABS_Less18-20实战攻略
数据库·sql·web安全·网络安全
oradh1 小时前
Oracle RAC OCR维护操作总结
数据库·oracle·ocr·rac ocr维护·ocr维护·vote disk
snow@li2 小时前
HikariCP:高性能数据库连接池全景深入梳理
java·数据库
一个天蝎座的程序猿3 小时前
传统数据库迁金仓KES,空值问题差点让财务报表翻车
数据库
wWYy.3 小时前
Mysql:索引下推
数据库·mysql
风123456789~4 小时前
【Oracle专栏】ORA-02069: global_names 参数
数据库·oracle
ningmengjing_5 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
隔窗听雨眠5 小时前
OceanBase旁路导入与自增主键冲突深度解析:原理、排查与解决方案
java·服务器·数据库
ZCBUS实时计算5 小时前
政务海量分库分表汇聚实战:基于 3 节点 ZCBUS 集群完成医保 10TB 数据实时整合
大数据·数据库·数据仓库·sql·dba·etl·政务