MySQL主从复制

MySQL主从复制

  • 前言
  • MySQL主从复制
    • 准备工作
    • 配置详情
      • 1.Master数据库配置
      • 2.Slave数据库配置
      • 3.验证主从复制效果
  • 结尾语

前言

最近在学习了Mysql主从复制+Mycat读写分离后,一直想写一遍关于自己的使用心得,开始只写了Mycat的读写分离使用,但是总感觉缺少点什么,就像事情制作了一半的感觉,所以今天就将前面说的Mysql中从复制补上吧,也算是对这部分的总结。

MySQL主从复制

准备工作

在开始MySQL主从复制之前,需要准备好以下几项工作:
工具

环境/工具 说明
MySQL 对于版本没有特殊要求,推荐使用5.7.X
VMware 这个一个虚拟环境工具,也可以使用其他的工具,这里不做限制
Linux系统 在虚拟机上安装的操作系统
服务器1 安装MySQL,用于做主数据库
服务器2 安装MySQL,用于做从数据库

说明:这里不对上述的工具安装做介绍,如果安装疑问,请自行百度搜索。

配置详情

主数据库服务器:MySQL-Master,从数据库服务器:MySQL-Slave,均已安装MySQL,并且无应用数据。

1.Master数据库配置

Master数据库上进行设置,修改配置文件/etc/my.cnf,添加如下配置
设置:log-bin=mysql-bin
用yum安装的mysql数据库/etc/my.cnf文件只是满足基本要求,mysql主从时,查看master日志时没有数据显示,因此在/etc/my.cnf文件中添加一行
设置:server-id = 1
此值不能和从数据库的一样
设置:binlog-ignore-db=mysql
表示哪些库不同步,每个不同步的库写一行
MySQL主从复制_第1张图片

配置完成后重新启动Master数据库。
MySQL主从复制_第2张图片

进入Master数据库安装目录 /usr/local/mysql/bin/

# cd /usr/local/mysql/bin/	

执行以下命令登录MySQL数据库

# mysql -uroot -p123456

-u:数据库用户名
-p:数据库密码

MySQL主从复制_第3张图片
执行以下命令查看Master的状态

mysql> show master status;

记录File的mysql-bin.000006与 Position的154,等会要用到。
MySQL主从复制_第4张图片
分配一个数据库账号给Slave从数据库 Server,使从服务器能够访问Master数据库;

grant replication slave on *.* to 'slave'@'%' identified by '123456'

查询mysql 数据库中的user表,查看已分配的用户权限;select * from user;
MySQL主从复制_第5张图片

2.Slave数据库配置

从服务器Slave server数据库配置, 修改配置文件/etc/my.cnf,添加如下配置

# vi /etc/my.cnf

设置:server-id=2
此值不能和主数据库的一样,唯一
设置:replicate-do-db = test
可以指定要复制的库
设置:replicate-ignore-db = mysql
忽略的库
MySQL主从复制_第6张图片
配置完成重新启动Slave数据库。
MySQL主从复制_第7张图片
进入Salve数据库安装目录 /usr/local/mysql/bin/

# cd /usr/local/mysql/bin/

执行以下命令登陆本地数据库:

# mysql -uroot -p123456

MySQL主从复制_第8张图片
执行同步SQL语句

mysql> CHANGE MASTER TO 
    -> Master_Host=192.168.xxx.xxx,
    -> Master_User=slave,
    -> Master_Password=123456,
    -> Master_Port=3306,
    -> Master_Log_File=mysql-bin.0000006,
    -> Master_Log_Pos=154;

启动Slave同步进程

mysql> start slave;

主从同步检查:

mysql> show slave status\G

MySQL主从复制_第9张图片
特别注意:如果Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,表明成功了,其中任意一个如果不是YES都说明同步失败。

3.验证主从复制效果

在Master服务器test数据库上创建一个表t_class,查看是否在Slave从服务器test数据库中自动创建t_class;
执行建表SQL

mysql> create table t_class(id int ,name varchar(16));

分别查看master数据库和slave数据库
MySQL主从复制_第10张图片
MySQL主从复制_第11张图片
发现master和slave数据库中都已经有了t_class这张表,这说明此时MySQL主从复制已经生效,大功告成。

结尾语

由于之前第一次使用MySQL主从,不小心对slave数据库进行了插入数据,结果导致,两个数据库立刻出现了不同步的现象,再次特别说明以下,主从复制是将master数据库的数据复制到slave数据库上,所以如果再slave数据库做了任何的修改都会导致两个数据库出现不同步的现象,如果出现不同步的情况,需要自行解决同步问题。

你可能感兴趣的:(MySQL主从复制)