大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。今天总结一下利用MySQL主从配置,实现读写分离,减轻数据库压力。

优点:方便做数据的热备份;架构扩展更容易;读写分离,使数据库能支撑更大的并发

 


部署主从数据库

准备两台虚拟机:mysql1、mysql2 、网络配置、yum源

修改主机名:hostnamectl set-hostname mysql1

刷新shell命令行: bash

查看主机信息:hostnamectl

关闭防火墙和selinux服务:systemctl stop firewalld ; setenforce 0

配置/etc/hosts 文件 (mysql2)      

一、安装数据库服务、启动、并设置开机自动启动 (同mysql2)

 yum -y install mariadb mariadb-server

 systemctl start/enable mariadb

二、初始化数据库前必须重启数据库   (同mysql2)

 mysql_secure_installation

三、修改mysql1节点的数据库配置文件/etc/my.cnf、重启数据库服务,并进入数据库(同mysql2)

修改、并加入三行: vi /etc/my.cnf   

 

重启数据库: systemctl restart mariadb

登陆: mysql -uroot -p000000

四、在mysql1节点,授权在任何客户端机器上可以以root用户登录到数据库,然后在主节点上创建一个user用户连接节点mysql2,并赋予从节点同步主节点数据库的权限

grant all privileges on *.* to root@'%' identified by '000000';

grant replication slave on *.* to 'user'@'从节点ip地址' identified by '000000';

将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里:flush privileges;

显示主机状态:show master status; 

 

五、在从节点mysql2上登录MariaDB数据库,配置从节点连接主节点的连接信息。

 change master to master_host='mysql1',master_user='user',master_password='000000';

 

六、配置完毕主从数据库之间的连接信息之后,开启从节点服务

start slave;

show slave status\G

 看到两个yes则表示成功;