一、 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语句落地
二、准备工作
准备两台虚拟机,都安装上mysql并启动(安装参考之前mysql安装方法)
主库mysql启动:
从库mysql启动:
我们以2机器作为主库,1机器作为从库:
三、配置主
增加内容:
vim /etc/my.cnf
server-id=130
log_bin=amolinux2
修改完配置文件后,启动或者重启mysqld服务:
/etc/init.d/mysqld restart
使用ls -lt 查看一下是否生成文件:
库,作为测试数据:
mysqldump -uroot mysql > /tmp/mysql.sql 备份mysql这个库
mysql -uroot -e “create database amo” 创建新的amo库
mysql -uroot amo < /tmp/mysql.sql 还原amo库回mysql
创建用作同步数据的用户:
grant replication slave on *.* to 'repl'@slave_ip identified by '222222';
flush tables with read lock;
show master status;
四、配置从
修改my.cnf配置文件并增加内容:
vim /etc/my.cnf
server-id=132 要求和主不一样
修改完配置文件后,启动或者重启mysqld服务:
/etc/init.d/mysqld restart
登录到mysql“
mysql -uroot
把主上amo库同步到从上
可以先创建amo库:
然后把主上的/tmp/mysql.sql拷贝到从上,然后导入amo库:
mysql -uroot amo < /tmp/mysql.sql
stop slave;
实现主从同步的重新操作:
change master to master_host='172.16.17.71', master_user='repl', master_password='222222',master_log_file='amolinux2.000001', master_log_pos='659869';
再重新开启slave:
start slave;
检验是否配置成功主从:
show slave status\G
(这两行显示两个yes代表OK)
还要到主上执行 unlock tables
从上执行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:
先查看一下数据库有哪些表:
show tables;
我们以db这个表做实现:
select count(*) from db;
truncate table db;
登录到到从上再切换到amo:
再查看一下从上的数据库的表:
select count(*) from db;
主上继续drop table db;
然后查看一下主上的db表,已经没有了:
再到从上查看db表,发现也没有了:
主服务器上
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=