第十七章、mysql主从配置

17.1 MySQL主从介绍

17.2 准备工作

17.3 配置主

17.4 配置从

17.5 测试主从同步

 

17.1 MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的

 

MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

 

主从过程大致有3个步骤

  • 1)主将更改操作记录到binlog里

  • 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里

  • 3)从根据relaylog里面的sql语句按顺序执行

 

主从共有3个线程:

  • 主上有一个log dump线程,用来和从的I/O线程传递binlog

  • 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句执行

 

主从原理图

当有写入操作时,会记录到Master的binlog里面,主上(Master)的log dump 线程会和从上(Slave)的I/O线程相互通信;从上将binlog信息读到Slave,生成一个Relaylog中继日志;从上的SQL线程将Relaylog里面的sql语句执行

 

主从应用场景:

1、做数据备份;主机器宕机,可以启动从机器,给web、客户端提供服务。

2、不仅做数据备份,还要作为读库,让web、客户端从从机器读取数据,减缓主机器读取压力

 

 

17.2 准备工作

准备两台机器,都要有mysql服务

###注意,进行主从配置同步操作时一定要保持两边数据一致

 

17.3 配置主

一、安装mysql

 

二、修改my.cnf,增加server-id=150和log_bin=xin1

vim /etc/my.cnf

server-id=150

log_bin=xin2

 

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

/etc/init.d/mysqld restart

 

四、把mysql库备份并恢复成xin库,作为测试数据

mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

mysql -uroot  -p123456 -e "create database xin"

mysql -uroot -p123456 xin < /tmp/mysql.sql

 

五、创建用作同步数据的用户

grant replication slave on *.* to 'repl'@slave_ip identified by 'password';

#slave_ip为从机器的ip

grant replication slave on *.* to 'repl'@192.168.233.129 identified by '123456';

 

flush tables with read lock;    

#锁表,防止表继续写入

 

show master status;

#查看binlog的位置和数值,需要记住,待会要用到

 

 

17.4 配置从

一、安装mysql

 

 

二、编辑my.cnf,配置server-id=129,(要求和主上不一样,且从上没有binlog日志)

vim /etc/my.cnf

server-id=129

 

 

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

/etc/init.d/mysqld restart

 

四、把主上xin库同步到从上

scp  192.168.233.150:/tmp/*.sql  /tmp/

[root@xinlinux-01 ~]# scp  192.168.233.150:/tmp/*.sql  /tmp/

root@192.168.233.150's password:

xin.sql                                        100%  649KB   8.6MB/s   00:00

zrlog.sql                                      100% 9863     1.9MB/s   00:00

 

五、可以先创建xin库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入xin库

mysql -uroot

create database xin;

create database zrlog;

mysql -uroot xin <  /tmp/xin.sql

mysql -uroot zrlog <  /tmp/zrlog.sql

 

六、实现主从同步

mysql -uroot 

stop slave;

 

change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx;

#master_host为主机器ip,msaster_pasword为主机器密码,master_log_file为binlog日志名称,master_log_pos为binlog日志数值

 

change master to master_host='192.168.233.150',master_user='repl',master_password='123456',master_log_file='xin2.000002',master_log_pos=665019;

 

 

start slave;

 

#判定主从是否配置成功

show  slave status\G

 

查看主从同步是否正常

1、查看Slave_IO_Running和Slave_SQL_Running是否为yes

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

2、关注是否有error信息

Seconds_Behind_Master: 0  #为主从延迟的时间

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

 

七、还要到主上执行 

unlock tables;        #解锁表

 

 

17.5 测试主从同步

my.cnf配置文件的几个配置参数(主从机器都可配置

主服务器上

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=  #忽略指定库,可用通配符%(常用)

 

 

测试主从

主上操作

 mysql -uroot  -p123456;

use xin;

show tables;

select count(*)  db;

mysql> select count(*)  db;

+----+

| db |

+----+

|  1 |

+----+

1 row in set (0.06 sec)

 

从上操作

 mysql -uroot

use xin;

select count(*)  db;

mysql> select count(*)  db;

+----+

| db |

+----+

|  1 |

+----+

 

对比可知主从的数据完全一样,限制开始对主机器的数据进行操作,查看从机器是否同步操作的数据

主上操作清空db表数据

truncate table db;

select * from  db;

mysql> select * from  db;

Empty set (0.00 sec)

 

从上操作

select * from  db;

mysql> select * from  db;

Empty set (0.00 sec)

#发现从机器的db表数据清空了

 

主上继续操作

drop table db;

 

从上查看wp_users表

select count(*)  db;

 

如果不小心对从机器进行的误删等操作导致主从机器不一致:

1、可以先stop slave,再start slave;查看slave show slave status 两个yes是否在;

 

2、如果还是不行,就需要在从机器重新配置主从同步(前提是要保持数据一致)

stop slave;

 

change master to master_host='', master_user='repl', msaster_pasword='', master_log_file='', master_log_pos=xx;

 

start slave;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值