Linux服务篇之八:源码构建MySQL主从架构

Linux服务篇之八:源码构建MySQL主从架构

一、编译安装mysql-5.5.44

系统版本:CentOS6.5

MySQL版本:mysql-5.5.44

步骤:

1、安装所需要系统库相关库文件

yum install -y gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool*

 

2、安装cmake
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。
因此,我们首先要在系统中源码编译安装cmake工具。

tar zxvf cmake-2.8.7.tar.gz

cd cmake-2.8.7

./bootstrap

gmake

gmake install

3、创建mysql安装目录  
mkdir -p /usr/local/mysql/

 

4、 创建数据存放目录
mkdir -p /data/mysqldata/

5、 创建用户和用户组与赋予数据存放目录权限
groupadd mysql
useradd -g mysql mysql
chown mysql.mysql -R /data/mysqldata/

chmod +w /usr/local/mysql/

chown -R mysql.mysql /usr/local

mkdir -p /var/mysql/log/

wKioL1XYfszB1Oz9AAGbSM592ZY288.jpg

 

6、编译安装mysql 5.5.44
tar -zxvf mysql-5.5.44.tar.gz
cd mysql-5.5.44

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysqldata -DMYSQL_USER=mysql;echo $?

wKioL1XYebiTQRiGAAGmkbumcuQ537.jpg

make && make install ;echo $?

wKiom1XYesPSRrBpAAPWWW-xEgY055.jpg

 

7、配置数据库

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

cd support-files/

cp my-medium.cnf /etc/my.cnf

cp mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysql 

wKioL1XYgMTD0LePAAE46zn1uu8873.jpg

 

8、初始化安装数据库

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=mysql

wKioL1XYgPvROktJAAGQ3Ky15Ic231.jpg

 

10、vi /etc/init.d/mysqld  添加以下内容

basedir=/usr/local/mysql  

datadir=/data/mysqldata

wKioL1XYgffCCsC0AAGPEri686w259.jpg 

 

11、启动数据库

chkconfig --add mysqld 
chkconfig --level 
345 mysqld on

cd /usr/local/mysql

/etc/init.d/msyqld start

wKiom1XYgzWgIYKAAADqa1A4Rqw144.jpg

 

12、进入数据库

/usr/local/mysql/bin/mysql -uroot mysql

wKioL1XYhZaiS5mCAAJHlv3yl1g000.jpg


二、安装LAP服务

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

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

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

ps -ef |grep http

netstat -ntl

2、创建一个测试页面

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

vi index.php

输入一下内容:

<?php

phpinfo();

?>

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

3、apahche和php整合

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

wKioL1XZIwuD-LWbAACqfxDuq3Y516.jpg

 

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

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

插入之前的/etc/httpd/conf/httpd.conf配置文件内容没有php.conf!

5、重启apache服务,出现一个警告:php这个模块已经在2个目录中被加载了!需要清理一个,移动到临时目录中:mv  /etc/httpd/conf.d/php.conf /tmp/

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

 

三、配置Discuz论坛数据库

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

wKiom1XZKETTBqq1AAF1cO-AeiI833.jpg

 

四、MySQL主从复制
试验环境:
主数据库服务器:192.168.174.17,MySQL已经安装。
从数据库服务器:192.168.174.18,MySQL已经安装。

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

mkdir �Cp /data/mysqldata

chown �CR mysql.mysql /data/mysqldata

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.174.18' identified by "123";

再执行show master status;

wKioL1XZNrzDG7wzAAJx3Xa8xv8000.jpg

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

change master to master_host='192.168.174.17',master_user='tongbu',master_password='123',master_log_file='mysql-bin.000004',master_log_pos=803;

wKioL1XZN2LzIFY6AACjUF9Bivg514.jpg

7、在slave启动

slave start;

并执行show slave status\G查看Mysql主从状态:

Slave_IO_Running: Yes

Slave_SQL_Running:Yes

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

wKiom1XZOaTBSMg5AAHlxI4I01E838.jpg

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

wKiom1XZOoGzg1UFAAFAAc9QiSc407.jpg

查看到数据库Discuz的表的内容,

wKioL1XZfoLwVTbVAAKyflWc-Pg743.jpg

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

wKiom1XZOj3jrrIjAACevZScIW0909.jpg

 

五、搭建Discuz论坛网站

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

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

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

wKioL1XZREDDHQ5FAAJX8tZwtJ8088.jpg

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

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

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



wKiom1XZR1-AviCdAAHAcqwttpk314.jpg

wKioL1XZSdqhbSBrAAXqOQiCp6k354.jpg


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

1、关闭主数据库,网站立刻报数据库出错!

wKiom1XZSFfTbtAGAACJSxsVRkQ432.jpg

wKiom1XZSI7hgccVAATHMmxcl0M320.jpg

2、修改apache的Discuz论坛的的配置文件:为slave的ip!

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

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

wKiom1XZe8XRlIruAABmi9IC3DA683.jpg

4、重启LAP、MYSQL服务!

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

wKioL1XZfxDTWyT8AANvXgCQKT8421.jpg

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

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