一、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数据库,就说明主从复制效果成功

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐