您好,欢迎访问一九零五行业门户网

MySQL主从服务器的原理和设置

一 主从配置的原理 mysql的replication是一个异步的复制过程,从一个mysql instance(master)复制到另一个mysql instance(sla
一 主从配置的原理
    mysql的replication是一个异步的复制过程,从一个mysql instance(master)复制到另一个mysql instance(slave), 在master与slave之间的整个复制过程主要由三个线程完成,分别为master端得io线程和slave端得io线程和sql线程。整
个过程如下:
    1 slave上的io线程连接上master,,并请求从指定日志的指定位置之后的日志内容
    2 master收到来自slave的io线程请求后,通过master上的io线程根据请求信息读取日志信息返回给slave端io线程。
      除了日志所包含的信息之外,还包含本次返回信息在master端得binary log文件的名称以及位置
    3 slave的io线程接收到信息后,将接收到的日志内容依次写到slave端得relaylog文件末尾,并读取master端得binary
      log文件名和位置记录到master-info中,以便下次的io请求
    4 slave的sql线程检测到relay log中有新增内容后,马上解析可执行的sql语句,并在本机上执行
二 设置过程
1 首先准备两台服务器:主服务器wwwlinuxidc.com 从服务器
2 在主数据库服务器中为从服务器添加一个拥有访问主库的用户,其命令为:
 grant replication slave on *.* to ‘username’@’’ identified by 'password'
  注: username是你创建的可以访问主库的用户名,ip为从机ip,password为用户登录密码
      添加后在从服务器上用 mysql -hwwwlinuxidc.com -uusername -ppassword 来测试下是否可以访问主数据库
3 修改主服务器的配置文件
   vi /etc/my.cnf
   server-id = 1  ##数据库服务器都有唯一的server-id,通常主服务器制定为1,默认的配置文件中已经存在,特别注意从服务器配置中要将此行注释掉
   log-bin=mysql-bin ##mysql进行主从复制是通过二进制的日志文件来进行的,所以必须开启mysql的日志功能
   以上两行配置都已经存在,还需额外添加如下配置:
   log_bin = /home/mysql/mysql/log/mysql-bin.log #二进制文件存放目录,可自行定义,但需注意目录有写权限
   read-only = 0 #主机读写都可以
   binlog-do-db = test1 #设定同步的数据库,多库可以多行设置
   binlog-do-db = test2
   binlog-ignore-db = test3 #设定不用同步的数据库,多库可以多行设置
   binlog-ingore-db = test4 17jquery.com
4 修改从服务器的配置文件
   vi /etc/my.cnf
   首先找到server-id = 1 这行,用#将这行注释掉,不然会和主机冲突,然后添加
   server-id = 2
   replicate-do-db = test1 #允许同步的数据库,多库可以多行设置
   replicate-do-db = test2
   replicate-ignore-db = test3 #不需同步的数据库,多库可以多行设置
   replicate-ignore-db = test4
   master-connect-retry=30
   master-host= wwwlinuxidc.com #主服务器地址
   master-user=username #刚刚添加访问主服务器的用户名
   master-password=password #主机密码
   master-port=3306
   read-only=1 #只允许读操作(连接用户不能有super权限,否则无效)
5 重启主服务器和从服务器
  在主服务器上登录mysql 输入
show master status\g 
可查看主服务器状态
  在从服务器上登录
mysql start slave
(启动从机) 然后show slave  status \g ,如果以下两项都为yes即是从机配置成功。
     slave_io_running: yes
     slave_sql_running: yes
从数据库服务器的通常操作命令有:
  start slave;  ####启动复制线程
  stop slave;   ####停止复制线程
  reset slave;  ####重置复制线程
  change master to; ###动态改变到主服务器的配置 如change master to master_user='username';
其它类似信息

推荐信息