MySQL 读写分离环境搭建

这是小编之前一个零散的笔记,整理出来分享给大伙!
MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了 。受困于 linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举一个成功的例子,后面有时间再和大家分享下使用 Docker 搭建环境,那样就 100% 成功了 。
centos 安装 MySQL自己玩 Linux 松哥一般首选 Ubuntu,不过公司里边使用一般还是 CentOS 为主,因此这里松哥就以 CentOS 为例来向大家演示整个过程,今天这篇文章主要来看看 MySQL 的安装 。
环境:

  • CentOS7
  • MySQL5.7
具体的安装步骤如下:
  • 检查是否安装了 mariadb,如果已经安装了则卸载:
yum list installed | grep mariadb如果执行结果如下,表示已经安装了 mariadb,将之卸载:
mariadb-libs.x86_64 1:5.5.52-1.el7 @anaconda卸载命令如下:
yum -y remove mariadb*
  • 接下来下载官方提供的 rpm 包
如果 CentOS 上没有 wget 命令,首先通过如下命令安装 wget:
yum install wget然后执行如下操作下载 rpm 包:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
  • 下载完成后,安装rpm包:
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  • 检查 MySQL 的 yum 源是否安装成功:
yum repolist enabled | grep "mysql.*-community.*"执行结果如下表示安装成功:
MySQL 读写分离环境搭建

文章插图
 
  • 安装 MySQL
yum install mysql-server
  • 安装完成后,启动MySQL:
systemctl start mysqld.service
  • 停止MySQL:
systemctl stop mysqld.service
  • 登录 MySQL:
mysql -u root -p默认无密码 。有的版本有默认密码,查看默认密码,首先去 /etc/my.cnf 目录下查看 MySQL 的日志位置,然后打开日志文件,可以看到日志中有一个提示,生成了一个临时的默认密码,使用这个密码登录,登录成功后修改密码即可 。
  • 改密码
首先修改密码策略(这一步不是必须的,如果不修改密码策略,需要取一个比较复杂的密码,松哥这里简单起见,就修改下密码策略):
set global validate_password_policy=0;然后重置密码:
set password=password("123"); flush privileges;
  • 授权远程登录同方式一:
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;flush privileges;
  • 授权远程登录同方式二:
修改 mysql 库中的 user 表,将 root 用户的 Host 字段的值改为 %,然后重启 MySQL 即可 。
  • 关闭防火墙
  • MySQL 要能远程访问,还需要关闭防火墙:
systemctl stop firewalld.service禁止firewall开机启动:
systemctl disable firewalld.service主从搭建准备工作我这里有一张简单的图向大伙展示 MySQL 主从的工作方式:
MySQL 读写分离环境搭建

文章插图
 
这里,我们准备两台机器:
  • 主机:192.168.248.128
  • 从机:192.168.248.139
主机配置主机的配置就三个步骤,比较容易:
1.授权给从机服务器
GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.248.139' identified by '123';FLUSH PRIVILEGES;这里表示配置从机登录用户名为 rep1,密码为 123,并且必须从 192.168.248.139这个地址登录,登录成功之后可以操作任意库中的任意表 。其中,如果不需要限制登录地址,可以将 IP 地址更换为一个 % 。
2.修改主库配置文件,开启 binlog,并设置 server-id,每次修改配置文件后都要重启 MySQL 服务才会生效
vi /etc/my.cnf修改的文件内容如下:
[mysqld]log-bin=/var/lib/mysql/binlogserver-id=128binlog-do-db = cmdb如下图:
MySQL 读写分离环境搭建

文章插图
 
  • log-bin:同步的日志路径及文件名,一定注意这个目录要是 MySQL 有权限写入的(我这里是偷懒了,直接放在了下面那个datadir下面) 。
  • binlog-do-db:要同步的数据库名,当从机连上主机后,只有这里配置的数据库才会被同步,其他的不会被同步 。
  • server-id: MySQL 在主从环境下的唯一标志符,给个任意数字,注意不能和从机重复 。
配置完成后重启 MySQL 服务端:
systemctl restart mysqld3.查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复:


推荐阅读