玩转mysql主从

++++++++++++++++++++++++ 在master上处理 ++++++++++++++++
#1 配置文件中添加并保证唯一
 server-id=1
 log-bin=/var/lib/mysql/mysql-bin

#2 重启
 /etc/init.d/mysqld restart

#3 建立用于同步的账号rep
 grant replication slave on *.* to ‘rep‘@‘192.168.11.%‘ identified by ‘123456‘;
 flush privileges;
 show grants for [email protected]‘192.168.11.%’;
 注意: replication slave 为mysql 同步的必须权限,此处不要授权all容易被黑客攻击。

#4 进行导库操作(对数据库锁表只读) 当前窗口不要关闭
   注意:生产环境时,操作主从复制,需要申请停机时间。数据量很大锁表会影响业务。

flush table with read lock;
   提示: 这个锁表命令的时间,在不同的引擎的情况,会受下面参数控制,锁表时,如果超过设置时间不操作会自动解锁。
   受二参数限制:interactive_timeout = 60  wait_timeout = 60
   默认情况下时长: show variables like ‘%timeout%‘;

#5 查询bin-log日志在哪里 查询主库状态
   show master status;
   查询主库状态,即当前binlog日志文件名和二进制binlog日志偏移量。
   表示我现在主库往bin-log里写数据写到了 000001这个文件的342位置点
   
#6 备份所有库 即导出数据库所有数据
   mysqldump -u root -p123456 --events --compact --default-character-set=utf8  -A -B -F |gzip >  mysql_all_$(date +%F).sql.gz

#7 解锁
   unlock table
++++++++++++++++++++++++ 在slave上处理 ++++++++++++++++
#1 配置文件中设置server-id 并关闭bin-log参数配置
   server-id=2
   #log-bin=/var/lib/mysql/mysql-bin
#2 重启
   /etc/init.d/mysqld restart

#3 将主库的数据库拉取到本地导进数据库
 scp [email protected]:/home/yeqing/mysql_all_2017-01-18.sql.gz .
 gzip -d mysql_all_2017-01-18.sql.gz
 
注意: 有外键的表不好导,mysql等系统表不要导

#4 配置同步参数(根据show master status设置)
mysql> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.11.16‘,
    -> MASTER_PORT=3306,
    -> MASTER_USER=‘rep‘,
    -> MASTER_PASSWORD=‘123456‘,
    -> MASTER_LOG_FILE=‘mysql-bin.000001‘,
    -> MASTER_LOG_POS=342;
Query OK, 0 rows affected (0.11 sec)

#5 检查是否有master.info
   cat /var/lib/mysql/master.info

#6 执行同步开关啦
   slave start;

#7 检查是否已经同步
  show slave status\G;

io和sql进程要yes:
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
  延迟要为0
    Seconds_Behind_Master:0

#8 如果遇到IO进程和sql进程有不是YES,进行如下处理:

方案1:
    1. 在master上
        清除bin-log: reset master;
        重新查看位置点:show master status;
    2. 在slave上
        关闭同步:slave stop
        清除bin-log: rester
        对照master位置点重新进行配置同步参数
        重新开启同步: slave start;
        再次查看是否同步: show slave status\G;
方案二:
   差异小的情况下直接通过navicat的数据对比功能 找出来 给从库补上
   关闭同步:slave stop
   清除bin-log: rester
    重新开启同步: slave start;

方案三:
   差异大的情况下,直接重新做主从同步。

#9 测试同步
 在master上:
    create table test_2(id int);
    mysqlbinlog mysql-bin.*|egrep -v ‘#|*!‘

在slave上:
     show tables;

时间: 2024-12-12 17:25:23

玩转mysql主从的相关文章

在Centos7玩转Mysql半同步和keepalived+MHA(二)

在上一篇完成了Mysql的半同步配置. 链接:在Centos7玩转Mysql半同步和keepalived+MHA(一),本篇则继续完成MHA+keepalived的配置. 角色 IP OS MySQL MHA mha-manager 192.168.1.92 CentOS 7 无 mha-manager mha-node mysql-master 192.168.1.151 CentOS 7 mysql-master mha-node mysql-slave01 192.168.1.152 Ce

CentOS 7下的 Mysql 主从配置

最近在玩mysql主从配置,在此记录一下 一.前言 1.安装两个虚拟机(CentOS 7).iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为主数据库,192.168.47.131作为从数据库 2.在线安装Mysql数据库.具体安装方法请参考: 3.在主从数据库中创建 testdb 数据库.(作为同步的数据库) 二.具体步骤 1.主数据库(master)配置 (1)在Master MySQL上创建一个用户‘test’,并允许其他Slave

mysql主从配置

首先说下为什么需要mysql主从? 主要有三个原因:1,可以辅助备份,提高数据安全性:2,可以实现读写分离,达到负载分担的效果:3,可以实现高可用,在主服务器故障时,迅速切换到从,保证业务不间断运行. 针对上述需求,基本上一主一从,即可满足. 再来看下mysql主从复制的工作过程: 主要有三步: 1)master将改变记录到二进制日志(binary log)中,(这些记录叫做二进制日志事件,binary log events)   2)slave将master的binary log events

MYSQL 主从同步故障-Error1062--解决方案

MYSQL 主从同步故障-Error1062-解决方案 公司有两台Mysql服务器之前配置了主从同步,今天用户反映数据有差异,登陆到服务器上查看Mysql主从配置,发现有错误: show slave status \G;  果然出现问题了 Slave_IO_Running: Yes Slave_SQL_Running: No 而且出现了1062错误 Last_SQL_Error: Error 'Duplicate entry '1001-164761-0' for key 'PRIMARY''

高性能Mysql主从架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

2015-09-16 mysql 主从原理、 同步常见异常及恢复方法

1.原理 MySQL复制技术有以下一些特点:            (1)    数据分布 (Data distribution ) (2)    负载平衡(load balancing)             (3)    备份(Backups)           (4)    高可用性和容错行 High availability and failover 整体上来说,复制有3个步骤: (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,

mysql主从中断

Mysql主从复制中断一例 收到mysql主从中断报警,马上登上服务器查看,发现是中继日志损坏. Show slave status\G,提示中继日志损坏.  Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog'

一键完成MySQL主从部署.

环境声明: 主从服务器位于 192.168.0.0/24 网段 master-->IP:192.168.0.88 master-->IP:192.168.0.89 在Master---主数据库的脚本  master-IP: 192.168.0.88 #!/bin/sh # Function: This is used for mysql-master role # made by zhigang.wang # contact: [email protected] MYUSER=root MYP

mysql主从切换维护时的几点注意

随着业务量的不断增加,数据库的压力总是会越来越大的,如果是要对mysql数据库的硬件升级,势必是要对mysql主从做切换,mysql的主从复制的结构如果不借助第三方工具时做mysql的高可用,要做主从的切换是要做停机维护手动切换的,这里就以普通的一主一从的结构中简单的说一说mysql数据库主从切换的几个要注意的点: 1.server id以前看见很多人在做主从切换的时候没有注意到这一点,导致slave IO报错,包括自己也有过,这个还是要稍微注意下,尤其是在mysql的大规模集群下 2.在主从切