Linux服务篇之七:YUM构建MySQL主从架构

Linux服务篇之七:YUM构建MySQL主从架构

一、MySQL引擎了解

MyISAM引擎

默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select, MyISAM比较适合。

InnoDB引擎

支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。Innodb最初是由innobase Oy公司开发,2005年10月由oracle公司并购,目前innodb采用双授权,一个是GPL授权,一个是商业授权。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

总体来说:

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。

基本的差别为:

1、MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持

2、MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

3、MyISAM合:(1)做很多count计算;(2)插入不频繁,查询非常频繁;(3)没事务

4、InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况

查看数据库引擎

一般情况下,MySQL会默认提供多种存储引擎,可以通过下面的查看:

1、查看MySQL现在已提供什么存储引擎: mysql> show engines

wKioL1WifaviYMfxAAPA1XUvAFI200.jpg

2、查看MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%'

wKiom1WiiYSDcCWXAAHt60N6KMg335.jpg

3、查看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;

wKioL1Wkuo7TiQXyAARPn0HuFM8869.jpg

4、修改MySQL表空间引擎

设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB然后重启mysqld服务即可。

可以修改表引擎方法如下:

altertable t1 engine=myisam;  
alter table t1 engine=innodb;  

如果添加innodb引擎报错,需要执行如下命令:

删除/mysql/data目录下的ib_logfile0,ib_logfile1文件即可。



二、MYSQL主从原理

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司, 目前属于Oracle公司,MySQL被广泛地应用Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库

对应目前主流的LAMP架构来说,Mysql更是得到各位IT运维、DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始人已独立出来自己重新开发了一个MariaDB,而且使用的人数越来越多。而且MariaDB兼容mysql所有的功能和相关参数。

Mysql常用两大引擎:MyISAM和innoDB,他们有什么明显的区别呢,什么场合使用什么引擎呢?

1、MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,如果执行大量的SELECT操作,MyISAM是更好的选择,支持表锁。

2、InnoDB提供事务支持事务,外部键等高级数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。

       随着访问量的不断增加,Mysql数据库压力不断增加,需要对mysql进行优化和架构改造,可以使用高可用、主从复制、读写分离来、拆分库、拆分表进行优化。下面我们来学习MySQL主从复制高可用如何来实现。


实验环境:准备3台虚拟机,2台yum安装的mysql主从、1台yum安装的LAP;

一、安装LAP服务

1、这一条命令LAP环境即可安装成功,只需要重启apache服务即可:

yum  install httpd  httpd-devel   php  php-devel  php-mysql  -y

检查一下,服务端apache口已经启动好了!

wKioL1WmIQOTudXnAATPLBkAl0k289.jpg

2、创建一个测试页面

1、在apache的发布目录里面创建:/var/www/html

vi index.php

输入一下内容:

<?php

phpinfo();

?>

访问一下这个php的测试网站,出现这个页面,表示php的测试网站已经搭建成功!

wKiom1WmHunwOnc4AAT-Ze8tHtI550.jpg

3、apahche和php整合

查找一下Apache配置文件中:/etc/httpd/modules,是否有php模块:如果找到了,就证明apahche和php整合成功了!apache会自动加载php模块!

wKiom1WmH6_jQq0rAACEJemtu9s122.jpg

4、php.conf模块插入到httpd.conf的配置文件

cat /etc/httpd/conf.d/php.conf >>/etc/httpd/conf/httpd.conf

插入之前的/etc/httpd/conf/httpd.conf配置文件内容如下:

wKioL1WmIo3RoNJWAAVOpzq8HGg555.jpg

插入之后的/etc/httpd/conf/httpd.conf配置文件内容如下:

wKiom1WmINPjRfwBAAPZaYhaTgQ209.jpg

重启apache服务,出现一个警告:php这个模块已经在2个目录中被加载了!需要清理一个,移动到临时目录中,

wKiom1WmIWiyilR1AAGrNuKSDI8371.jpg

再次启动apache服务,测试页面照样可以打开!

wKioL1WmI5bhU1ZWAAT-Ze8tHtI074.jpg


二、安装MYSQL主服务器

1、一条命令即可:yum install mysql-server -y

只需要重启mysql服务即可,检查一下,服务端口已经启动好了!

wKioL1WmJEuiQsfeAAUlLg0i-mg662.jpg

2、新建数据库Discuz,用于存放Discuz论坛数据,并授权用户,

wKioL1WmJw6hQBlZAANR4ggyymo988.jpg


三、配置MYSQL的主、从架构

1、在两台MYSQL服务器上分别创建存放数据的目录,并且授予权限:

mkdir �Cp /mydata/data

chown �CR mysql.mysql /mydata/data

2、在Master修改vi  /etc/my.cnf内容为如下:

[mysqld]

datadir=/mydata/data

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links isrecommended to prevent assorted security risks

symbolic-links=0

log-bin=mysql-bin

server-id=1

auto_increment_offset=1

auto_increment_increment=2

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

replicate-do-db=all

3、配置msql从,编辑/etc/my.cnf,

[mysqld]

datadir=/mydata/data

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links isrecommended to prevent assorted security risks

symbolic-links=0

server-id=2

auto_increment_offset=2

auto_increment_increment=2

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid
4、启动mysql,并进入数据库,默认已经初始化过数据库,

5、在 master主上设置权限:

grant replication slave on *.* to tongbu@'192.168.137.11' identified by "123456";

再执行:show matser status

wKioL1Wmcl2AozNUAALTKW80TY4712.jpg

6、在从服务器上设置指定master ip 和pos点

wKioL1Wmc8zga_tKAAIgT63GJNY140.jpg

7、在slave启动slave start,并执行show slave status\G查看Mysql主从状态:

Slave_IO_Running: Yes

Slave_SQL_Running:Yes

两个状态为YES,代表:slave已经启动两个线程,一个为IO线程,一个为SQL线程!

wKiom1WmcwrgGZmFAATDQcuaAvM603.jpg

8、然后在Master服务器创建一个数据库和表,

wKioL1WmdiDzyEGbAAIcOZEtDnM655.jpg

然后查看从是否同步:主从之间数据同步成功!

wKiom1WmdEbh7zszAAHsOQ7uIpE755.jpg



四、搭建Discuz论坛网站

搭建LAMP,需要让PHP与Apache整合,就是把PHP模块整合到Apache配置文件中去!

php的网站刚刚搭建完成,其他的设置都没有!

1、下载一个软件包,解压到指定的aphache发布目录,

wKiom1WmJwnh1TMQAAI2_E98D3c986.jpg

2、赋予discuz目录完全访问权限,

chmod -R 777 data/  uc_server/  config/  uc_client/ 

3、进入Discuz论坛安装,完成向导安装。

wKioL1WmNpjxqCxtAAS-9Q2uUn0500.jpg

wKiom1WmNL-wV42fAAK6-yVoCF0302.jpg

wKioL1WmNpmCwXAWAALORfj0Rk4014.jpg

wKioL1WmNpnw6HUJAAKWCC1uGPE368.jpg

wKiom1WmNL_hNpOVAAMQUYmXzfI819.jpg

wKioL1WmNprD4DInAASWC3GwJLw015.jpg



五、模拟故障,测试MYSQL主、从数据库之间的切换

1、关闭主数据库,网站立刻报数据库出错!wKioL1Wme9-TAyAoAAQ7FTaFtxE934.jpg

2、修改apache的Discuz论坛的的配置文件:

vi /var/www/html/config/config_ucenter.php

vi /var/www/html/config/config_global.php

vi /var/www/html/uc_server/data/config.inc.php

wKioL1WmflWTt5nJAANBzhUP-BM175.jpg

3、在slave上授权LAP访问Discuz数据库:

wKiom1XZe8XRlIruAABmi9IC3DA683.jpg

4、重启LAP、MYSQL服务!

5、打开Discuz首页,完成主从数据库的切换!Discuz论坛首页重现!

wKioL1WmfoihtcR6AAP-yHfqXHc881.jpg

4、维修好主MYSQL服务器,再次进行切换:

修改一下配置文件:

vi  /var/www/html/conf/conf_ucenter.php

vi /var/www/html/uc_server/data/config.inc.php

vi /var/www/html/conf/config_global.php

并重启apache、mysql服务!

5、Discuz论坛重现!

wKiom1WnF_uxGiNPAAP-yHfqXHc611.jpg

本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!

你可能感兴趣的:(Linux服务篇之七:YUM构建MySQL主从架构)