mysql主从同步


mysql主从同步

 


  环境:                      

192.168.122.102(主)         192.168.122.103(从)
     master-mysql                              slave-mysql    

 

公共配置:
         配置固定IP
         启动数据库服务
         关闭iptables selinux
         物理连接OK

          mysql主从数据服务器,库和表,且表结构必须要一致。


 配置主数据库服务器  主mysql数据服务器必须开binglog日志,从mysql数据服务器可开可不开
                    

 


   Mysql的 主从结构是一个异步的复制过程,从Master端复制到另一个Mysql  Slave在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slav端,另外一个线程(IO线程)在 Master 端。
  要实现 MySQL 的 主从复制 首先必须打开 Master 端的Binary Log日志,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。

  MySQL 复制的基本过程如下:
  1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
    2. Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的 Binary Log文件的名称以及在 Binary Log 中的位置;
  3. Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件(mysql-relay-bin)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master- info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”
  4. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的。
  


                               
配置主从mysql数据服务器  
                    
  2.1 、配置主数据库服务器

 

[root@rh6-2 ~]# vim /etc/my.cnf
  7 [mysqld]
  8 log_bin                      //启动log日志
  9 server_id=100          //sserver_id,同一网段不能重复,用来标识。范围1-255

[root@rh6-2 ~]# service mysql restart

 

mysql> grant replication slave on *.* to wgl@"192.168.122.103" identified by "123456";            

     //授权。允许从192.168.122.103登录,授权用户只有拷贝数据的权限 其他任何权限都没有

 

 2.2、配置从mysql数据库服务修改自己的配置文件
 
[root@rh6-3 ~]# vim /etc/my.cnf
  7 [mysqld]
  8 log_bin
  9 server_id=103
[root@rh6-3 ~]# service mysql restart

登陆服务器的数据库管理员 指定谁做自己的主数据库服务器


  change master to
master_host="192.168.122.102",
master_user="wgl",
master_password="123456",     
master_log_file="rh6-2-bin.000002",       //日志文件名,和偏移量,通过show master status在主mysql查看

master_log_pos=120;

mysql>  show slave status\G;         //查看从mysql数据库服务器的状态 

 Slave_IO_Running: YES

Slave_SQL_Running: YES
mysql>  start slave;             //如果均不是YES,通过statar slave 开启

 

 

2个 IO   SQL   要同时处于 YES状态 数据才能成长同步。
  IO SQL 连接不上原因
IO  连接主数据库服务器,把主数据库服务器binlog日志里内容,

拷贝到本机的relaybinlog日志里IO 进程出错:连接不上主数据库

服务器(物理线路   安全问题   授权用户)                  

当前binlog日志名 pos点  和 master  上的的不一致
        

      
2.4、验证从数据库服务器是否能同步从数据库服务器上的数据。

在主mysql数据服务器上,建库,建表,插入记录

 

 

 

 

3、设置对哪些库同步或忽略某些库

设置哪些库可以同步,或忽略哪些库同步,可以在主mysql上同步或从mysql端设置,当同步或忽略多个库时,用“,” 间隔
 
 在主mysql上设置:
  binlog-do-db=name  设置master对哪些库做复制入职
  binlog-ignore-db=name 设置master对哪些库忽略日志
 
 在从mysql上设置
       log-slave-updates                 // 记录从从库更新,允许链式复制(A-B-C)
     relay-log=dbsvr2-relay-bin     //指定中继文件名
     replicate-do-db=mysql           //仅复制指定库,其他库将被忽略,此项可设置多条(省略时,复制复制所有库)
   replicate-ignore-db=test        //不复制哪些库,其他库将被忽略,ignore-db与do-db只需选用其中一种
   report-host=dbsvr2               //报告给master的主机名或IP地址
  slave-net-timeout=60              // 出现网络中断时,重试超时(默认60秒)


 

 

本文出自 “linux网络服务搭建” 博客,谢绝转载!

mysql主从同步,布布扣,bubuko.com

mysql主从同步

上一篇:我的MYSQL学习心得(十一)


下一篇:分享一个SQLSERVER脚本