`
shiqidide
  • 浏览: 64504 次
文章分类
社区版块
存档分类
最新评论

mysql数据库同步配置参数及常见问题

 
阅读更多
一. 配置参数说明(基本知识):
#服务器ID, 每台服务器的ID不能设为相同的数.
server-id=1

#启用从库日志,这样可以进行链式复制
log-slave-updates

#从库是否只读,0表示可读写,1表示只读
read-only=1

#只复制某个表
replicate-do-table=tablename

#只复制某些表(可用匹配符)
replicate-wild-do-table=tablename%

#只复制某个库
replicate-do-db=dbname

#只复制某些库
replicte-wild-do-db=dbname%

#不复制某个表
replicate-ignore-table=tablename

#不复制某些表
replicate-wild-ignore-table=tablename%

#不复制某个库
replicate-ignore-db=dbname

#出现错误后忽略,如果不加这个,出现任何错误,同步进程会终止
slave-skip-errors=all

sync_binlog =1

#复制完的sql语句是否立即从中继日志中清除,1表示立即清除
relay-log-purge=1

#从服务器主机,用于show slave hosts生成从库清单
report-host=hostname

#主服务器主机地址与端口, 用于从服务器连接到主服务器
master-host=hostname
master-port=3306

#主服务器数据库用户名与密码(请赋予复制的权限(slave))
master-user=dbuser
master-password=password

#预设重试间隔时间
master-connect-retry=60

#开启数据库日志
log-bin=mysql-bin.log

#要同步的数据库的名字
binlog-do-db=dbname

#不要同步的数据库的名字
binlog-ignore-db=dbname

二. 主从服务器常见状态信息:
从服务器
在从服务器上使用show slave status\G
Slave_IO_Running,为No,
则说明IO_THREAD没有启动,请执行start slave io_thread
Slave_SQL_Running为No
则复制出错,查看Last_error字段排除错误后执行start slave sql_thread
Slave_IO_State字段空

//复制没有启动
Connecting to master

没有连接上master
Waiting for master to send event/

已经连上
三. 服务器常见命令:

主服务器:
show master status
show slave hosts
show logs
show binlog events
purge logs to 'log_name'
purge logs before 'date'
reset master(老版本flush master)
set sql_log_bin=
从服务器
slave start
slave stop
SLAVE STOP IO_THREAD //此线程把master段的日志写到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息
PURGE MASTER [before 'date'] 删除master端已同步过的日志

四. 服务器常见状态:
1. Master 同步线程状态


以下列出了master的 Binlog Dump 线程 State 字段中最常见的几种状态。如果在master上没有 Binlog Dump 线程,那么同步就没有在运行。
也就是说,没有slave连接上来。
Sending binlog event to slave
事件是由二进制日志构成,一个事件通常由更新语句加上其他信息。线程读取到一个事件并正发送到slave上。
Finished reading one binlog; switching to next binlog
读取完了一个二进制日志,正切换到下一个。
Has sent all binlog to slave; waiting for binlog to be updated
已经读取完全部未完成更新日志,并且全部都发送到slave了。它处于空闲状态,正等待在master上执行新的更新操作以在二进制日志中产生新
的事件,然后读取它们。
Waiting to finalize termination
当前线程停止了,这个时间很短。
2. Slave的I/O线程状态


以下列出了slave的I/O线程 State 字段中最常见的几种状态。从MySQL 4.1.1开始,这个状态在执行 SHOW SLAVE STATUS 语句结果的
Slave_IO_State 字段也会出现。这意味着可以只执行 SHOW SLAVE STATUS 语句就能了解到更多的信息。
Connecting to master
该线程证尝试连接到master上。
Checking master version
确定连接到master后出现的一个短暂的状态。
Registering slave on master
确定连接到master后出现的一个短暂的状态。
Requesting binlog dump
确定连接到master后出现的一个短暂的状态。该线程向master发送一个请求,告诉它要请求的二进制文件以及开始位置。
Waiting to reconnect after a failed binlog dump request
如果二进制日志转储(binary log dump)请求失败了(由于连接断开),该线程在休眠时进入这个状态,并定期重连。重连的时间间隔由 --
master-connect-retry 选项来指定。
Reconnecting after a failed binlog dump request
该线程正尝试重连到master。
Waiting for master to send event
已经连接到master,正等待它发送二进制日志。如果master闲置时,这个状态可能会持续较长时间,如果它等待超过 slave_read_timeout 秒
,就会发生超时。这时,它就会考虑断开连接,然后尝试重连。
Queueing master event to the relay log
已经读取到一个事件,正把它拷贝到中继日志中以备SQL线程处理。
Waiting to reconnect after a failed master event read
读日志时发生错误(由于连接断开)。该线程在重连之前休眠 master-connect-retry 秒。
Reconnecting after a failed master event read
正尝试重连到master。当连接确定后,状态就变成 Waiting for master to send event。
Waiting for the slave SQL thread to free enough relay log space
relay_log_space_limit 的值非零,中继日志的大小总和超过这个值了。I/O线程等待SQL线程先处理中继日志然后删除它们以释放足够的空间

Waiting for slave mutex on exit
当前线程停止了,这个时间很短。
3. Slave的SQL线程状态


以下列出了slave的SQL线程 State 字段中最常见的几种状态:
Reading event from the relay log
从中继日志里读到一个事件以备执行。
Has read all relay log; waiting for the slave I/O thread to update it
已经处理完中继日志中的全部事件了,正等待I/O线程写入更新的日志。
Waiting for slave mutex on exit
当前线程停止了,这个时间很短。
五. 服务器常见状态:
一.从库SLAVE启动问题
由于一些错误操作导致 CHANGE MASTER 和 SLAVE 服务无法启动,系统报错如下:
*****************************************************************
Could not initialize master info structure; more error messages can be found in the MySQL error log.
*****************************************************************
无法初始化master info结构,MySQL错误日志记录了更详细的错误信息。
解决方法:
1、查看MySQL错误日志,如:同步的上一个Position是多少,很多情况下无法启动服务是由于mysql识别的同步始终停留在上一个Position上。
2、查看master.info和relay-log.info,master.info 记录MASTER相关信息,relay-log.info 记录当前同步日志信息。
3、停止myslq服务,删除master.info和relay-log.info。
4、启动mysql服务。
5、重新CHANGE MASTER,重新启动SLAVE服务。
二.主从不能同步
show slave status;报错:Error xxx dosn't exist
且show slave status\G:
Slave_SQL_Running: NO
Seconds_Behind_Master: NULL
解决方法:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
之后Slave会和Master去同步 主要看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master是否为0,0就是已经同步了
2,还需要做的一些优化与监视:
show full processlist; //查看mysql当前同步线程号
skip-name-resolve //跳过dns名称查询,有助于加快连接及同步的速度
max_connecti**=1000 //增大Mysql的连接数目,(默认100)
max_connect_errors=100 //增大Mysql的错误连接数目,(默认10)
查看日志一些命令
1, show master status\G;
在这里主要是看log-bin的文件是否相同。
show slave status\G;
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果都是Yes,则说明配置成功.
2,在master上输入show processlist\G;
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost:32931
db: NULL
Command: Binlog Dump
Time: 94
State: Has sent all binlog to slave; waiting for binlog to
be updated
Info: NULL
如果出现Command: Binlog Dump,则说明配置成功.
stop slave #停止同步
start slave #开始同步,从日志终止的位置开始更新。
SET SQL_LOG_BIN=0|1 #主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。
RESET MASTER #主机端运行,清除所有的日志,这条命令就是原来的FLUSH MASTER
RESET SLAVE #从机运行,清除日志同步位置标志,并重新生成master.info
虽然重新生成了master.info,但是并不起用,最好,将从机的mysql进程重启一下,
LOAD TABLE tblname FROM MASTER #从机运行,从主机端重读指定的表的数据,每次只能读取一个,受timeout时间限制,需要调整timeout时间。执行这个命令需要同步账号有 reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值
LOAD DATA FROM MASTER #从机执行,从主机端重新读入所有的数据。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值
CHANGE MASTER TO master_def_list #在线改变一些主机设置,多个用逗号间隔,比如
CHANGE MASTER TO
MASTER_HOST='master2.mycompany.com',
MASTER_USER='replication',
MASTER_PASSWORD='bigs3cret'
MASTER_POS_WAIT() #从机运行
SHOW MASTER STATUS #主机运行,看日志导出信息
SHOW SLAVE HOSTS #主机运行,看连入的从机的情况。
SHOW SLAVE STATUS (slave)
SHOW MASTER LOGS (master)
SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ]
PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'
show binlog events; #查看主库二进制日志文件内容:
注意:
1.主辅库同步主要是通过二进制日志来实现同步的。
2.在启动辅库的时候必须先把数据同步,并删除日志目录下的:master.info文件。因为master.info记录了上次要连接主库的信息,如果不删除,即使my.cnf里进行了修改,也不起作用。因为读取的还是master.info文件里的信息。


分享到:
评论

相关推荐

    mysql数据库同步配置

    MySQL 数据库同步配置是将一个 MySQL 服务器的数据实时或定期复制到另一个服务器的过程,这在分布式系统、备份策略和高可用性解决方案中非常常见。在Linux环境下,我们可以通过以下步骤实现表级同步,即只同步特定的...

    MySQL数据库两台主机同步

    MySQL数据库两台主机同步 MySQL数据库两台主机同步是指在两个主机之间实现MySQL数据库的热备,以便在任意一台机器出现故障时,只需要人工切换程序连接到另一台机器即可恢复程序的正常运行。下面是实现MySQL数据库两...

    Mysql数据库安装及生产环境下主从库同步配置.docx

    MySQL数据库安装及生产环境下主从库同步配置是数据库管理中的重要环节,特别是在高可用性和负载均衡的场景下。本文档将详细介绍如何在CentOS 6.6系统上安装MySQL 5.5.42,并配置主从同步。 1. **安装MySQL数据库** ...

    Mysql数据库安装及生产环境下主从库同步配置.pdf

    2. **生产环境下MySQL数据库主从同步配置** 主从同步是提高数据安全性、负载均衡和高可用性的重要手段。配置主要包括以下几个步骤: 2.1 **主数据库配置** - 在主数据库上,开启二进制日志,通过在`my.cnf`中添加...

    mysql同步,双向同步

    MySQL双向同步配置详解 MySQL同步是指将多个数据库服务器之间的数据保持实时同步的过程。这种技术可以应用于分布式系统、数据备份、灾难恢复等场景。在这个资源中,我们将详细介绍如何配置 MySQL 双向同步。 MySQL...

    mysql 数据库的同步问题(双机热备).pdf

    3. **数据库同步**:在开始复制之前,必须确保主从服务器拥有相同的数据库结构。这可以通过多种方式实现: - 锁定主服务器的数据库,停止写入操作,然后使用备份工具(如 tar)将数据库目录复制到从服务器。 - ...

    特别有用的MySQL数据实时同步到ES轻松配置手册

    【MySQL 数据实时同步到 ES 轻松配置】 在当今大数据时代,实时数据同步成为许多企业和组织的关键需求,特别是从关系型数据库如 MySQL 到分布式搜索引擎如 ElasticSearch(ES)的实时同步。本文将详细介绍如何利用...

    mysql 数据库的同步问题(双机热备).docx

    总之,MySQL数据库的同步和双机热备是保证高可用性和数据安全的重要手段,理解其工作原理和配置过程对于维护大型数据库系统至关重要。通过正确配置和管理复制,可以构建强大的数据库集群,提供可靠的服务。

    Mysql到Mysql全量同步实验手册.pdf

    《MySQL到MySQL全量同步实验手册》主要涵盖了大数据采集技术中的一个重要实践——使用DataX工具进行MySQL数据库之间的全量数据同步。在这个实验中,我们学习如何利用DataX将数据从一个MySQL实例迁移到另一个MySQL...

    剖析MySQL数据库间实现同步.pdf

    MySQL数据库间的同步是一种常见需求,特别是在分布式系统或高可用性设置中,确保数据一致性与安全性。本篇文章将详细解析如何在两台MySQL服务器之间实现数据同步。 首先,我们需要在两台服务器上安装并配置MySQL。...

    mysql数据库my.cnf配置文件

    用户可通过设置innodb_purge_threads配置参数来选择清除操作是否使用单 # 独线程,默认情况下参数设置为0(不使用单独线程),设置为 1 时表示使用单独的清除线程。建议为1 innodb_flush_log_at_trx_commit = 2 # 0:...

    MySQL数据库安全体系详解.pptx

    MySQL数据库安全体系是一个复杂而重要的主题,涉及到多个层面的安全策略和技术。在讲解这个体系之前,首先需要理解数据库安全的基本概念,包括数据保护、访问控制、审计日志、故障恢复等。 1. **单机安全**:这是...

    mysql主从同步及canal配置详解.docx

    主从同步配置 在 Master 节点上,我们需要配置 binlog 机制,并指定需要同步的数据库和表。在 Slave 节点上,我们需要配置 Slave 的连接信息,并启动 Slave 服务。 ``` CHANGE MASTER TO MASTER_HOST='58.214.17....

    如何将数据从 SQL Server 实时或定时同步到 MySQL 数据库.pdf

    SyncNavigator 是一款强大的数据库同步工具,它能有效地解决不同数据库之间的兼容性问题,支持多种数据库版本,包括 SQL Server 2000 至 2008 和 MySQL 4.1 至 5.5。以下是如何使用 SyncNavigator 进行同步的步骤: ...

    github-to-mysql:将GitHub数据(问题,标签等)同步到MySQL数据库

    将GitHub数据(问题,标签等)同步到MySQL数据库。 特征: 同步问题并拉取请求 支持多页结果 同步标签 同步里程碑 入门 克隆存储库或并解压缩 运行composer install 复制.env.dist以创建.env文件 通过运行./...

    mysql ,两个数据库,实时数据同步

    MySQL 双数据库实时数据同步 MySQL 是一种广泛使用的关系数据库管理系统,随着数据规模的增加,单个数据库的存储和处理能力变得不够,需要实现多个数据库之间的数据同步,以满足大规模数据处理和存储的需求。本文将...

    MYSQL主从数据库同步备份配置的方法

    MYSQL主从数据库同步备份配置是MYSQL数据库中的一种常见配置方式,该配置方式可以实现数据库之间的数据同步和备份。本文将详细介绍MYSQL主从数据库同步备份配置的方法,并提供详细的配置步骤和解释。 一、准备 要...

    MySQL主从服务器数据库同步的实现 (1).pdf

    MySQL主从服务器数据库同步是一种常见的高可用性和负载均衡策略,特别是在大型系统中,用于确保数据的一致性并分散读写操作。以下是对MySQL主从同步技术的详细解释: 1. **主从同步原理**: - MySQL的同步机制基于...

    Amoeba的使用及单机多MySQL数据库的配置(特别说明)[归纳].pdf

    下面我们将详细探讨Amoeba的配置及其在单机多MySQL数据库环境中的应用。 首先,Amoeba作为介于应用程序和数据库之间的中介,通过接收应用程序的SQL语句,然后根据配置文件将其路由到相应的数据库实例进行处理。这种...

    MySQL数据库双机热备的配置.docx

    在互联网行业中,由于数据的重要性,MySQL数据库的双机热备配置是常见的做法。 首先,MySQL数据库并没有内置的增量备份功能,当数据量庞大时,全量备份会面临效率和存储空间的问题。因此,MySQL提供了主从复制...

Global site tag (gtag.js) - Google Analytics