MYSQL数据同步、复制、分发

MYSQL主从复制:

1,主从服务器都启用二进制日志,设置唯一ID,并相互建立连接的账号并授权;

2,从服务器主动向主服务器请求查询当前同步状态,并拉回数据;

主要相关命令:

查看主服务器状态:show master status\G;
查看从服务器状态:show slave status\G;
查看mysql I/O线程:show processlist\G;
配置从服务器复制:change master to {***}详见后面说明
启动从服务器复制:start slave;
授权用户:grant 权限 on 数据库.* to 用户名@‘登录主机‘ identified by "密码";
刷新系统权限表:flush privileges;
锁定数据库:flush tables with read lock;
解除锁定库:unlock tables;

相关设置

主服务器:

#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin                     //[必须]启用二进制日志
server-id=222                             //[必须]服务器唯一ID,默认是1,一般取IP最后一段
binlog-do-db=wordpress         //表示只备份wordpress
binlog_ignore_db=mysql         //表示忽略备份mysql
不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。
mysql>GRANT REPLICATION SLAVE ON *.* to ‘copy_user‘@‘%‘ identified by ‘copy_password‘;    --这里要注意:REPLICATION SLAVE,指主服务器复制权限
mysql>show processlist;         --查看已连接的从服务器

从服务器:

#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin     //[不是必须]    启用二进制日志 ,当从服务器是其他服务器的主服务器时,必须要设置
server-id=111             //[必须]        服务器唯一ID,默认是1,一般取IP最后一段
slave-skip-errors = 1062    //[不是必须]忽略重复键值错误
replicate-do-db=test
replicate-ignore-db=mysql
mysql>GRANT REPLICATION CLIENT ON *.* to ‘copy_user‘@‘%‘ identified by ‘copy_password‘;    --这里要注意:REPLICATION  CLIENT指从服务器复制权限
mysql>change master to                                            --配置连接到哪个主服务器
        ->master_host=‘192.168.2.12‘,                        --主服务器IP地址
        ->master_user=‘copy_user‘,                            --主服务器中配置的用户名
        ->master_password=‘copy_password‘,            --主服务器中的密码
        ->master_log_file=‘mysql-bin.000039‘,        --就是当前主服务器日志文件名,就是从这个文件开始复制,不大于前边的File值。
        ->master_log_pos=32176;                              --从上面日志文件中的相应位置开始,前边的Position值 ,
mysql>start slave;                                                        --启动从服务器复制功能]
mysql>stop slave;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;    --忽略1步错误
mysql>stop slave;
mysql>change master to master_host=‘192.168.1.21‘,master_user=‘copy_user‘,  master_password=‘copy_password‘,master_log_file=‘mysql-bin.000031‘, master_log_pos=108506;
mysql>start slave;

查看主服务器状态,在主服务器上运行:

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000008
         Position: 154
     Binlog_Do_DB:
 Binlog_Ignore_DB: mysql,sys,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> 

查看从服务器当前复制状态,在从服务器上运行:

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State:                   Waiting for master to send event
Master_Host:                     192.168.2.12                           //主服务器地址
Master_User:                      copy_king                             //授权帐户名
Master_Port:                      3306                                      //数据库端口
Connect_Retry:                  60                                          //当连接错误,间隔多长时间重试
Master_Log_File:               mysql-bin.000038                 //当前主服务器的最大日志ID
Read_Master_Log_Pos:     95990                                    //当前主服务器进行到的日志位置,这与主服务器中的值相同
Relay_Log_File:                 kq126-relay-bin.000053        //自己的日志位置
Relay_Log_Pos:                 96153                                    //同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Master_Log_File:    mysql-bin.000038                 //已同步到主服务器的位置
Slave_IO_Running:           Yes                                         //此状态必须YES,连接到主库是否正在运行
Slave_SQL_Running:        Yes                                         //此状态必须YES, 本库内写入状态是否运行,这两个都必须是YES,只要有一个是NO,就是出问题了
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos:                  95990            //
Relay_Log_Space:                         96489
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0                                            从服务器数据比主服务器延迟多少秒,一般是0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 9
Master_UUID: 7d911e39-3a98-11e5-8b9e-000c29168ea6
Master_Info_File: /usr/local/mysql/var/master.info            --当前配置主库的文件
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)

ERROR:
No query specified

查看日志,在linux中:

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/var/mysql-bin.000050

通过日志还原:

通过时间还原:

–start-datetime=”还原数据的起始时间”

–stop-datetime=”还原数据的结束时间”

mysqlbinlog –start-datetime=“时间” 日志文件路径 | mysql -u用户 -p密码 –从规定的起始时间还原到现在

mysqlbinlog –stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p密码 –从最开始还原到规定的结束时间

mysqlbinlog –start-datetime=“时间” –stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p密码 –指定时间段

[root@localhost bin]# /usr/local/mysql/bin/mysqlbinlog --stop-datetime=‘2015-10-19 17:30:0‘ /usr/local/mysql/var/mysql-bin.000001 | mysql -uroot -proot

通过位置还原:

–start-position=”还原数据的起始位置”

–stop-position=”还原数据的结束位置”

mysqlbinlog –start-position=“位置” 日志文件路径 | mysql -u用户 -p密码 –从规定的起始位置还原到现在

mysqlbinlog –stop-position=“位置” 日志文件路径 | mysql -u用户 -p密码 –从最开始还原到规定的结束位置

mysqlbinlog –start-position=“位置” –stop-position=“位置” 日志文件路径 | mysql -u用户 -p密码 –指定位置段

时间: 2024-10-11 10:10:15

MYSQL数据同步、复制、分发的相关文章

mysql半同步复制的实现

mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,而不管slave上是否接受到了这个二进制日志.在半同步复制的架构下,当master在将自己binlog发给slave上的时候,要确保slave已经接受到了这个二进制日志以后,才会返回数据给客户端.对比两种架构:异步复制对于用户来说,可以确保得到快速的响应结构,但是

MySQL半同步复制

1.概述 主从复制存在三种类型:异步复制.同步复制以及半同步复制,下面根据手册上解释逐一说明一下. 异步复制: 主库将更新的事件写入binlog,准备好的从库获取这些binlong进行回放.这无法保证所有从库都接到这些事件. ? With asynchronous replication, the master writes events to its binary log and slaves request them when they are ready. There is no guar

MySQL半同步复制的数据一致性探讨微信后台团队实践【转】

MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括腾讯,阿里,百度,网易,Google,FaceBook等互联网巨头企业. 随着互联网的高速发展,互联网服务可用性变得越发重要,数据容灾也随之成为各企业的关键任务.在数据容灾中,数据库集群如何处理数据一致性也成为了各企业需要解决的问题.特别在一些新兴的金融服务中,MySQL也逐渐成为其核心数据库,如何

mysql半同步复制实现

mysql半同步复制和异步复制的区别如上述架构图所看到的:在mysql异步复制的情况下.Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自己主动返回数据给client.而无论slave上是否接受到了这个二进制日志.在半同步复制的架构下.当master在将自己binlog发给slave上的时候.要确保slave已经接受到了这个二进制日志以后,才会返回数据给client. 对照两种架构:异步复制对于用户来说,能够确保得

MySQL半同步复制实践

半同步复制 MySQL的主从复制在5.5版本以前只支持异步复制,也就是说主库在执行一些事务后,是不管从库备库的进度的,这种方式最大的好处是速度快.效率高:缺点就是在主库宕机后,不能确保从库和主库的数据一致性. 半同步复制的好处就是,主库在每执行一次事务后,会等待备库接受日志后才返回给客户端,如果做的是小事务,两台主机的延迟较小,则可以实现在损失很小的性能的情况下保证零数据丢失. 原理 1)主库每执行一次事务都会先让备库读取日志,确保至少有一台备库上面的数据和自己完整 2)如果在一个timeout

Mysql半同步复制模式说明 - 运维小结

MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就可能会发生丢失. 异步模式是一种基于偏移量的主从复制,实现原理是:主库开启binlog功能并授权从库连接主库,从库通过chan

详解MySQL双活同步复制四种解决方案

目录 基于MySQL原生复制主主同步方案 基于Galera replication方案 基于Group Replication方案 基于canal方案 对于数据实时同步,其核心是需要基于日志来实现,是可以实现准实时的数据同步,基于日志实现不会要求数据库本身在设计和实现中带来任何额外的约束. 基于MySQL原生复制主主同步方案  这是常见的方案,一般来说,中小型规模的时候,采用这种架构是最省事的. 两个节点可以采用简单的双主模式,并且使用专线连接,在master_A节点发生故障后,应用连接快速切换

MySQL半同步复制原理配置与介绍详解

环境介绍: Ubuntu Server 16.04.2+MySQL 5.7.17 Community Server (GPL) MySQL安装 通过APT的方式安装,官方指导文档地址: https://dev.mysql.com/downloads/repo/apt/ 1.下载mysql-apt-config_0.8.3-1_all.deb 2.安装deb A Quick Guide to Using the MySQL APT Repository: https://dev.mysql.com

MySQL 半同步复制模式说明及配置示例 - 运维小结

MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就可能会发生丢失. 异步模式是一种基于偏移量的主从复制,实现原理是: 主库开启binlog功能并授权从库连接主库,从库通过cha

MHA-结合MySQL半同步复制高可用集群(Centos7)

目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) 四.总结 一.理论概述 在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. 优点 缺点 由perl语言开发的开源工具 需要编写脚本或利用第三方工具来实现Vip的配置 支持