Mysql主从复制

Posted yangk1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql主从复制相关的知识,希望对你有一定的参考价值。

mysql环境准备

#下载Mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

如果报错: -bash: wget: 未找到命令
安装插件  yum -y install wget

安装mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装Mysql
sudo yum install mysql-server
一直y下去就可以了

技术图片
配置Mysql

mysql -u root

报错。原因:原因是/var/lib/mysql的访问权限问题。
技术图片

#授权
chown root /var/lib/mysql/

#重启
service mysqld restart

#再次登录并修改密码
mysql -u root
use mysql;
update user set password=password('123456') where user='root';
exit;

#再次重启,授权root可以远程连接
service mysqld restart
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
service mysqld restart

Mysql主从复制原理

==MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现。其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我在Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。从库生成两个线程,一个1/0线程、一.个SQL线程。i/o线程去请求主库的binlog,并将得到的binlog日志写到relay log (中继日志)文件中。主库会生成一个log dump线程,用来给从库i/o线程传binlog;SQL线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。==

主从复制搭建

配置主节点

vi /etc/my.cnf
server_id=131 ###服务器id
log-bin=mysql-bin   ###开启日志文件
#保存之后重启
service mysqld restart

技术图片

#查询对应配置文件中的server_id 说明已经配置成功
show variables like '%server_id%';
#看到同步的文件,和行数 说明已经配置成功。
show master status;

技术图片
技术图片
从节点配置

vi /etc/my.cnf
server_id=132  ###从服务器server_id
log-bin=mysql-bin  ###日志文件同步方式
binlog_do_db=test,test1   ###同步数据库,多个以逗号分隔
service mysqld restart

技术图片
从节点同步主节点

master_host:主节点IP
master_user :主节点账号
master_password:密码
#这两个参数的配置是在主节点通过show master status;查询到的
master_log_file
master_log_pos

#执行sql
CHANGE MASTER TO master_host = '192.168.100.131',
master_user = 'root',
master_password = 'root',
master_log_file = 'mysql-bin.000001',
master_log_pos = 120;

因为从节点的服务器是直接复制的主节点,所有可能会出现一个错误
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.。是因为UUID重复了.删除子节点的auto.cnf就可以了
解决办法:
#找到Mysql的位置
cat  /etc/my.cnf
cd /var/lib/mysql
rm -rf auto.cnf
service mysqld restart

技术图片
技术图片

#开始同步
start slave
#查看同步状态
SHOW SLAVE STATUS

技术图片

效果演示

在主节点创建test数据库,在创建一个表,子节点会自动同步
技术图片
刷新一下从节点
技术图片
技术图片

以上是关于Mysql主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中主从复制不同步?

MySQL主从复制和读写分离

MySQL主从复制和读写分离

Linux----------mysql主从复制和基于GTID主从复制

MySQL主从复制

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制