Linux-MySQL主从复制
一、Linux下安装MySQL1、先检查系统是否有MySQLrpm -qa | grep mysql2、下载MySQL的repo源先切换到/usr/local路径下wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm3、安装mysql-community-release-el7-5.noarch.rpmsudo rp
一、Linux下安装MySQL
1、先检查系统是否有MySQL
rpm -qa | grep mysql
2、下载MySQL的repo源
先切换到/usr/local路径下
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
3、安装mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
4、安装MySQL
yum install mysql-server
5、登录并重置MySQL密码
mysql -u root
报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
因为/var/lib/mysql/mysql.sock没有访问权限
授权
chown root /var/lib/mysql
6、重启服务
service mysqld restart
7、修改密码
use mysql;
update user set password=password('root') where user='root';
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
重启服务
service mysqld restart
8、验证登录MySQL
mysql -u root -p
9、使用Navicat连接
关闭防火墙
systemctl stop firewalld.service
二、主从复制
1、功能介绍
在MySQL集群环境中,可以分为主节点与从节点,通过主从复制可以实现数据备份、故障转移、MySQL集群、高可用、读写分离等。
2、主从复制原理
MySQL的主从复制时MySQL数据库本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件实现的,而是借助binglog日志文件里面的MySQL命令实现的主从复制,可以理解为用户在Master节点执行了一条SQL命令,那么在Salve节点同样会执行一遍,从而达到主从复制的效果。
(1)从库生成两个线程,一个I/O线程,一个SQL线程;
(2)I/O线程去请求主库的binlog,并将得到的binlog日志写到 relay log(中继日志)文件中;
(3)主库会生成一个log dump 线程,用来给从库 I/O线程传binlog;
(4)SQL线程,会读取relay log 文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
3、主从复制配置
主服务器节点
vi /etc/my.cnf 新增一下内容
server_id = 128 ###服务器id 最好写服务器ip最后一个
log-bin=mysql-bin ###开启日志文件
重启MySQL服务 service mysqld restart
验证是否配置成功?
查询配置的server_id:
show variables like '%server_id%';
查询主节点的二进制执行文件:
show master status;
如下图就表示配置成功:
查询主节点binlog文件时,发现有乱码。这时需要修改mysql配置
vi /etc/my.cnf 新增
chacter_set_server= utf8
重启服务 service mysql restart
从服务器节点
1、克隆主服务器节点
vi /etc/my.cnf 新增一下内容
server_id = 129 ###服务器id 最好写服务器ip最后一个
log-bin=mysql-bin ###开启日志文件
binlog_do_db=test # 同步数据库
重启MySQL服务 service mysqld restart
配置从节点同步主节点数据
###从节点同步主节点数据
change master to master_host = '192.168.168.128',master_user='root',master_password='root',
master_log_file='mysql-bin.000001',master_log_pos=120
master_log_file :主节点同步的文件名称
master_log_pos:主节点同步数据的行数
###开启同步
start slave;
###查询同步状态
SHOW SLAVE STATUS ;
查询同步状态会出现以下问题:
Slave_IO_Running 状态是NO,错误日志
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产生了重复
解决办法:
查询MySQL配置文件
cat /etc/my.cnf
其中datadir=/var/lib/mysql 目录中存放着UUID
主节点和从节点都进入/var/lib/mysql 这个目录
cd /var/lib/mysql
查询目录下的文件
ls
UUID存放的文件名称是auto.cnf
cat auto.cnf
可以发现主从节点的server-id是相同的
删除从节点auto.cnf
rm -rf auto.cnf
重启从节点服务 service mysql restart
从库查询同步状态
SHOW SLAVE STATUS ;
发现Slave_IO_Running = Yes
验证主从复制是否成功?
在主节点数据库创建test数据库(因为从节点配置binlog_do_db=test )
刷新从节点数据库,如果可以看到test数据库,就说明主从复制效果成功
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)