Mysql优化三(读写分离、主从复制)

主服务器负责写入数据,从服务器复制主服务器数据。

主从复制:从服务器复制主服务器数据

读写分离:不同的服务器,进行不同的操作,专门写的服务器,专门读的服务器,把读写操作,分配不同的服务器上。

主从复制使用范围:

  1. 主从复制之后,从服务器数据备份了主服务器的数据,所以从服务器可以作为备份数据的服务器
  2. 主从复制之后,为了实现业务上的读写分离操作

从服务器多于主服务器

mysql实现主从复制,需要开启二进制日志文件,从服务器通过日志文件和主从服务器赋予的服务器同步的操作权限,进行同步复制数据。

windows下配置

my.ini 配置进行修改

Mysql优化三(读写分离、主从复制)_第1张图片Mysql优化三(读写分离、主从复制)_第2张图片

修改完成后重启mysql

查看配置重启之后,生成的日志文件

Mysql优化三(读写分离、主从复制)_第3张图片

linux下配置

Mysql优化三(读写分离、主从复制)_第4张图片

Mysql优化三(读写分离、主从复制)_第5张图片

关于虚拟机网卡 

Mysql优化三(读写分离、主从复制)_第6张图片

桥接模式:直接把虚拟机的网络接物理网络里,和真实电脑在同一个IP段

NAT共享模式:在本地的电脑,建立一个局域网,虚拟机和真实网络不在一个IP段,本地电脑可以连接虚拟机,物理网络里的其他电脑不能够连接

Mysql优化三(读写分离、主从复制)_第7张图片

 这步骤会出现一些问题  出现下面的问题时候 

Mysql优化三(读写分离、主从复制)_第8张图片

需要把这两个服务打开  我在这浪费了好长时间!! 

Mysql优化三(读写分离、主从复制)_第9张图片

mysql增加用户和权限

正常运行环境中,数据库用户是有对应权限   

①root用户权限最高,但是只允许本地登录

②如果需要进行远程登录(不在同一台主机里)可以创建新的用户,而不应该直接使用root用户

③特定的用户操作特定的数据库,一般一个业务使用一个数据库

语法:

grant all[权限] on 数据库.数据表 to '用户名称'@'主机名或者ip地址' identified by '用户密码';

 1.创建可以远程登录的用户

Mysql优化三(读写分离、主从复制)_第10张图片

登录命令:

-h 主机的ip地址   -u用户名称   -p用户密码

可以通过linux下的mysql客户端命令行测试登录win下的mysql

Mysql优化三(读写分离、主从复制)_第11张图片

主从复制实施步骤

主从复制机制,需要最少两台服务器

主服务器  win   192.168.1.104

从服务器  linux  192.168.187.128

一般情况下搭建主从复制的mysql服务器,要求是服务器系统和数据版本系统是一致。

官方要求,最起码是数据库版本的大版本一致。

查看mysql的版本号

mysql > select version();

Mysql优化三(读写分离、主从复制)_第12张图片

主服务器配置

①开启日志文件,并查看主服务器id

Mysql优化三(读写分离、主从复制)_第13张图片

②增加同步用户

mysql > grant replication slave on *.* to 'slave'@'%' identified by '123456';

mysql > flush privileges;

Mysql优化三(读写分离、主从复制)_第14张图片

 

③查看记录状态

mysql > show master status;

Mysql优化三(读写分离、主从复制)_第15张图片

从服务器配置

①修改my.cnf配置文件

Mysql优化三(读写分离、主从复制)_第16张图片

②重启mysql

[root@localhost ~]#service mysqld start --启动mysql 或者 /etc/init.d/mysqld start (关闭mysql #service mysql stop)

③登录mysql,停止从服务器的同步服务

mysql > slave stop;

Mysql优化三(读写分离、主从复制)_第17张图片

 

④在从服务器,指定主服务器的位置,用户名,密码,日志文件,记录位置

语法:

change master to master_host=”主服务器的ip地址”,master_user=”授权同步用户的名称”,master_password=”授权同步用户的密码”,master_log_file=”二进制日志文件的名称”,master_log_pos=记录的pos位置;

mysql >change master to master_host='192.168.1.104',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=1039;

⑤重新启动从服务器

⑥查看主从同步是否成功

Mysql优化三(读写分离、主从复制)_第18张图片

Mysql优化三(读写分离、主从复制)_第19张图片

在配置当中会存在,不能够同步的请情况,要从以下几个方法方面查看

  1. 确定指向的ip地址、日志文件、日志位置等信息是正确的
  2. 主服务器(win)防火墙的,测试中可以关闭防火墙
  3. 如果之前配置没有成功,下次从第④步开始配置

 读写分离

php脚本实现

①传统的php脚本  mysql_connect()  mysqli

创建两个mysql的连接,写用一个连接,读另外一个连接

封装一个类,建立两个连接,执行语句的方法,判断是什么操作,进行对应数据库的连接。

列如:

语句里包含select 字符串,就是一个读操作,就连接从数据库(读取数据)

其他语句到主服务器操作(写数据)

thinkphp5框架配置

②很多框架已经支持分布式部署数据库,可以使用tp的分布式数据库连接,进行读写分离测试。

文档说明

Mysql优化三(读写分离、主从复制)_第20张图片

配置选项

Mysql优化三(读写分离、主从复制)_第21张图片

建立一个数据表

CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL COMMENT '姓名',
  `job` varchar(64) DEFAULT NULL COMMENT '工作',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8;

代码实现

Mysql优化三(读写分离、主从复制)_第22张图片

Mysql优化三(读写分离、主从复制)_第23张图片

Mysql优化三(读写分离、主从复制)_第24张图片

你可能感兴趣的:(mysql)