mysql主从同步详细教程

例子:

  假如我需要同步test1、test2数据库

  系统:centos7

  主库主机:192.168.1.252

  从库主机:192.168.1.251

  端口都是:3306

  (1)、打开主数据的配置文件my.cnf,添加这几项

(2)、重启mysql (service mysql restart)(3)、在主库创建一个用于同步的用户(当然也可以不创建,直接用已有的,不过为了安全建议还是创建一个)

  这个slave用户密码为123456,但有同步的权限,且只能在192.168.1.253上连接。

  如果主库里已经数据库数据了,那还得进行以下操作:

    刷新表然后锁表(只允许查数据不允许写数据):

    然后备份要同步的数据库的数据,然后拷贝到从库里面

  主库执行:show master status; 记下 Position 和 File 的值,等下进行从库配置要用到。

  +------------------+----------+--------------+------------------+
  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000023 | 2720 | test1,test2 | mysql 
  +------------------+----------+--------------+------------------+

  (1)、修改配置文件my.cnf

  (2)、重启从库,执行如下命令(先停止同步,然后设置同步信息,master_log_file 和 master_log_pos就是我们主库上面的)

  (3)、从库执行:show slave status\G; 查看是否正常

   主要看这几项;

方法一:忽略错误后,继续同步
  该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
  解决:
    stop slave; #表示跳过一步错误,后面的数字可变
    set global sql_slave_skip_counter=1;
    start slave;
  之后再用mysql> show slave status\G 查看:
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

方式二:重新做主从,完全同步
  该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
  解决步骤如下:
    1.先进入主库,进行锁表,防止数据写入
    使用命令:
    mysql> flush tables with read lock;
    注意:该处是锁定为只读状态,语句不区分大小写
    2.进行数据备份
      #把数据备份到mysql.bak.sql文件
      mysqldump -uroot -p -hlocalhost > mysql.bak.sql
      这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
    3.查看master 状态
      mysql> show master status;
      +-------------------+----------+--------------+-------------------------------+
      | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +-------------------+----------+--------------+-------------------------------+
      | mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
      +-------------------+----------+--------------+-------------------------------+

    4.把mysql备份文件传到从库机器,进行数据恢复
      #使用scp命令
      [[email protected] mysql]# scp mysql.bak.sql [email protected]:/tmp/
    5.停止从库的状态
      mysql> stop slave;
    6.然后到从库执行mysql命令,导入数据备份
      mysql> source /tmp/mysql.bak.sql
    7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项
      change master to master_host=‘192.168.128.100‘, master_user=‘rsync‘, master_port=3306, master_password=‘‘, master_log_file=‘mysqld-bin.000001‘, master_log_pos=3260;
    8.重新开启从同步
      mysql> start slave;
    9.查看同步状态
      mysql> show slave status\G 查看:
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

  这个两个软件也是很方便,大家可以去了解一下  

  pt-table-checksum:在主(master)上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。DSN指向的是主的地址,该工具的退出状态不为零,如果发现有任何差别,或者如果出现任何警告或错误,更多信息请查看官方资料。
  pt-table-sync: 高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。

  

原文地址:https://www.cnblogs.com/sqlservertongbu/p/11013625.html

时间: 2024-10-09 03:30:50

mysql主从同步详细教程的相关文章

mysql 主从同步详细配置教程

8.10 Mysql 主从同步 8.10.1 主从原理mysql主从同步的原理:1.在master上开启bin-log日志,用于记录master上的更改删的一些记录.2.主从各开启io线程,从上开启io线程和sql线程.同时都配置好主从上的serveid唯一性3.主上配置好授权用户,从上设置change master授权连接的命令3. 从上io线程通过授权连接master,master通过io线程检查到slav的请求的日志.postsion点位置.4.master将这些相应的请求内容发送给sla

Ubutun 14.10下mysql 主从同步详细操作

一.相关介绍 1 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是实时的业务数据库,从数据库的作用和使用场合一般有几个: 一是作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作: 二是可在从数据库作备份.数据统计等工作,这样不影响主数据库的性能:2 读写分离,是指读与写分别使用不同的数据库,当然一般是在不同服务器上的:在同一台服务器上的读写环境,估计只是用来测试吧. 一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别

Mysql主从同步实现教程

启动 service mysqld restart mysqld_safe & 源码 : https://www.2cto.com/database/201711/configure --prefix=/usr/local/mysql make make install 初始化密码:用mysqladmin mysqladmin -u root password “newpass” 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass “

MySQL主从同步详细步骤

本文档以Ubuntu作为主服务器,Win7作为从服务器进行测试.要保证主从服务器之间能够互相通信(即能相互ping通). 主服务器ip地址:192.168.13.81 从服务器ip地址:192.168.13.82 ? 测试通信状况: 主可以ping通从: 从可以ping通主: 1.?备份主服务器的数据在终端执行如下命令:mysqldump -uroot -pmysql--all-databases --lock-all-tables > ~/master_db.sql 将来会在家目录下生产一个m

linux下mysql主从配置详细教程

1.修改MySQL配置:主库配置server-id = 3binlog-do-db=xmcp_gxfc #the db need to syncbinlog-ignore-db = mysql #不需要同步的数据库binlog-ignore-db = redmine #不需要同步的数据库log_slave_updates = 1binlog_format=mixedrelay_log = /usr/local/mysql/relay_log/mysql-relay-binread_only =

mysql数据库主从同步配置教程--数据库同步

背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的方法来实现.下面把步骤记录一下. 环境和拓扑 操作系统:Centos6.6 X64 mysql版本:5.1.73 Master: 10.6.1.210 Slave:  10.6.1.211 需求: 实现Master上test库同步到Slave上,但是禁止同步该库下的AA表 1.配置Master上的my.cnf #vim  /etc/my.cnf 添加内容到[mysqld]下,设定只同步test 数据库: [mysqld] l

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

mysql主从同步监控脚本

mysql主从同步监控脚本,利用mysql从库中的IO和SQL进程以及延迟时间来监控主从同步是否正常,详细shell脚本如下: #!/bin/bash #author wangning #date 2017-7-17 #qq 1198143315 #Email [email protected] ################################## define variable############################# define_variable(){ ip

mysql主从同步中应注意的问题

MYSQL主从同步的作用 (1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错 MYSQL主从同步的原理 关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同步的原理,通过下图能很明白的指导其工作的过程: 大致描述一下过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库保持一致.主从同步的详细过程