大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如: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则表示成功;