首页 > 数据库 >【实操记录】MySQL主从配置

【实操记录】MySQL主从配置

时间:2024-07-12 16:44:14浏览次数:10  
标签:binlog slave MySQL ignore master 实操 mysql MASTER 主从

本文使用MySQL原生支持的主从同步机制,详细记录了配置步骤及运维操作方法,可供大家直接参考、使用。
本文假设已经部署了两台主机的MySQL软件,且数据库服务正常,详细部署步骤可本站搜索:"mysql二进制安装包部署"

■■ 主从配置

■ master 授权同步账户

CREATE USER 'repl'@'10.19.238.241' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD by 'passwd';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'10.19.238.241';
FLUSH PRIVILEGES;

■ master 修改配置文件

vim /etc/my.cnf

# 配置server id,建议采用ip地址最后一段以便于区分
server_id = 240
log_bin = master-bin
binlog_format = ROW

# 作为从库时使用
relay_log = master-relay-bin

# 作为从库时,来自主库的更新操作是否写入日志,默认值为OFF,配置 on 时,其他节点以此节点做主库时才能进行同步
log_slave_updates = on

# 以下两个为可选选项,见字可知意
expire_logs_days = 7
max_binlog_size = 1G

# 设置系统库的日志不计入binlog
# 注:Binlog_Do_DB/Binlog_Ignore_DB 两个参数互斥,一般只选择其一设置,只能在启动命令行中或配置文件中设置
binlog_ignore_db = mysql
binlog_ignore_db = sys
binlog_ignore_db = information_schema
binlog_ignore_db = performance_schema

# 同步时忽略系统库,但 create user 时数据还是会同步的
replicate_ignore_db = mysql
replicate_ignore_db = sys
replicate_ignore_db = information_schema
replicate_ignore_db = performance_schema

# 同步时忽略系统库的表,这样在 create user 时也不会进行同步了
replicate_wild_ignore_table = mysql.%
replicate_wild_ignore_table = sys.%
replicate_wild_ignore_table = information_schema.%
replicate_wild_ignore_table = performance_schema.%

■ master 服务重启

参见前文:"mysql二进制安装包部署"

■ slave 修改配置文件

vim /etc/my.cnf
同 master,只修改如下3项:

server_id = 25
log_bin = slave-bin
relay_log = slave-relay-bin

■ slave 服务重启

参见前文:"mysql二进制安装包部署"

■ master 查看 binlog 信息

show master status;
执行之后,可获取目前主库 binlog 使用的 File 及 Position 点,类似如下:

+-------------------+----------+--------------+-------------------------------------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+-------------------+----------+--------------+-------------------------------------------------+-------------------+
| master-bin.000007 |      157 |              | mysql,sys,information_schema,performance_schema |                   |
+-------------------+----------+--------------+-------------------------------------------------+-------------------+

■ slave 设置复制信息

根据上一步获取到的信息(File 及 Position)配置从库的复制信息,在从库上执行如下命令

CHANGE MASTER TO MASTER_HOST='10.19.238.240',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='passwd',MASTER_LOG_FILE='master-bin.000006',MASTER_LOG_POS=1195;

■ slave 开启复制

start slave;

■■ 常用操作

■ 查看主从复制状态

show slave status \G
主要查看下面两个参数状态,只要都是yes,表示主从通信正常:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes

■ 启动/停止复制

start slave;
stop slave;

■ reset master;

在master上执行,作用:
删除binlog索引文件中列出的所有binlog文件
清空binlog索引文件
创建一个新的binlog文件
清空系统变量gtid_purged和gtid_executed
在MySQL 5.7.5 及后续版本中, RESET MASTER还会会清空 mysql.gtid_executed 数据表

■ reset slave;

在slave上执行,作用:
清除slave 复制时的master binlog的位置
清空master info, relay log info
删除所有的relay log文件,并创建一个新的relay log文件。
重置复制延迟(CHANGE MASTER TO 的 MASTER_DELAY参数指定的)为0

注:
RESET SLAVE 不会改变 gtid_executed or gtid_purged.
RESET SLAVE 不会改变复制连接使用的参数,例如 master host, master port, master user, or master password
如果要重置这些连接参数,需要使用命令:
RESET SLAVE ALL
重置操作之后,就需要使用 CHANGE MASTER TO 重新指定复制连接参数。

■ 注意事项

如果出现同步失败,可以根据提示处理错误,处理完成后,需要刷新同步配置:
先停止同步
stop slave sql_thread;
stop slave;
清理掉之前的配置,防止同步已经同步了的数据
reset slave all;
然后重新连接主库,进行同步。

■ 主从节点的重启步骤

停应用 ->停数据库(先备后主)-> 启数据库(先主后备)-> 启应用

1、关闭从库,在从库操作
a.先查看当前的主从同步状态 show slave status\G; 看是否双yes
b.执行stop slave
c.停止从库服务
d.查看是否还有mysql的进程ps -ef | grep mysql

2、关闭主库,在主库操作
a.停止主库服务
b.查看是否还有mysql的进程ps -ef | grep mysql

3、启动主库,在主库操作
a.启动主库服务
b.查看mysql的进程ps -ef | grep mysql

4、启动从库,在从库操作
a.启动从库服务
b.启动复制start slave;
c.检查同步状态 show slave status\G; 是否双yes
d.查看mysql的进程ps -ef | grep mysql

标签:binlog,slave,MySQL,ignore,master,实操,mysql,MASTER,主从
From: https://www.cnblogs.com/likingzi/p/18298804

相关文章

  • [Mysql]Buffer Pool
    MySQL的数据都是存在磁盘中的,那么我们要更新一条记录的时候,得先要从磁盘读取该记录,然后在内存中修改这条记录。那修改完这条记录是选择直接写回到磁盘,还是选择缓存起来呢?当然是缓存起来好,这样下次有查询语句命中了这条记录,直接读取缓存中的记录,就不需要从磁盘获取数据了。为此,I......
  • [Mysql]隔离级别
    隔离级别下面介绍四种因为事务的并发产生的问题:脏写假设银行账户中有100元,有事务A,BA事务把余额改为200,但还未提交这时,B事务把余额改为300,提交,如果A发生了回滚,那么账户余额回到100元,事务B无效。脏写就是已经提交的事务的写操作因为另一个还未提交的事务的回滚而失去效果,请......
  • MySQL5.7数据库优化模板
    8核16GMySQL数据库优化模板[client]#password=your_passwordport=3306socket=/tmp/mysql.sock[mysqld]port=3306socket=/tmp/mysql.sockdatadir=/usr/local/mysql/varskip-external-locking#MyISAMkey_buffer_size......
  • 常见的MySQL 索引面试题(超有用)
    在面试中,MySQL索引是一个常见的话题,因为它们对数据库的性能优化至关重要。以下是几个常见的MySQL索引相关的面试题及其解答:1.什么是MySQL索引?有哪些类型?解答:索引是一种用于提升数据库查询速度的数据结构。索引本质上是数据表中一列或多列的有序排列,可以加速数据的......
  • 【java计算机毕设】线上花店销售商城系统java MySQL ssm JSP maven项目代码源码+文档p
    目录1项目功能2项目介绍3项目地址 1项目功能【java计算机毕设】线上花店销售商城系统MySQLssmJSPmaven项目代码源码+文档PPT小组设计代码 2项目介绍系统功能:线上花卉小铺系统包括管理员、用户俩种角色。用户端:1.注册登录:游客填写基础信息,注册成为小铺用......
  • MySQL与Redis优化
    MySQL优化策略:查询优化:使用EXPLAIN分析查询语句,优化JOIN操作,减少子查询和复杂的WHERE条件。索引优化:合理创建索引以加快查询速度,同时避免过度索引导致写性能下降。数据类型优化:使用合适的数据类型,避免冗余和浪费,例如使用TIMESTAMP代替DATETIME。表结构优化:如垂直分割和水平......
  • mysql主从搭建
    主机配置说明:192.168.136.101mysql01centos7.92C4G192.168.136.102mysql02centos7.92C4G 1、源码包下载,下载带boost,不然这个boost有的搞,小白不建议尝试MySQL::DownloadMySQLCommunityServer(ArchivedVersions)2、安装需要的编译包yumi......
  • MySQL入门学习-深入索引.全值匹配
        在MySQL中,索引的全值匹配是指在查询中使用索引列的所有部分进行精确匹配。当查询条件中的列值与索引中的值完全匹配时,MySQL可以使用索引来快速定位和检索数据,从而提高查询性能。    以下是关于全值匹配的一些详细信息:一、概念:  -全值匹配是指在查......
  • MySQL入门学习-深入索引.唯一索引
        在MySQL中,索引是一种用于提高数据库查询性能的数据结构。深入了解索引对于优化数据库操作非常重要。以下是关于唯一索引的相关内容:一、概念:  -唯一索引是一种特殊的索引,它确保表中的某一列或列组合的值是唯一的,不允许出现重复值。二、特点:  -保证数......
  • MySQL 数据库的 DDL
    备份MySQL数据库的DDL(数据定义语言)语句包括导出数据库结构(如表、视图、触发器、存储过程和函数等),但不包括实际数据。通常使用mysqldump工具进行此类操作。以下是具体的方法:备份DDL1.导出数据库结构(不包括数据)使用mysqldump工具导出数据库结构,可以指定--no-data......