mysql -主从配置

主从应用场景:
一 、 数据库备份 主机宕机,启动从保证服务正常运行
二 、 主的压力大,读取从的数据,减少主的压力

mysql 主从 :Replication 又叫AB复制。 A与B实时同步。 master 主 slave 从

mysql 主从基于binlog(二进制文件。记录一些日志)主上需要开机binlog才能进行主从。
主从过程:
①主将更改操作记录到binlog中。
②从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog(中继日志)里
③从根据relaylog里面的sql语句按顺序执行。
https://blog.csdn.net/qq_15037231/article/details/80534329 

什么是binlog
binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录。
2.binlog的作用

主从两台机器里有三个线程。
主上的log dump专门生成binlog的线程,他用来和从的 I/O 线程传递binlog
从上有两个线程,
一个是与主上的log dump 通信
一个是sql 线程 将relaylog里的sql 执行一遍

准备阶段
两台机器,皆有安装好的mysql服务,并且启动服务

配置主:

  1. 修改配置文件:my.cnf,增加server-id=130和log_bin=aminglinux1(产生文件的名称,可自定义)
    mysql -主从配置
    2.修改完配置文件后,启动或者重启mysqld服务
    3.之后可在/date/mysql下看见以aminglinux1的文件(不只一个)
    mysql -主从配置
    备注:
    000001 为二进制文件,之后会生成多个
    index 为索引,这个必须有
    以aminglinux 文件开头的,是主从的根本

4 du -sh /tmp/blog.sql #查看文件大小
mysql -主从配置
5.把mysql库备份并恢复成aming库,作为测试数据 mysqldump -uroot mysql > /tmp/mysql.sql #备份库
6.mysql -uroot -e “create database aming” mysql -uroot aming < /tmp/mysql.sql #创建库
7.恢复数据库
mysql -主从配置
8.创建用作数据同步的用户
操作步骤:
1.先进入数据库 mysql -uroot -p密码
2.
grant replication slave on . to 'repl'@'slave_ip' identified by 'password';
注释: grant replication slave 制定用户时,首先配置权限
. : 所有的库,所有的表
'repl' 指定给这个用户,@slave_ip 针对从的ip
mysql -主从配置
3.锁表,目的是不再读写数据
flush tables with read lock;
mysql -主从配置
4。show master status;
mysql -主从配置
记录这两个值。
5.先退出数据库。
6.备份所有库到一个目录下/tmp下

从上操作:
1.vi /etc/my.cnf
2.增加 server-id=自定义 要求和主不一样
mysql -主从配置
3.重启服务 service mysqld restart
4.将主上的数据库复制到存上。
scp 主ip :/tmp/*.sql /tmp/
mysql -主从配置
5.连接数据库
mysql -uroot
备注:报错,没有找到这条命令。
解决办法:
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。
mysql -主从配置
6。登陆 mysql -uroot
创建三个库
create database aming;
mysql -主从配置
quit
7.恢复数据库
mysql -uroot blog < /tmp/blog.sql
8.查看data目录下,是否和主一致
ls /data/mysql
mysql -主从配置
9实先主从
登陆从数据库
stop slave;
实现主从同步:配置mysql主从复制时,在从机上需要进行CHANGE MASTER TO操作,以确定需要同步的主机IP,用户名,密码,binlog文件,binlog位置等信息。
备注:
MASTER_HOST 与 MASTER_PORT:
分别代表master主机名(或IP地址)及mysql实例端口号。
master_user='repl :用户
master_password='主密码'
change master to master_host='主ip',master_port=3306; master_user='repl', master_password='主密码', master_log_file='上述需要记录的名称', master_log_pos=上述需要记录的数值,;
例如:
change master to master_host='192.168.1.63', master_user='repl', master_password='ljy5157088', master_log_file='zhurizhi1.000003', master_log_pos=120;
mysql -主从配置
再执行start slave;
mysql -主从配置
10,判断主从配置成功
show slave status\G
mysql -主从配置
查看是否为yes,则为成功
mysql -主从配置
是否如下图所示;
从上执行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:
mysql -主从配置
11.去主上,恢复写操作。
unlock tables;
mysql -主从配置
没出现两个yes时。
注意:关闭firewalld,selinux.
仅同步指定库 那就是只同步你指定的库
忽略指定库 那就是同步其他库
12测试主从同步
vi /etc/my.cnf
主服务器上 binlog-do-db= //仅同步指定的库 多个库可以用英文逗号分隔。
binlog-ignore-db= //忽略指

猜你喜欢

转载自blog.51cto.com/13451715/2331162