百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

数据库性能优化(1):MySQL数据库主从同步

bigegpt 2024-08-05 11:30 2 浏览

数据库主从复制是MyCat实现读写分离的基础,所以在实现MyCat读写分离前,先简要叙述MySQL数据库主从复制的配置方式。

数据库主从同步前提:

(1)准备两台服务器(主192.168.1.100,从192.168.1.200),分布安装并启动mysql服务;

(1)主从数据库服务器网络联通,能相互ping通;

(2)同步前主从数据库中数据要保持一致。

1、数据库Master设置

1.1、配置主机Master的my.cnf文件

log-bin=binlog #指定binlog日志文件名,默认datadir路径下
server-id=1 #数据库唯一ID,主从的server-id不能重复
binlog-do-db = evcg_node1 #要同步的数据库名。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)
binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开
sync_binlog = 0 #确保binlog日志写入后与硬盘同步
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复
datadir=/mnt/data
socket=/tmp/mysql.sock

sync_binlog这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于sync_binlog参数的各种设置的说明如下:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

1.2、设置数据同步权限

[root@master ~]# mysql -uroot -pEVsaas2018
mysql> GRANT REPLICATION SLAVE ON *.* TO repli@'192.168.1.200' IDENTIFIED BY 'repli123456';
mysql> flush privileges;

1.3、主数据库Master状态

查看Master状态,File和Position作为从机执行同步指令的重要参数。

mysql> show master status;
+-------------------+------------+---------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+------------+---------------------+------------------+
| binlog.000013 | 1794 | evcg_node1 | |
+-------------------+-------------+--------------------+-------------------+
1 row in set (0.00 sec)

2、数据库Slave设置

2.1、配置从机Slave的my.cnf文件

server-id=2 #设置从服务器id,必须于主服务器不同
replicate-do-db=evcg_node1 #需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-wild-do-table=evcg_node1.test #当只同步几个或少数表时,可以如是设置。注意这要跟上面的库指定配合使用
replicate-ignore-db=mysql #不同步mysql系统数据库
slave-skip-errors = all #跳过所有的错误错误,继续执行复制操作
#开启中继日志
relay-log=relay-log
relay-log-index=relay-log.index
innodb_file_per_table=ON
skip_name_resolve=ON
#如果需要同步的数据库名不同
replicate-rewrite-db=evcg_node1->evcg_node2 # master上的数据库名为evcg_node1,slave上的库名为evcg_node2

2.2、配置主从同步指令

[root@master ~]# mysql -urepli -prepli123456 
mysql> stop slave; #停止slave同步
mysql> change master to master_host='192.168.1.100',master_user='repli',master_password='repli123456',master_log_file='binlog.000014',master_log_pos=107;
#master_log_file和master_log_pos通过主机上执行show master status;查看
mysql> start slave; #启动slave同步
mysql> show slave status\G
#查看show slave status\G显示Slave_IO_Running: Yes、Slave_SQL_Running: Yes表示设置成功,主从已实现同步

v

相关推荐

程序员请收好:10个非常有用的 Visual Studio Code 插件

一个插件列表,可以让你的程序员生活变得轻松许多。作者|Daan译者|Elle出品|CSDN(ID:CSDNnews)以下为译文:无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发人...

PADS在WIN10系统中菜单显示不全的解决方法

决定由AD转PADS,打开发现菜单显示不正常,如下图所示:这个是由于系统的默认字体不合适导致,修改一下系统默认字体即可,修改方法如下:打开开始菜单-->所有程序-->Windows系统--...

一文讲解Web前端开发基础环境配置

先从基本的HTML语言开始学习。一个网页的所有内容都是基于HTML,为了学好HTML,不使用任何集成工具,而用一个文本编辑器,直接从最简单的HTML开始编写HTML。先在网上下载notepad++文...

TCP/IP协议栈在Linux内核中的运行时序分析

本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1Linux概述  1.1Linux操作系统架构简介Linux操作系统总体上由Linux...

从 Angular Route 中提前获取数据

#头条创作挑战赛#介绍提前获取意味着在数据呈现在屏幕之前获取到数据。本文中,你将学到,在路由更改前怎么获取到数据。通过本文,你将学会使用resolver,在AngularApp中应用re...

边做游戏边划水: 基于浅水方程的水面交互、河道交互模拟方法

以下文章来源于腾讯游戏学堂,作者Byreave篇一:基于浅水方程的水面交互本文主要介绍一种基于浅水方程的水体交互算法,在基本保持水体交互效果的前提下,实现了一种极简的水面模拟和物体交互方法。真实感的...

Nacos介绍及使用

一、Nacos介绍Nacos是SpringCloudAlibaba架构中最重要的组件。Nacos是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态DNS...

Spring 中@Autowired,@Resource,@Inject 注解实现原理

使用案例前置条件:现在有一个Vehicle接口,它有两个实现类Bus和Car,现在还有一个类VehicleService需要注入一个Vehicle类型的Bean:publicinte...

一文带你搞懂Vue3 底层源码

作者:妹红大大转发链接:https://mp.weixin.qq.com/s/D_PRIMAD6i225Pn-a_lzPA前言vue3出来有一段时间了。今天正式开始记录一下梗vue3.0.0-be...

一线开发大牛带你深度解析探讨模板解释器,解释器的生成

解释器生成解释器的机器代码片段都是在TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码...

Nacos源码—9.Nacos升级gRPC分析五

大纲10.gRPC客户端初始化分析11.gRPC客户端的心跳机制(健康检查)12.gRPC服务端如何处理客户端的建立连接请求13.gRPC服务端如何映射各种请求与对应的Handler处理类14.gRP...

聊聊Spring AI的Tool Calling

序本文主要研究一下SpringAI的ToolCallingToolCallbackorg/springframework/ai/tool/ToolCallback.javapublicinter...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockers...

在MySQL登录时出现Access denied for user ~~ (using password: YES)

Windows~~~在MySQL登录时出现Accessdeniedforuser‘root‘@‘localhost‘(usingpassword:YES),并修改MySQL密码目录适用...

mysql 8.0多实例批量部署script

背景最近一个项目上,客户需要把阿里云的rdsformysql数据库同步至线下,用作数据的灾备,需要在线下的服务器上部署mysql8.0多实例,为了加快部署的速度,写了一个脚本。解决方案#!/bi...