一、 MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大致有3个步骤:
 1)主将更改操作记录到binlog里
 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
 3)从根据relaylog里面的sql语句按顺序执行
 主上有一个log dump线程,用来和从的I/O线程传递binlog
 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地


promthues 监控mysql主从 mysql主从状态查询_mysql


二、准备工作

准备两台虚拟机,都安装上mysql并启动(安装参考之前mysql安装方法)

主库mysql启动:

promthues 监控mysql主从 mysql主从状态查询_配置文件_02

从库mysql启动:

promthues 监控mysql主从 mysql主从状态查询_mysql_03


我们以2机器作为主库,1机器作为从库:

promthues 监控mysql主从 mysql主从状态查询_SQL_04


三、配置主

增加内容:

vim  /etc/my.cnf

server-id=130

log_bin=amolinux2

promthues 监控mysql主从 mysql主从状态查询_配置文件_05

 修改完配置文件后,启动或者重启mysqld服务:

/etc/init.d/mysqld restart

promthues 监控mysql主从 mysql主从状态查询_mysql_06


使用ls -lt 查看一下是否生成文件:

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_07


库,作为测试数据:

 mysqldump -uroot mysql > /tmp/mysql.sql     备份mysql这个库
 mysql -uroot -e “create database amo”           创建新的amo库
 mysql -uroot amo < /tmp/mysql.sql                  还原amo库回mysql

promthues 监控mysql主从 mysql主从状态查询_配置文件_08

promthues 监控mysql主从 mysql主从状态查询_配置文件_09

 创建用作同步数据的用户:
 grant replication slave on *.* to 'repl'@slave_ip identified by '222222';   
 flush tables with read lock;      
 show master status;                  

promthues 监控mysql主从 mysql主从状态查询_mysql_10


四、配置从

修改my.cnf配置文件并增加内容:

vim  /etc/my.cnf

server-id=132           要求和主不一样

promthues 监控mysql主从 mysql主从状态查询_配置文件_11

 

修改完配置文件后,启动或者重启mysqld服务:

/etc/init.d/mysqld restart

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_12


登录到mysql“

mysql -uroot

promthues 监控mysql主从 mysql主从状态查询_mysql_13

 把主上amo库同步到从上
 可以先创建amo库:

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_14


然后把主上的/tmp/mysql.sql拷贝到从上,然后导入amo库:

mysql -uroot amo < /tmp/mysql.sql

 

promthues 监控mysql主从 mysql主从状态查询_SQL_15


 stop slave;

promthues 监控mysql主从 mysql主从状态查询_mysql_16


实现主从同步的重新操作:
change master to master_host='172.16.17.71', master_user='repl', master_password='222222',master_log_file='amolinux2.000001', master_log_pos='659869';

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_17


再重新开启slave:

start slave;

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_18


检验是否配置成功主从:

show slave status\G

(这两行显示两个yes代表OK)

promthues 监控mysql主从 mysql主从状态查询_mysql_19

 还要到主上执行 unlock tables

promthues 监控mysql主从 mysql主从状态查询_配置文件_20


从上执行mysql -uroot
 show slave stauts\G

 看是否有:
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes

 还需关注:
 Seconds_Behind_Master: 0  //为主从延迟的时间
 Last_IO_Errno: 0
 Last_IO_Error:
 Last_SQL_Errno: 0
 Last_SQL_Error:


五、测试主从同步

登录到到主上再切换到amo:

promthues 监控mysql主从 mysql主从状态查询_SQL_21


先查看一下数据库有哪些表:

show tables;

promthues 监控mysql主从 mysql主从状态查询_mysql_22


我们以db这个表做实现:
 select count(*) from db;
 truncate table db;

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_23

 登录到到从上再切换到amo:

promthues 监控mysql主从 mysql主从状态查询_mysql_24


再查看一下从上的数据库的表:

promthues 监控mysql主从 mysql主从状态查询_mysql_25

 select count(*) from db;

promthues 监控mysql主从 mysql主从状态查询_mysql_26

 主上继续drop table db;

promthues 监控mysql主从 mysql主从状态查询_mysql_27


然后查看一下主上的db表,已经没有了:

promthues 监控mysql主从 mysql主从状态查询_promthues 监控mysql主从_28

 再到从上查看db表,发现也没有了:

promthues 监控mysql主从 mysql主从状态查询_mysql_29


主服务器上
binlog-do-db=      //仅同步指定的库
binlog-ignore-db= //忽略指定库
从服务器上
replicate_do_db=
replicate_ignore_db=
replicate_do_table=
replicate_ignore_table=
replicate_wild_do_table=   //如aming.%, 支持通配符%
replicate_wild_ignore_table=