MySQL主从复制(Master-Slave)实践

下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):mysql

用途及条件 sql

  mysql主从复制用途
  • 实时灾备,用于故障切换
  • 读写分离,提供查询服务
  • 备份,避免影响业务
  主从部署必要条件:
  • 主库开启binlog日志(设置log-bin参数)
  • 主从server-id不一样
  • 从库服务器能连通主库

原理数据库

 mysql主从复制原理服务器

 从库生成两个线程,一个I/O线程,一个SQL线程;网络

  i/o线程去请求主库 的binlog,并将获得的binlog日志写到relay log(中继日志) 文件中;
  主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
 SQL 线程,会读取relay log文件中的日志,并解析成具体操做,来实现主从的操做一致,而最终数据一致;
 
实现MySQL主从复制须要进行的配置:
 实现步骤:
  1.首先修改mysql的配置文件,使其支持二进制日志功能。
    打开主服务器的mysql配置文件:my.conf
    代码:# vi /etc/my.cnf
    加入以下三行代码:

  参数解释:spa

     log-bin=mysql-bin  //将mysql二进制日志取名为mysql-bin线程

       binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别很少作解释,这里使用mixed3d

       server-id=101 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id rest

  配置完成,:wq 保存,重启mysql日志

  重启mysql命令:# service mysqld restart

  一样的,进入从服务器,配置从服务器的my.cnf,重复步骤1便可,

  惟一的区别是,server-id要改为从服务器的ip尾位,即server-id=105;其余两项是同样的,保存,并重启mySQL;

注:mysql的配置文件路径查询方式:

  一、Windows下MySQL的配置文件是my.ini,通常会在安装目录的根目录。

  二、Linux下MySQL的配置文件是my.cnf,通常会放在/etc/my.cnf,/etc/mysql/my.cnf。若是找不到,能够用find命令查找。

  三、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的

查询配置文件路径方式:

  

 2.在主服务器上为从服务器分配一个帐号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件。

  进入主服务器的mysql界面,

   命令: # mysql -u root -p 111111     //我这里mysql帐号是root,密码是111111

   在mysql操做界面下,输入下面一行命令:

   GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111'; 

 3.查看主服务器BIN日志的信息(执行完以后记录下这两值,而后在配置完从服务器以前不要对主服务器进行任何操做,由于每次操做数据库时这两值会发生改变).

 

 4.设置从服务器

   进入从服务器mysql

  命令: # mysql -u root -p111111

关闭slave(若是你之前配置过主从的话,必定要先关闭)

命令:stop slave;

 

开始配置:

  输入下面代码便可:

 

参数解释:MASTER_HOST  :  设置要链接的主服务器的ip地址

       MASTER_USER  :  设置要链接的主服务器的用户名

       MASTER_PASSWORD  :  设置要链接的主服务器的密码

       MASTER_LOG_FILE  :  设置要链接的主服务器的bin日志的日志名称,即第3步获得的信息

       MASTER_LOG_POS  :  设置要链接的主服务器的bin日志的记录位置,即第3步获得的信息,(这里注意,最后一项不须要加引号。不然配置失败)

先在从服务器配置完成,启动从服务器:

  命令: start slave;

5.查看是否配置成功:

  命令: show slave status;

 

上面两项均为yes,说明配置成功

 

 master开启二进制日志后默认记录全部库全部表的操做,能够经过配置来指定只记录指定的数据库甚至指定的表的操做,具体在mysql配置文件的[mysqld]可添加修改以下选项: 

# 不一样步哪些数据库 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema # 只同步哪些数据库,除此以外,其余不一样步 binlog-do-db = game
相关文章
相关标签/搜索