mysql主从同步详细教程

Posted shujutongbugongju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。

  

以上是关于mysql主从同步详细教程的主要内容,如果未能解决你的问题,请参考以下文章

mysql主从同步详细教程

mysql主从同步详细教程

linux下mysql主从配置详细教程

教程MySQL配置主从同步

详细配置主从同步的方法

mysql 主从同步的问题以及详细解决方案