MySQL优化-分库

在海量数据项目中,查询的业务一般能占到百分之70以上(查询效率基本能体现项目的效率),增删改业务较少但是往往比较耗时,为了避免增删改来拉低查询效率,通常会采用多个数据库来完成负载高并发。这也是MySQL优化的一种。
分库的主要思路是:一主多从,指的是将数据库分为一个主库,多个从库,从库通过读取主库的二进制文件,并将数据复制到自身的库中。在实际项目中,查询时操作从库,以减轻MySQL的压力,涉及到增删改操作时操作主库,主库数据变动,从库的数据也会改变。
在这里插入图片描述
了解了主库与从库的关系,我们来配置主库与从库

  1. 安装两台虚拟机,在虚拟机上搭建MySQL并配置主从库(虚拟机的安装不做讲解)
  2. 下载MySQL在Linux下的安装包
  3. 安装MySQL
解压:  tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
更名:  mv mysql-5.6.33-linux-glibc2.5-x86_64 mysql
移动:  mv mysql /usr/local
切换:  cd /usr/local/mysql/
添加mysql组:   groupadd mysql
添加mysql用户:   useradd -r -g mysql mysql
修改当前目录拥有者为mysql用户:  chown -R mysql:mysql ./
安装perl跟perl-devel:   yum -y install perl perl-devel
安装perl-Data-Dumper :   yum install -y perl-Data-Dumper
安装数据库: ./scripts/mysql_install_db --user=mysql
修改当前目录拥有者为root用户: chown -R root:root ./
修改当前data目录拥有者为mysql用户:  chown -R mysql:mysql data
添加开机启动:  cp support-files/mysql.server /etc/init.d/mysql
新建文件夹:  mkdir /var/log/mariadb/
授权:   chmod 700 /var/log/mariadb/
启动mysql :  service mysql start
建立软连接:    ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
              ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
修改mysql的root用户密码,root初始密码为空的:
    ./bin/mysqladmin -u root password 'root'
进入mysql:   mysql -uroot -p
给root用户授权任何主机可以访问: 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
grant all privileges on *.* to 'root'@'%' identified by 'root';
刷新授权: FLUSH PRIVILEGES;
退出mysql:   exit
安装\关闭防火墙: 
yum install firewalld
systemctl stop firewalld.service

打开本机的数据库,使用IP测试连接是否成功

主从配置

1、主库配置
进入虚拟机,编辑:vim /etc/my.cnf
在[mysqld]下面加添加如下代码

server-id=1   //每台MySQLid唯一
//二进制日志索引的配置
log-bin=master-bin  
log-bin-index=master-bin.index

配置完成后重启MySQL,进入MySQL
因为从服务器需要来读取主服务器的二进制日志,所以需要创建用户指定权限

//创建用户:
create user slave;
grant replication slave on *.* to 'slave'@'172.18.34.14' identified by 'root';
grant replication slave on *.* to 'slave'@'172.18.34.16' identified by 'root';
//刷新
flush privileges;
//查看主库状态: 
show master status;

在这里插入图片描述
2、从库配置
在第二台虚拟机进入 vim /etc/my.cnf 编辑

server-id=2 //
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

在这里插入图片描述
同样的重启MySQL,让后进入MySQL
配置从服务器的主从关系

change master to master_host='172.18.34.6',   //主库的IP
master_port=3306,
master_user='slave',  //之前主机设置的有复写权限的用户名
master_password='root',
master_log_file='master-bin.000001',   //主机show master status;时的file名
master_log_pos=0;  //开始位置。第一次从0开始
start slave;  //开启从服务器

如果有更多的从服务器,只需将server-id设置为不同即可,其他操作相同
最后在主库创建一个测试数据库,在从库中可以查看到就代表配置成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值